<refentry id="vidioc-dv-timings-cap">
  <refmeta>
    <refentrytitle>ioctl VIDIOC_DV_TIMINGS_CAP, VIDIOC_SUBDEV_DV_TIMINGS_CAP</refentrytitle>
    &manvol;
  </refmeta>

  <refnamediv>
    <refname>VIDIOC_DV_TIMINGS_CAP</refname>
    <refname>VIDIOC_SUBDEV_DV_TIMINGS_CAP</refname>
    <refpurpose>The capabilities of the Digital Video receiver/transmitter</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcprototype>
	<funcdef>int <function>ioctl</function></funcdef>
	<paramdef>int <parameter>fd</parameter></paramdef>
	<paramdef>int <parameter>request</parameter></paramdef>
	<paramdef>struct v4l2_dv_timings_cap *<parameter>argp</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Arguments</title>

    <variablelist>
      <varlistentry>
	<term><parameter>fd</parameter></term>
	<listitem>
	  <para>&fd;</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>request</parameter></term>
	<listitem>
	  <para>VIDIOC_DV_TIMINGS_CAP, VIDIOC_SUBDEV_DV_TIMINGS_CAP</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>argp</parameter></term>
	<listitem>
	  <para></para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Description</title>

    <para>To query the capabilities of the DV receiver/transmitter applications initialize the
<structfield>pad</structfield> field to 0, zero the reserved array of &v4l2-dv-timings-cap;
and call the <constant>VIDIOC_DV_TIMINGS_CAP</constant> ioctl on a video node
and the driver will fill in the structure. Note that drivers may return
different values after switching the video input or output.</para>

    <para>When implemented by the driver DV capabilities of subdevices can be
queried by calling the <constant>VIDIOC_SUBDEV_DV_TIMINGS_CAP</constant> ioctl
directly on a subdevice node. The capabilities are specific to inputs (for DV
receivers) or outputs (for DV transmitters), applications must specify the
desired pad number in the &v4l2-dv-timings-cap; <structfield>pad</structfield>
field and zero the <structfield>reserved</structfield> array. Attempts to query
capabilities on a pad that doesn't support them will return an &EINVAL;.</para>

    <table pgwide="1" frame="none" id="v4l2-bt-timings-cap">
      <title>struct <structname>v4l2_bt_timings_cap</structname></title>
      <tgroup cols="3">
	&cs-str;
	<tbody valign="top">
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>min_width</structfield></entry>
	    <entry>Minimum width of the active video in pixels.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>max_width</structfield></entry>
	    <entry>Maximum width of the active video in pixels.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>min_height</structfield></entry>
	    <entry>Minimum height of the active video in lines.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>max_height</structfield></entry>
	    <entry>Maximum height of the active video in lines.</entry>
	  </row>
	  <row>
	    <entry>__u64</entry>
	    <entry><structfield>min_pixelclock</structfield></entry>
	    <entry>Minimum pixelclock frequency in Hz.</entry>
	  </row>
	  <row>
	    <entry>__u64</entry>
	    <entry><structfield>max_pixelclock</structfield></entry>
	    <entry>Maximum pixelclock frequency in Hz.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>standards</structfield></entry>
	    <entry>The video standard(s) supported by the hardware.
	    See <xref linkend="dv-bt-standards"/> for a list of standards.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>capabilities</structfield></entry>
	    <entry>Several flags giving more information about the capabilities.
	    See <xref linkend="dv-bt-cap-capabilities"/> for a description of the flags.
	    </entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>reserved</structfield>[16]</entry>
	    <entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="none" id="v4l2-dv-timings-cap">
      <title>struct <structname>v4l2_dv_timings_cap</structname></title>
      <tgroup cols="4">
	&cs-str;
	<tbody valign="top">
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>type</structfield></entry>
	    <entry>Type of DV timings as listed in <xref linkend="dv-timing-types"/>.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>pad</structfield></entry>
	    <entry>Pad number as reported by the media controller API. This field
	    is only used when operating on a subdevice node. When operating on a
	    video node applications must set this field to zero.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>reserved</structfield>[2]</entry>
	    <entry>Reserved for future extensions. Drivers and applications must
	    set the array to zero.</entry>
	  </row>
	  <row>
	    <entry>union</entry>
	    <entry><structfield></structfield></entry>
	    <entry></entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry>&v4l2-bt-timings-cap;</entry>
	    <entry><structfield>bt</structfield></entry>
	    <entry>BT.656/1120 timings capabilities of the hardware.</entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry>__u32</entry>
	    <entry><structfield>raw_data</structfield>[32]</entry>
	    <entry></entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="none" id="dv-bt-cap-capabilities">
      <title>DV BT Timing capabilities</title>
      <tgroup cols="2">
	&cs-str;
	<tbody valign="top">
	  <row>
	    <entry>Flag</entry>
	    <entry>Description</entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry></entry>
	  </row>
	  <row>
	    <entry>V4L2_DV_BT_CAP_INTERLACED</entry>
	    <entry>Interlaced formats are supported.
	    </entry>
	  </row>
	  <row>
	    <entry>V4L2_DV_BT_CAP_PROGRESSIVE</entry>
	    <entry>Progressive formats are supported.
	    </entry>
	  </row>
	  <row>
	    <entry>V4L2_DV_BT_CAP_REDUCED_BLANKING</entry>
	    <entry>CVT/GTF specific: the timings can make use of reduced blanking (CVT)
or the 'Secondary GTF' curve (GTF).
	    </entry>
	  </row>
	  <row>
	    <entry>V4L2_DV_BT_CAP_CUSTOM</entry>
	    <entry>Can support non-standard timings, i.e. timings not belonging to the
standards set in the <structfield>standards</structfield> field.
	    </entry>
	  </row>
	</tbody>
      </tgroup>
    </table>
  </refsect1>

  <refsect1>
    &return-value;
  </refsect1>
</refentry>
