FW: [PATCH - v1] V4L - Digital Video Timings API documentation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hans,

I have updated the API documentation based on your comments and the updated
patch is sent to the list. So could you please send a pull request to Mauro for the video timing API patch along with this documentation patch? If there are any minor issues, I would prefer to fix it by another patch than re-working this again.

Regards,
Murali Karicheri
Software Design Engineer
Texas Instruments Inc.
Germantown, MD 20874
phone: 301-407-9583
email: m-karicheri2@xxxxxx
>-----Original Message-----
>From: Karicheri, Muralidharan
>Sent: Wednesday, December 02, 2009 5:56 PM
>To: linux-media@xxxxxxxxxxxxxxx; hverkuil@xxxxxxxxx
>Cc: davinci-linux-open-source@xxxxxxxxxxxxxxxxxxxx; Karicheri, Muralidharan
>Subject: [PATCH - v1] V4L - Digital Video Timings API documentation
>
>From: Muralidharan Karicheri <m-karicheri2@xxxxxx>
>
>This patch updates the v4l2-dvb documentation for the new video timings API
>added.
>Also updated the document based on comments from Hans Verkuil
>
>Reviewed-by: Hans Verkuil <hverkuil@xxxxxxxxx>
>Signed-off-by: Muralidharan Karicheri <m-karicheri2@xxxxxx>
>---
>diff -uNr v4l-dvb-
>e0cd9a337600_master/linux/Documentation/DocBook/v4l/common.xml v4l-dvb-
>patch/linux/Documentation/DocBook/v4l/common.xml
>--- v4l-dvb-e0cd9a337600_master/linux/Documentation/DocBook/v4l/common.xml
>       2009-12-01 17:02:04.000000000 -0500
>+++ v4l-dvb-patch/linux/Documentation/DocBook/v4l/common.xml   2009-12-
>02 17:16:24.000000000 -0500
>@@ -716,6 +716,41 @@
> }
>       </programlisting>
>     </example>
>+  <section id="dv-timings">
>+      <title>Digital Video (DV) Timings</title>
>+      <para>
>+      The video standards discussed so far has been dealing with Analog TV
>and the
>+corresponding video timings. Today there are many more different hardware
>interfaces
>+such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc.,
>that carry
>+video signals and there is a need to extend the API to select the video
>timings
>+ for these interfaces. Since it is not possible to extend the v4l2-std-id
>due to
>+the limited bits available, a new set of IOCTLs are added to set/get video
>timings at
>+the input and output: </para><itemizedlist>
>+      <listitem>
>+      <para> DV Presets: Digital Video (DV) presets. These are IDs
>representing a
>+video timing at the input/output. Presets are pre-defined timings
>implemented
>+by the hardware according to video standards. A __u32 data type is used to
>represent
>+ a preset unlike the bit mask that is used in &v4l2-std-id; allowing
>future extensions
>+ to support many different presets as needed.</para>
>+      </listitem>
>+      <listitem>
>+      <para> Custom DV Timings: This will allow applications to define more
>detailed
>+custom video timings at the interface. This includes parameters such as
>width, height,
>+ polarities, frontporch, backporch etc.
>+      </para>
>+      </listitem>
>+      </itemizedlist>
>+      <para> To enumerate and query the attributes of DV presets supported
>by a device,
>+ applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current
>DV preset,
>+ application use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset it
>uses the
>+ &VIDIOC-S-DV-PRESET; ioctl.</para>
>+      <para> To set a Custom DV timings at the device, applications use the
>+ &VIDIOC-S-DV-TIMINGS; ioctl and to get current Custom DV timings, it uses
>the
>+ &VIDIOC-G-DV-TIMINGS; ioctl.</para>
>+      <para> Applications can make use of the <xref linkend="input-
>capabilities" /> and
>+<xref linkend="output-capabilities"/> flags to decide what ioctls are
>available to set the
>+video timings for the device.</para>
>+      </section>
>   </section>
>
>   &sub-controls;
>diff -uNr v4l-dvb-
>e0cd9a337600_master/linux/Documentation/DocBook/v4l/v4l2.xml v4l-dvb-
>patch/linux/Documentation/DocBook/v4l/v4l2.xml
>--- v4l-dvb-e0cd9a337600_master/linux/Documentation/DocBook/v4l/v4l2.xml
>       2009-12-01 17:02:04.000000000 -0500
>+++ v4l-dvb-patch/linux/Documentation/DocBook/v4l/v4l2.xml     2009-12-02
>17:16:50.000000000 -0500
>@@ -416,6 +416,10 @@
>     &sub-enum-frameintervals;
>     &sub-enuminput;
>     &sub-enumoutput;
>+    &sub-enum-dv-presets;
>+    &sub-g-dv-preset;
>+    &sub-query-dv-preset;
>+    &sub-g-dv-timings;
>     &sub-enumstd;
>     &sub-g-audio;
>     &sub-g-audioout;
>diff -uNr v4l-dvb-
>e0cd9a337600_master/linux/Documentation/DocBook/v4l/videodev2.h.xml v4l-
>dvb-patch/linux/Documentation/DocBook/v4l/videodev2.h.xml
>--- v4l-dvb-
>e0cd9a337600_master/linux/Documentation/DocBook/v4l/videodev2.h.xml
>       2009-12-01 17:02:04.000000000 -0500
>+++ v4l-dvb-patch/linux/Documentation/DocBook/v4l/videodev2.h.xml      2009-12-
>02 17:44:24.000000000 -0500
>@@ -734,6 +734,99 @@
> };
>
> /*
>+ *      V I D E O       T I M I N G S   D V     P R E S E T
>+ */
>+struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link> {
>+        __u32   preset;
>+        __u32   reserved[4];
>+};
>+
>+/*
>+ *      D V     P R E S E T S   E N U M E R A T I O N
>+ */
>+struct <link linkend="v4l2-dv-enum-preset">v4l2_dv_enum_preset</link> {
>+        __u32   index;
>+        __u32   preset;
>+        __u8    name[32]; /* Name of the preset timing */
>+        __u32   width;
>+        __u32   height;
>+        __u32   reserved[4];
>+};
>+
>+/*
>+ *      D V     P R E S E T     V A L U E S
>+ */
>+#define         V4L2_DV_INVALID         0
>+#define         V4L2_DV_480P59_94       1 /* BT.1362 */
>+#define         V4L2_DV_576P50          2 /* BT.1362 */
>+#define         V4L2_DV_720P24          3 /* SMPTE 296M */
>+#define         V4L2_DV_720P25          4 /* SMPTE 296M */
>+#define         V4L2_DV_720P30          5 /* SMPTE 296M */
>+#define         V4L2_DV_720P50          6 /* SMPTE 296M */
>+#define         V4L2_DV_720P59_94       7 /* SMPTE 274M */
>+#define         V4L2_DV_720P60          8 /* SMPTE 274M/296M */
>+#define         V4L2_DV_1080I29_97      9 /* BT.1120/ SMPTE 274M */
>+#define         V4L2_DV_1080I30         10 /* BT.1120/ SMPTE 274M */
>+#define         V4L2_DV_1080I25         11 /* BT.1120 */
>+#define         V4L2_DV_1080I50         12 /* SMPTE 296M */
>+#define         V4L2_DV_1080I60         13 /* SMPTE 296M */
>+#define         V4L2_DV_1080P24         14 /* SMPTE 296M */
>+#define         V4L2_DV_1080P25         15 /* SMPTE 296M */
>+#define         V4L2_DV_1080P30         16 /* SMPTE 296M */
>+#define         V4L2_DV_1080P50         17 /* BT.1120 */
>+#define         V4L2_DV_1080P60         18 /* BT.1120 */
>+
>+/*
>+ *      D V     B T     T I M I N G S
>+ */
>+
>+/* BT.656/BT.1120 timing data */
>+struct <link linkend="v4l2-bt-timings">v4l2_bt_timings</link> {
>+        __u32   width;          /* width in pixels */
>+        __u32   height;         /* height in lines */
>+        __u32   interlaced;     /* Interlaced or progressive */
>+        __u32   polarities;     /* Positive or negative polarity */
>+        __u64   pixelclock;     /* Pixel clock in HZ. Ex. 74.25MHz-
>&gt;74250000 */
>+        __u32   hfrontporch;    /* Horizpontal front porch in pixels */
>+        __u32   hsync;          /* Horizontal Sync length in pixels */
>+        __u32   hbackporch;     /* Horizontal back porch in pixels */
>+        __u32   vfrontporch;    /* Vertical front porch in pixels */
>+        __u32   vsync;          /* Vertical Sync length in lines */
>+        __u32   vbackporch;     /* Vertical back porch in lines */
>+        __u32   il_vfrontporch; /* Vertical front porch for bottom field
>of
>+                                 * interlaced field formats
>+                                 */
>+        __u32   il_vsync;       /* Vertical sync length for bottom field
>of
>+                                 * interlaced field formats
>+                                 */
>+        __u32   il_vbackporch;  /* Vertical back porch for bottom field of
>+                                 * interlaced field formats
>+                                 */
>+        __u32   reserved[16];
>+} __attribute__ ((packed));
>+
>+/* Interlaced or progressive format */
>+#define V4L2_DV_PROGRESSIVE     0
>+#define V4L2_DV_INTERLACED      1
>+
>+/* Polarities. If bit is not set, it is assumed to be negative polarity */
>+#define V4L2_DV_VSYNC_POS_POL   0x00000001
>+#define V4L2_DV_HSYNC_POS_POL   0x00000002
>+
>+
>+/* DV timings */
>+struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link> {
>+        __u32 type;
>+        union {
>+                struct <link linkend="v4l2-bt-
>timings">v4l2_bt_timings</link>  bt;
>+                __u32   reserved[32];
>+        };
>+} __attribute__ ((packed));
>+
>+/* Values for the type field */
>+#define V4L2_DV_BT_656_1120     0       /* BT.656/1120 timing type */
>+
>+/*
>  *      V I D E O   I N P U T S
>  */
> struct <link linkend="v4l2-input">v4l2_input</link> {
>@@ -744,7 +837,8 @@
>         __u32        tuner;             /*  Associated tuner */
>         v4l2_std_id  std;
>         __u32        status;
>-        __u32        reserved[4];
>+        __u32        capabilities;
>+        __u32        reserved[3];
> };
>
> /*  Values for the 'type' field */
>@@ -775,6 +869,11 @@
> #define V4L2_IN_ST_NO_ACCESS   0x02000000  /* Conditional access denied */
> #define V4L2_IN_ST_VTR         0x04000000  /* VTR time constant */
>
>+/* capabilities flags */
>+#define V4L2_IN_CAP_PRESETS             0x00000001 /* Supports S_DV_PRESET
>*/
>+#define V4L2_IN_CAP_CUSTOM_TIMINGS      0x00000002 /* Supports
>S_DV_TIMINGS */
>+#define V4L2_IN_CAP_STD                 0x00000004 /* Supports S_STD */
>+
> /*
>  *      V I D E O   O U T P U T S
>  */
>@@ -785,13 +884,19 @@
>         __u32        audioset;          /*  Associated audios (bitfield)
>*/
>         __u32        modulator;         /*  Associated modulator */
>         v4l2_std_id  std;
>-        __u32        reserved[4];
>+        __u32        capabilities;
>+        __u32        reserved[3];
> };
> /*  Values for the 'type' field */
> #define V4L2_OUTPUT_TYPE_MODULATOR              1
> #define V4L2_OUTPUT_TYPE_ANALOG                 2
> #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY       3
>
>+/* capabilities flags */
>+#define V4L2_OUT_CAP_PRESETS            0x00000001 /* Supports S_DV_PRESET
>*/
>+#define V4L2_OUT_CAP_CUSTOM_TIMINGS     0x00000002 /* Supports
>S_DV_TIMINGS */
>+#define V4L2_OUT_CAP_STD                0x00000004 /* Supports S_STD */
>+
> /*
>  *      C O N T R O L S
>  */
>@@ -1626,6 +1731,13 @@
> #endif
>
> #define VIDIOC_S_HW_FREQ_SEEK    _IOW('V', 82, struct <link linkend="v4l2-
>hw-freq-seek">v4l2_hw_freq_seek</link>)
>+#define VIDIOC_ENUM_DV_PRESETS  _IOWR('V', 83, struct <link linkend="v4l2-
>dv-enum-preset">v4l2_dv_enum_preset</link>)
>+#define VIDIOC_S_DV_PRESET      _IOWR('V', 84, struct <link linkend="v4l2-
>dv-preset">v4l2_dv_preset</link>)
>+#define VIDIOC_G_DV_PRESET      _IOWR('V', 85, struct <link linkend="v4l2-
>dv-preset">v4l2_dv_preset</link>)
>+#define VIDIOC_QUERY_DV_PRESET  _IOR('V',  86, struct <link linkend="v4l2-
>dv-preset">v4l2_dv_preset</link>)
>+#define VIDIOC_S_DV_TIMINGS     _IOWR('V', 87, struct <link linkend="v4l2-
>dv-timings">v4l2_dv_timings</link>)
>+#define VIDIOC_G_DV_TIMINGS     _IOWR('V', 88, struct <link linkend="v4l2-
>dv-timings">v4l2_dv_timings</link>)
>+
> /* Reminder: when adding new ioctls please add support for them to
>    drivers/media/video/v4l2-compat-ioctl32.c as well! */
>
>diff -uNr v4l-dvb-
>e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-enum-dv-
>presets.xml v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-enum-dv-
>presets.xml
>--- v4l-dvb-e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-
>enum-dv-presets.xml    1969-12-31 19:00:00.000000000 -0500
>+++ v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-enum-dv-
>presets.xml    2009-12-02 17:17:45.000000000 -0500
>@@ -0,0 +1,238 @@
>+<refentry id="vidioc-enum-dv-presets">
>+  <refmeta>
>+    <refentrytitle>ioctl VIDIOC_ENUM_DV_PRESETS</refentrytitle>
>+    &manvol;
>+  </refmeta>
>+
>+  <refnamediv>
>+    <refname>VIDIOC_ENUM_DV_PRESETS</refname>
>+    <refpurpose>Enumerate supported Digital Video Presets</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_enum_preset
>*<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_ENUM_DV_PRESETS</para>
>+      </listitem>
>+      </varlistentry>
>+      <varlistentry>
>+      <term><parameter>argp</parameter></term>
>+      <listitem>
>+        <para></para>
>+      </listitem>
>+      </varlistentry>
>+    </variablelist>
>+  </refsect1>
>+
>+  <refsect1>
>+    <title>Description</title>
>+
>+    <para>To query the attributes of a DV preset, applications initialize
>the
>+<structfield>index</structfield> field and zero the reserved array of
>&v4l2-dv-enum-preset;
>+ and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a
>pointer to this
>+structure. Drivers fill the rest of the structure or return an
>+&EINVAL; when the index is out of bounds. To enumerate all DV Presets
>supported,
>+applications shall begin  at index zero, incrementing by one until the
>+driver returns <errorcode>EINVAL</errorcode>. Drivers may enumerate a
>+different set of DV Presets after switching the video input or
>+output.</para>
>+
>+    <table pgwide="1" frame="none" id="v4l2-dv-enum-preset">
>+      <title>struct <structname>v4l2_dv_enum_presets</structname></title>
>+      <tgroup cols="3">
>+      &cs-str;
>+      <tbody valign="top">
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>index</structfield></entry>
>+          <entry>Number of the DV preset, set by the
>+application.</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>preset</structfield></entry>
>+          <entry>This field identify one of the DV Preset value listed in
><xref linkend="v4l2-dv-presets-vals"/>.</entry>
>+        </row>
>+        <row>
>+          <entry>__u8</entry>
>+          <entry><structfield>name</structfield>[24]</entry>
>+          <entry>Name of the preset, a NULL-terminated ASCII string, for
>example: "720P-60", "1080I-60". This information is
>+intended for the user.</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>width</structfield></entry>
>+          <entry>Width of active video in pixels for the DV preset.</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>height</structfield></entry>
>+          <entry>Height of active video in lines for the DV preset.</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>reserved</structfield>[4]</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-presets-vals">
>+      <title>struct <structname>DV Presets</structname></title>
>+      <tgroup cols="3">
>+      &cs-str;
>+      <tbody valign="top">
>+        <row>
>+          <entry>Preset</entry>
>+          <entry>Preset value</entry>
>+          <entry>Description</entry>
>+        </row>
>+        <row>
>+          <entry></entry>
>+          <entry></entry>
>+          <entry></entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_INVALID</entry>
>+          <entry>0</entry>
>+          <entry>Invalid Preset value.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_480P59_94</entry>
>+          <entry>1</entry>
>+          <entry>720x480 progressive video at 59.94 fps as per
>BT.1362.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_576P50</entry>
>+          <entry>2</entry>
>+          <entry>720x576 progressive video at 50 fps as per
>BT.1362.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_720P24</entry>
>+          <entry>3</entry>
>+          <entry>1280x720 progressive video at 24 fps as per SMPTE
>296M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_720P25</entry>
>+          <entry>4</entry>
>+          <entry>1280x720 progressive video at 25 fps as per SMPTE
>296M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_720P30</entry>
>+          <entry>5</entry>
>+          <entry>1280x720 progressive video at 30 fps as per SMPTE
>296M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_720P50</entry>
>+          <entry>6</entry>
>+          <entry>1280x720 progressive video at 50 fps as per SMPTE
>296M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_720P59_94</entry>
>+          <entry>7</entry>
>+          <entry>1280x720 progressive video at 59.94 fps as per SMPTE
>274M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_720P60</entry>
>+          <entry>8</entry>
>+          <entry>1280x720 progressive video at 60 fps as per SMPTE
>274M/296M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_1080I29_97</entry>
>+          <entry>9</entry>
>+          <entry>1920x1080 interlaced video at 29.97 fps as per
>BT.1120/SMPTE 274M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_1080I30</entry>
>+          <entry>10</entry>
>+          <entry>1920x1080 interlaced video at 30 fps as per BT.1120/SMPTE
>274M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_1080I25</entry>
>+          <entry>11</entry>
>+          <entry>1920x1080 interlaced video at 25 fps as per
>BT.1120.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_1080I50</entry>
>+          <entry>12</entry>
>+          <entry>1920x1080 interlaced video at 50 fps as per SMPTE
>296M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_1080I60</entry>
>+          <entry>13</entry>
>+          <entry>1920x1080 interlaced video at 60 fps as per SMPTE
>296M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_1080P24</entry>
>+          <entry>14</entry>
>+          <entry>1920x1080 progressive video at 24 fps as per SMPTE
>296M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_1080P25</entry>
>+          <entry>15</entry>
>+          <entry>1920x1080 progressive video at 25 fps as per SMPTE
>296M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_1080P30</entry>
>+          <entry>16</entry>
>+          <entry>1920x1080 progressive video at 30 fps as per SMPTE
>296M.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_1080P50</entry>
>+          <entry>17</entry>
>+          <entry>1920x1080 progressive video at 50 fps as per
>BT.1120.</entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_1080P60</entry>
>+          <entry>18</entry>
>+          <entry>1920x1080 progressive video at 60 fps as per
>BT.1120.</entry>
>+        </row>
>+      </tbody>
>+      </tgroup>
>+    </table>
>+  </refsect1>
>+
>+  <refsect1>
>+    &return-value;
>+
>+    <variablelist>
>+      <varlistentry>
>+      <term><errorcode>EINVAL</errorcode></term>
>+      <listitem>
>+        <para>The &v4l2-dv-enum-preset; <structfield>index</structfield>
>+is out of bounds.</para>
>+      </listitem>
>+      </varlistentry>
>+    </variablelist>
>+  </refsect1>
>+</refentry>
>+
>+<!--
>+Local Variables:
>+mode: sgml
>+sgml-parent-document: "v4l2.sgml"
>+indent-tabs-mode: nil
>+End:
>+-->
>diff -uNr v4l-dvb-
>e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-enuminput.xml
>v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-enuminput.xml
>--- v4l-dvb-e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-
>enuminput.xml  2009-12-01 17:02:04.000000000 -0500
>+++ v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-enuminput.xml
>       2009-12-02 17:18:11.000000000 -0500
>@@ -124,7 +124,13 @@
>         </row>
>         <row>
>           <entry>__u32</entry>
>-          <entry><structfield>reserved</structfield>[4]</entry>
>+          <entry><structfield>capabilities</structfield></entry>
>+          <entry>This field provides capabilities that exists at the
>+input.  See <xref linkend="input-capabilities" /> for flags. </entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>reserved</structfield>[3]</entry>
>           <entry>Reserved for future extensions. Drivers must set
> the array to zero.</entry>
>         </row>
>@@ -261,6 +267,34 @@
>       </tbody>
>       </tgroup>
>     </table>
>+
>+    <!-- Capabilities flags based on video timings RFC by Muralidharan
>+Karicheri, titled RFC (v1.2): V4L - Support for video timings at the
>+input/output interface to linux-media@xxxxxxxxxxxxxxx on 19 Oct 2009.
>+      -->
>+    <table frame="none" pgwide="1" id="input-capabilities">
>+      <title>Input capabilities</title>
>+      <tgroup cols="3">
>+      &cs-def;
>+      <tbody valign="top">
>+        <row>
>+          <entry><constant>V4L2_IN_CAP_PRESETS</constant></entry>
>+          <entry>0x00000001</entry>
>+          <entry>This input supports setting DV PRESET using
>VIDIOC_S_DV_PRESET</entry>
>+        </row>
>+        <row>
>+          <entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry>
>+          <entry>0x00000002</entry>
>+          <entry>This input supports setting Custom timings using
>VIDIOC_S_DV_TIMINGS</entry>
>+        </row>
>+        <row>
>+          <entry><constant>V4L2_IN_CAP_STD</constant></entry>
>+          <entry>0x00000004</entry>
>+          <entry>This input supports setting standard using
>VIDIOC_S_STD</entry>
>+        </row>
>+      </tbody>
>+      </tgroup>
>+    </table>
>   </refsect1>
>
>   <refsect1>
>diff -uNr v4l-dvb-
>e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-enumoutput.xml
>v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-enumoutput.xml
>--- v4l-dvb-e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-
>enumoutput.xml 2009-12-01 17:02:04.000000000 -0500
>+++ v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-enumoutput.xml
>       2009-12-02 17:18:18.000000000 -0500
>@@ -114,7 +114,13 @@
>         </row>
>         <row>
>           <entry>__u32</entry>
>-          <entry><structfield>reserved</structfield>[4]</entry>
>+          <entry><structfield>capabilities</structfield></entry>
>+          <entry>This field provides capabilities that exists at the
>+output.  See <xref linkend="output-capabilities" /> for flags. </entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>reserved</structfield>[3]</entry>
>           <entry>Reserved for future extensions. Drivers must set
> the array to zero.</entry>
>         </row>
>@@ -147,6 +153,34 @@
>       </tgroup>
>     </table>
>
>+    <!-- Capabilities flags based on video timings RFC by Muralidharan
>+Karicheri, titled RFC (v1.2): V4L - Support for video timings at the
>+input/output interface to linux-media@xxxxxxxxxxxxxxx on 19 Oct 2009.
>+      -->
>+    <table frame="none" pgwide="1" id="output-capabilities">
>+      <title>Output capabilities</title>
>+      <tgroup cols="3">
>+      &cs-def;
>+      <tbody valign="top">
>+        <row>
>+          <entry><constant>V4L2_OUT_CAP_PRESETS</constant></entry>
>+          <entry>0x00000001</entry>
>+          <entry>This output supports setting DV PRESET using
>VIDIOC_S_DV_PRESET</entry>
>+        </row>
>+        <row>
>+          <entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry>
>+          <entry>0x00000002</entry>
>+          <entry>This output supports setting Custom timings using
>VIDIOC_S_DV_TIMINGS</entry>
>+        </row>
>+        <row>
>+          <entry><constant>V4L2_OUT_CAP_STD</constant></entry>
>+          <entry>0x00000004</entry>
>+          <entry>This output supports setting standard using
>VIDIOC_S_STD</entry>
>+        </row>
>+      </tbody>
>+      </tgroup>
>+    </table>
>+
>   </refsect1>
>   <refsect1>
>     &return-value;
>diff -uNr v4l-dvb-
>e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml
>v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml
>--- v4l-dvb-e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-g-
>dv-preset.xml  1969-12-31 19:00:00.000000000 -0500
>+++ v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml
>       2009-12-02 17:18:57.000000000 -0500
>@@ -0,0 +1,111 @@
>+<refentry id="vidioc-g-dv-preset">
>+  <refmeta>
>+    <refentrytitle>ioctl VIDIOC_G_DV_PRESET,
>VIDIOC_S_DV_PRESET</refentrytitle>
>+    &manvol;
>+  </refmeta>
>+
>+  <refnamediv>
>+    <refname>VIDIOC_G_DV_PRESET</refname>
>+    <refname>VIDIOC_S_DV_PRESET</refname>
>+    <refpurpose>Query or select the DV preset of the current input or
>output</refpurpose>
>+  </refnamediv>
>+
>+  <refsynopsisdiv>
>+    <funcsynopsis>
>+      <funcprototype>
>+      <funcdef>int <function>ioctl</function></funcdef>
>+      <paramdef>int <parameter>fd</parameter></paramdef>
>+      <paramdef>int <parameter>request</parameter></paramdef>
>+      <paramdef>&v4l2-dv-preset;
>+*<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_G_DV_PRESET, VIDIOC_S_DV_PRESET</para>
>+      </listitem>
>+      </varlistentry>
>+      <varlistentry>
>+      <term><parameter>argp</parameter></term>
>+      <listitem>
>+        <para></para>
>+      </listitem>
>+      </varlistentry>
>+    </variablelist>
>+  </refsect1>
>+
>+  <refsect1>
>+    <title>Description</title>
>+    <para>To query and select the current DV preset, applications
>+use the <constant>VIDIOC_G_DV_PRESET</constant> and
><constant>VIDIOC_S_DV_PRESET</constant>
>+ioctls which take a pointer to a &v4l2-dv-preset; type as argument.
>+ Application must zero the reserved array in &v4l2-dv-preset;.
>+<constant>VIDIOC_G_DV_PRESET</constant> returns a dv preset in the field
>+ <structfield>preset</structfield> of &v4l2-dv-preset;.</para>
>+
>+    <para><constant>VIDIOC_S_DV_PRESET</constant> accepts a pointer to a
>&v4l2-dv-preset;
>+that has the preset value to be set. Application must zero the reserved
>array in &v4l2-dv-preset;.
>+If the preset is not supported, it returns an &EINVAL; </para>
>+  </refsect1>
>+
>+  <refsect1>
>+    &return-value;
>+
>+    <variablelist>
>+      <varlistentry>
>+      <term><errorcode>EINVAL</errorcode></term>
>+      <listitem>
>+        <para>This ioctl is not supported, or the
>+<constant>VIDIOC_S_DV_PRESET</constant>,<constant>VIDIOC_S_DV_PRESET</cons
>tant> parameter was unsuitable.</para>
>+      </listitem>
>+      </varlistentry>
>+      <varlistentry>
>+      <term><errorcode>EBUSY</errorcode></term>
>+      <listitem>
>+        <para>The device is busy and therefore can not change the
>preset</para>
>+      </listitem>
>+      </varlistentry>
>+    </variablelist>
>+
>+    <table pgwide="1" frame="none" id="v4l2-dv-preset">
>+      <title>struct <structname>v4l2_dv_preset</structname></title>
>+      <tgroup cols="3">
>+      &cs-str;
>+      <tbody valign="top">
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>preset</structfield></entry>
>+          <entry>preset value to represent the digital video
>timings</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>reserved[4]</structfield></entry>
>+          <entry>Reserved fields for future use</entry>
>+        </row>
>+      </tbody>
>+      </tgroup>
>+    </table>
>+
>+  </refsect1>
>+</refentry>
>+
>+<!--
>+Local Variables:
>+mode: sgml
>+sgml-parent-document: "v4l2.sgml"
>+indent-tabs-mode: nil
>+End:
>+-->
>diff -uNr v4l-dvb-
>e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml
>v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml
>--- v4l-dvb-e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-g-
>dv-timings.xml 1969-12-31 19:00:00.000000000 -0500
>+++ v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml
>       2009-12-02 17:24:11.000000000 -0500
>@@ -0,0 +1,224 @@
>+<refentry id="vidioc-g-dv-timings">
>+  <refmeta>
>+    <refentrytitle>ioctl VIDIOC_G_DV_TIMINGS,
>VIDIOC_S_DV_TIMINGS</refentrytitle>
>+    &manvol;
>+  </refmeta>
>+
>+  <refnamediv>
>+    <refname>VIDIOC_G_DV_TIMINGS</refname>
>+    <refname>VIDIOC_S_DV_TIMINGS</refname>
>+    <refpurpose>Get or Set Custom DV Timings at input or
>output</refpurpose>
>+  </refnamediv>
>+
>+  <refsynopsisdiv>
>+    <funcsynopsis>
>+      <funcprototype>
>+      <funcdef>int <function>ioctl</function></funcdef>
>+      <paramdef>int <parameter>fd</parameter></paramdef>
>+      <paramdef>int <parameter>request</parameter></paramdef>
>+      <paramdef>&v4l2-dv-timings;
>+*<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_G_DV_TIMINGS, VIDIOC_S_DV_TIMINGS</para>
>+      </listitem>
>+      </varlistentry>
>+      <varlistentry>
>+      <term><parameter>argp</parameter></term>
>+      <listitem>
>+        <para></para>
>+      </listitem>
>+      </varlistentry>
>+    </variablelist>
>+  </refsect1>
>+
>+  <refsect1>
>+    <title>Description</title>
>+    <para>To Set Custom DV timings at the input or output, applications
>use the
>+<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to Get the current
>custom timings,
>+applications use  <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The
>detailed timing
>+informations are filled in using the structure &v4l2-dv-timings;. These
>ioctls take
>+ a pointer to &v4l2-dv-timings; structure as argument. If the ioctl is not
>supported
>+or the timing values are not correct, driver returns an &EINVAL; </para>
>+  </refsect1>
>+
>+  <refsect1>
>+    &return-value;
>+
>+    <variablelist>
>+      <varlistentry>
>+      <term><errorcode>EINVAL</errorcode></term>
>+      <listitem>
>+        <para>This ioctl is not supported, or the
>+<constant>VIDIOC_S_DV_TIMINGS</constant> parameter was unsuitable.</para>
>+      </listitem>
>+      </varlistentry>
>+      <varlistentry>
>+      <term><errorcode>EBUSY</errorcode></term>
>+      <listitem>
>+        <para>The device is busy and therefore can not change the
>timings.</para>
>+      </listitem>
>+      </varlistentry>
>+    </variablelist>
>+
>+    <table pgwide="1" frame="none" id="v4l2-bt-timings">
>+      <title>struct <structname>v4l2_bt_timings</structname></title>
>+      <tgroup cols="3">
>+      &cs-str;
>+      <tbody valign="top">
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>width</structfield></entry>
>+          <entry>Width of active video in pixels</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>height</structfield></entry>
>+          <entry>Height of active video in lines</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>interlaced</structfield></entry>
>+          <entry>Progressive (0) or interlaced (1)</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>polarities</structfield></entry>
>+          <entry>This is a bit mask that defines polarities of sync signals.
>+bit 0 is for vertical sync polarity and bit 1 for horizontal sync polarity.
>If the bit is set
>+it is positive polarity and if is reset, it is negative polarity.</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>pixelclock</structfield></entry>
>+          <entry>Pixel clock in Hz. Ex. 74.25MHz->74250000</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>hfrontporch</structfield></entry>
>+          <entry>Horizontal front porch in pixels</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>hsync</structfield></entry>
>+          <entry>Horizontal Sync length in pixels</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>hbackporch</structfield></entry>
>+          <entry>Horizontal back porch in pixels</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>vfrontporch</structfield></entry>
>+          <entry>Vertical front porch in pixels</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>vsync</structfield></entry>
>+          <entry>Vertical Sync length in lines</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>vbackporch</structfield></entry>
>+          <entry>Vertical back porch in lines</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>il_vfrontporch</structfield></entry>
>+          <entry>Vertical front porch for bottom field of interlaced field
>formats</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>il_vsync</structfield></entry>
>+          <entry>Vertical sync length for bottom field of interlaced field
>formats</entry>
>+        </row>
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>il_vbackporch</structfield></entry>
>+          <entry>Vertical back porch for bottom field of interlaced field
>formats</entry>
>+        </row>
>+      </tbody>
>+      </tgroup>
>+    </table>
>+
>+    <table pgwide="1" frame="none" id="v4l2-dv-timings">
>+      <title>struct <structname>v4l2_dv_timings</structname></title>
>+      <tgroup cols="4">
>+      &cs-str;
>+      <tbody valign="top">
>+        <row>
>+          <entry>__u32</entry>
>+          <entry><structfield>type</structfield></entry>
>+          <entry></entry>
>+          <entry>Type of DV timings as listed in <xref linkend="dv-timing-
>types"/>.</entry>
>+        </row>
>+        <row>
>+          <entry>union</entry>
>+          <entry><structfield></structfield></entry>
>+          <entry></entry>
>+        </row>
>+        <row>
>+          <entry></entry>
>+          <entry>&v4l2-bt-timings;</entry>
>+          <entry><structfield>bt</structfield></entry>
>+          <entry>Timings defined by BT.656/1120 specifications </entry>
>+        </row>
>+        <row>
>+          <entry></entry>
>+          <entry>__u32</entry>
>+          <entry><structfield>reserved</structfield>[32]</entry>
>+          <entry></entry>
>+        </row>
>+      </tbody>
>+      </tgroup>
>+    </table>
>+
>+    <table pgwide="1" frame="none" id="dv-timing-types">
>+      <title>DV Timing types</title>
>+      <tgroup cols="3">
>+      &cs-str;
>+      <tbody valign="top">
>+        <row>
>+          <entry>Timing type</entry>
>+          <entry>value</entry>
>+          <entry>Description</entry>
>+        </row>
>+        <row>
>+          <entry></entry>
>+          <entry></entry>
>+          <entry></entry>
>+        </row>
>+        <row>
>+          <entry>V4L2_DV_BT_656_1120</entry>
>+          <entry>0</entry>
>+          <entry>BT.656/1120 timings</entry>
>+        </row>
>+      </tbody>
>+      </tgroup>
>+    </table>
>+  </refsect1>
>+</refentry>
>+
>+<!--
>+Local Variables:
>+mode: sgml
>+sgml-parent-document: "v4l2.sgml"
>+indent-tabs-mode: nil
>+End:
>+-->
>diff -uNr v4l-dvb-
>e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-query-dv-
>preset.xml v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-query-dv-
>preset.xml
>--- v4l-dvb-e0cd9a337600_master/linux/Documentation/DocBook/v4l/vidioc-
>query-dv-preset.xml    1969-12-31 19:00:00.000000000 -0500
>+++ v4l-dvb-patch/linux/Documentation/DocBook/v4l/vidioc-query-dv-
>preset.xml     2009-12-02 17:19:41.000000000 -0500
>@@ -0,0 +1,85 @@
>+<refentry id="vidioc-query-dv-preset">
>+  <refmeta>
>+    <refentrytitle>ioctl VIDIOC_QUERY_DV_PRESET</refentrytitle>
>+    &manvol;
>+  </refmeta>
>+
>+  <refnamediv>
>+    <refname>VIDIOC_QUERY_DV_PRESET</refname>
>+    <refpurpose>Sense the DV preset received by the current
>+input</refpurpose>
>+  </refnamediv>
>+
>+  <refsynopsisdiv>
>+    <funcsynopsis>
>+      <funcprototype>
>+      <funcdef>int <function>ioctl</function></funcdef>
>+      <paramdef>int <parameter>fd</parameter></paramdef>
>+      <paramdef>int <parameter>request</parameter></paramdef>
>+      <paramdef>&v4l2-dv-preset; *<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_QUERY_DV_PRESET</para>
>+      </listitem>
>+      </varlistentry>
>+      <varlistentry>
>+      <term><parameter>argp</parameter></term>
>+      <listitem>
>+        <para></para>
>+      </listitem>
>+      </varlistentry>
>+    </variablelist>
>+  </refsect1>
>+
>+  <refsect1>
>+    <title>Description</title>
>+
>+    <para>The hardware may be able to detect the current DV preset
>+automatically similar to sensing the video standard. To do so,
>applications
>+call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a
>+ &v4l2-dv-preset; type.  Once hardware detects a preset, that preset is
>+returned in the preset field of &v4l2-dv-preset; When detection is not
>+possible or fails, the value V4L2_DV_INVALID is returned.</para>
>+  </refsect1>
>+
>+  <refsect1>
>+    &return-value;
>+    <variablelist>
>+      <varlistentry>
>+      <term><errorcode>EINVAL</errorcode></term>
>+      <listitem>
>+        <para>This ioctl is not supported.</para>
>+      </listitem>
>+    </varlistentry>
>+      <varlistentry>
>+      <term><errorcode>EBUSY</errorcode></term>
>+      <listitem>
>+        <para>The device is busy and therefore can not sense the
>preset</para>
>+      </listitem>
>+      </varlistentry>
>+    </variablelist>
>+  </refsect1>
>+</refentry>
>+
>+<!--
>+Local Variables:
>+mode: sgml
>+sgml-parent-document: "v4l2.sgml"
>+indent-tabs-mode: nil
>+End:
>+-->
>diff -uNr v4l-dvb-e0cd9a337600_master/linux/include/linux/videodev2.h v4l-
>dvb-patch/linux/include/linux/videodev2.h
>--- v4l-dvb-e0cd9a337600_master/linux/include/linux/videodev2.h        2009-12-
>01 17:02:04.000000000 -0500
>+++ v4l-dvb-patch/linux/include/linux/videodev2.h      2009-12-02
>17:21:48.000000000 -0500
>@@ -733,6 +733,99 @@
> };
>
> /*
>+ *    V I D E O       T I M I N G S   D V     P R E S E T
>+ */
>+struct v4l2_dv_preset {
>+      __u32   preset;
>+      __u32   reserved[4];
>+};
>+
>+/*
>+ *    D V     P R E S E T S   E N U M E R A T I O N
>+ */
>+struct v4l2_dv_enum_preset {
>+      __u32   index;
>+      __u32   preset;
>+      __u8    name[32]; /* Name of the preset timing */
>+      __u32   width;
>+      __u32   height;
>+      __u32   reserved[4];
>+};
>+
>+/*
>+ *    D V     P R E S E T     V A L U E S
>+ */
>+#define               V4L2_DV_INVALID         0
>+#define               V4L2_DV_480P59_94       1 /* BT.1362 */
>+#define               V4L2_DV_576P50          2 /* BT.1362 */
>+#define               V4L2_DV_720P24          3 /* SMPTE 296M */
>+#define               V4L2_DV_720P25          4 /* SMPTE 296M */
>+#define               V4L2_DV_720P30          5 /* SMPTE 296M */
>+#define               V4L2_DV_720P50          6 /* SMPTE 296M */
>+#define               V4L2_DV_720P59_94       7 /* SMPTE 274M */
>+#define               V4L2_DV_720P60          8 /* SMPTE 274M/296M */
>+#define               V4L2_DV_1080I29_97      9 /* BT.1120/ SMPTE 274M */
>+#define               V4L2_DV_1080I30         10 /* BT.1120/ SMPTE 274M */
>+#define               V4L2_DV_1080I25         11 /* BT.1120 */
>+#define               V4L2_DV_1080I50         12 /* SMPTE 296M */
>+#define               V4L2_DV_1080I60         13 /* SMPTE 296M */
>+#define               V4L2_DV_1080P24         14 /* SMPTE 296M */
>+#define               V4L2_DV_1080P25         15 /* SMPTE 296M */
>+#define               V4L2_DV_1080P30         16 /* SMPTE 296M */
>+#define               V4L2_DV_1080P50         17 /* BT.1120 */
>+#define               V4L2_DV_1080P60         18 /* BT.1120 */
>+
>+/*
>+ *    D V     B T     T I M I N G S
>+ */
>+
>+/* BT.656/BT.1120 timing data */
>+struct v4l2_bt_timings {
>+      __u32   width;          /* width in pixels */
>+      __u32   height;         /* height in lines */
>+      __u32   interlaced;     /* Interlaced or progressive */
>+      __u32   polarities;     /* Positive or negative polarity */
>+      __u64   pixelclock;     /* Pixel clock in HZ. Ex. 74.25MHz->74250000 */
>+      __u32   hfrontporch;    /* Horizpontal front porch in pixels */
>+      __u32   hsync;          /* Horizontal Sync length in pixels */
>+      __u32   hbackporch;     /* Horizontal back porch in pixels */
>+      __u32   vfrontporch;    /* Vertical front porch in pixels */
>+      __u32   vsync;          /* Vertical Sync length in lines */
>+      __u32   vbackporch;     /* Vertical back porch in lines */
>+      __u32   il_vfrontporch; /* Vertical front porch for bottom field of
>+                               * interlaced field formats
>+                               */
>+      __u32   il_vsync;       /* Vertical sync length for bottom field of
>+                               * interlaced field formats
>+                               */
>+      __u32   il_vbackporch;  /* Vertical back porch for bottom field of
>+                               * interlaced field formats
>+                               */
>+      __u32   reserved[16];
>+} __attribute__ ((packed));
>+
>+/* Interlaced or progressive format */
>+#define       V4L2_DV_PROGRESSIVE     0
>+#define       V4L2_DV_INTERLACED      1
>+
>+/* Polarities. If bit is not set, it is assumed to be negative polarity */
>+#define V4L2_DV_VSYNC_POS_POL 0x00000001
>+#define V4L2_DV_HSYNC_POS_POL 0x00000002
>+
>+
>+/* DV timings */
>+struct v4l2_dv_timings {
>+      __u32 type;
>+      union {
>+              struct v4l2_bt_timings  bt;
>+              __u32   reserved[32];
>+      };
>+} __attribute__ ((packed));
>+
>+/* Values for the type field */
>+#define V4L2_DV_BT_656_1120   0       /* BT.656/1120 timing type */
>+
>+/*
>  *    V I D E O   I N P U T S
>  */
> struct v4l2_input {
>@@ -743,7 +836,8 @@
>       __u32        tuner;             /*  Associated tuner */
>       v4l2_std_id  std;
>       __u32        status;
>-      __u32        reserved[4];
>+      __u32        capabilities;
>+      __u32        reserved[3];
> };
>
> /*  Values for the 'type' field */
>@@ -774,6 +868,11 @@
> #define V4L2_IN_ST_NO_ACCESS   0x02000000  /* Conditional access denied */
> #define V4L2_IN_ST_VTR         0x04000000  /* VTR time constant */
>
>+/* capabilities flags */
>+#define V4L2_IN_CAP_PRESETS           0x00000001 /* Supports S_DV_PRESET */
>+#define V4L2_IN_CAP_CUSTOM_TIMINGS    0x00000002 /* Supports S_DV_TIMINGS */
>+#define V4L2_IN_CAP_STD                       0x00000004 /* Supports S_STD */
>+
> /*
>  *    V I D E O   O U T P U T S
>  */
>@@ -784,13 +883,19 @@
>       __u32        audioset;          /*  Associated audios (bitfield) */
>       __u32        modulator;         /*  Associated modulator */
>       v4l2_std_id  std;
>-      __u32        reserved[4];
>+      __u32        capabilities;
>+      __u32        reserved[3];
> };
> /*  Values for the 'type' field */
> #define V4L2_OUTPUT_TYPE_MODULATOR            1
> #define V4L2_OUTPUT_TYPE_ANALOG                       2
> #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY     3
>
>+/* capabilities flags */
>+#define V4L2_OUT_CAP_PRESETS          0x00000001 /* Supports S_DV_PRESET */
>+#define V4L2_OUT_CAP_CUSTOM_TIMINGS   0x00000002 /* Supports
>S_DV_TIMINGS */
>+#define V4L2_OUT_CAP_STD              0x00000004 /* Supports S_STD */
>+
> /*
>  *    C O N T R O L S
>  */
>@@ -1625,6 +1730,13 @@
> #endif
>
> #define VIDIOC_S_HW_FREQ_SEEK  _IOW('V', 82, struct
>v4l2_hw_freq_seek)
>+#define       VIDIOC_ENUM_DV_PRESETS  _IOWR('V', 83, struct
>v4l2_dv_enum_preset)
>+#define       VIDIOC_S_DV_PRESET      _IOWR('V', 84, struct v4l2_dv_preset)
>+#define       VIDIOC_G_DV_PRESET      _IOWR('V', 85, struct v4l2_dv_preset)
>+#define       VIDIOC_QUERY_DV_PRESET  _IOR('V',  86, struct v4l2_dv_preset)
>+#define       VIDIOC_S_DV_TIMINGS     _IOWR('V', 87, struct v4l2_dv_timings)
>+#define       VIDIOC_G_DV_TIMINGS     _IOWR('V', 88, struct v4l2_dv_timings)
>+
> /* Reminder: when adding new ioctls please add support for them to
>    drivers/media/video/v4l2-compat-ioctl32.c as well! */
>
>diff -uNr v4l-dvb-e0cd9a337600_master/media-specs/Makefile v4l-dvb-
>patch/media-specs/Makefile
>--- v4l-dvb-e0cd9a337600_master/media-specs/Makefile   2009-12-01
>17:02:04.000000000 -0500
>+++ v4l-dvb-patch/media-specs/Makefile 2009-12-02 17:49:08.000000000 -
>0500
>@@ -60,6 +60,10 @@
>       v4l/vidioc-enumaudioout.xml \
>       v4l/vidioc-enuminput.xml \
>       v4l/vidioc-enumoutput.xml \
>+      v4l/vidioc-enum-dv-presets.xml \
>+      v4l/vidioc-g-dv-preset.xml \
>+      v4l/vidioc-query-dv-preset.xml \
>+      v4l/vidioc-g-dv-timings.xml \
>       v4l/vidioc-enumstd.xml \
>       v4l/vidioc-g-audio.xml \
>       v4l/vidioc-g-audioout.xml \
>@@ -191,6 +195,12 @@
>       VIDIOC_ENUMAUDOUT \
>       VIDIOC_ENUMINPUT \
>       VIDIOC_ENUMOUTPUT \
>+      VIDIOC_ENUM_DV_PRESETS \
>+      VIDIOC_QUERY_DV_PRESET \
>+      VIDIOC_G_DV_PRESET \
>+      VIDIOC_S_DV_PRESET \
>+      VIDIOC_G_DV_TIMINGS \
>+      VIDIOC_S_DV_TIMINGS \
>       VIDIOC_ENUMSTD \
>       VIDIOC_ENUM_FMT \
>       VIDIOC_ENUM_FRAMEINTERVALS \
>@@ -333,6 +343,10 @@
>       v4l2_tuner \
>       v4l2_vbi_format \
>       v4l2_window \
>+      v4l2_dv_enum_preset \
>+      v4l2_dv_preset \
>+      v4l2_dv_timings \
>+      v4l2_bt_timings \
>
> ERRORS = \
>       EACCES \
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux