[media] v4l: Image source control class
authorSakari Ailus <sakari.ailus@iki.fi>
Tue, 4 Oct 2011 11:20:05 +0000 (08:20 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 14 May 2012 11:35:24 +0000 (08:35 -0300)
Add image source control class. This control class is intended to contain
low level controls which deal with control of the image capture process ---
the A/D converter in image sensors, for example.

Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Documentation/DocBook/media/v4l/controls.xml
Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
drivers/media/video/v4l2-ctrls.c
include/linux/videodev2.h

index 5e12257dfcef6c712cbdacde7e5526cfffc8a233..43cd4958c9e821ef91bafdec76a96bca719be122 100644 (file)
@@ -3599,4 +3599,90 @@ interface and may change in the future.</para>
       to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>,
       <xref linkend="w3c-jpeg-jfif"/>.</para>
     </section>
+
+    <section id="image-source-controls">
+      <title>Image Source Control Reference</title>
+
+      <note>
+       <title>Experimental</title>
+
+       <para>This is an <link
+       linkend="experimental">experimental</link> interface and may
+       change in the future.</para>
+      </note>
+
+      <para>
+       The Image Source control class is intended for low-level
+       control of image source devices such as image sensors. The
+       devices feature an analogue to digital converter and a bus
+       transmitter to transmit the image data out of the device.
+      </para>
+
+      <table pgwide="1" frame="none" id="image-source-control-id">
+      <title>Image Source Control IDs</title>
+
+      <tgroup cols="4">
+       <colspec colname="c1" colwidth="1*" />
+       <colspec colname="c2" colwidth="6*" />
+       <colspec colname="c3" colwidth="2*" />
+       <colspec colname="c4" colwidth="6*" />
+       <spanspec namest="c1" nameend="c2" spanname="id" />
+       <spanspec namest="c2" nameend="c4" spanname="descr" />
+       <thead>
+         <row>
+           <entry spanname="id" align="left">ID</entry>
+           <entry align="left">Type</entry>
+         </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
+         </row>
+       </thead>
+       <tbody valign="top">
+         <row><entry></entry></row>
+         <row>
+           <entry spanname="id"><constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant></entry>
+           <entry>class</entry>
+         </row>
+         <row>
+           <entry spanname="descr">The IMAGE_SOURCE class descriptor.</entry>
+         </row>
+         <row>
+           <entry spanname="id"><constant>V4L2_CID_VBLANK</constant></entry>
+           <entry>integer</entry>
+         </row>
+         <row>
+           <entry spanname="descr">Vertical blanking. The idle period
+           after every frame during which no image data is produced.
+           The unit of vertical blanking is a line. Every line has
+           length of the image width plus horizontal blanking at the
+           pixel rate defined by
+           <constant>V4L2_CID_PIXEL_RATE</constant> control in the
+           same sub-device.</entry>
+         </row>
+         <row>
+           <entry spanname="id"><constant>V4L2_CID_HBLANK</constant></entry>
+           <entry>integer</entry>
+         </row>
+         <row>
+           <entry spanname="descr">Horizontal blanking. The idle
+           period after every line of image data during which no
+           image data is produced. The unit of horizontal blanking is
+           pixels.</entry>
+         </row>
+         <row>
+           <entry spanname="id"><constant>V4L2_CID_ANALOGUE_GAIN</constant></entry>
+           <entry>integer</entry>
+         </row>
+         <row>
+           <entry spanname="descr">Analogue gain is gain affecting
+           all colour components in the pixel matrix. The gain
+           operation is performed in the analogue domain before A/D
+           conversion.
+           </entry>
+         </row>
+         <row><entry></entry></row>
+       </tbody>
+      </tgroup>
+      </table>
+
+    </section>
+
 </section>
index 27e20bcbdf427c6d3fbeabaacec8d71711c681f3..f2d2ec3f0e31d72b784eb181717344a5094d7bd5 100644 (file)
@@ -272,6 +272,12 @@ These controls are described in <xref
 These controls are described in <xref
                linkend="jpeg-controls" />.</entry>
          </row>
+         <row>
+           <entry><constant>V4L2_CTRL_CLASS_IMAGE_SOURCE</constant></entry>
+           <entry>0x9e0000</entry> <entry>The class containing image
+           source controls. These controls are described in <xref
+           linkend="image-source-controls" />.</entry>
+         </row>
        </tbody>
       </tgroup>
     </table>
index ae544d870d7d3df284c3cd9600e3498f5678785c..7a2f855d4e210e5f718f90e0f27c18c28ba2cc8d 100644 (file)
@@ -644,6 +644,12 @@ const char *v4l2_ctrl_get_name(u32 id)
        case V4L2_CID_JPEG_COMPRESSION_QUALITY: return "Compression Quality";
        case V4L2_CID_JPEG_ACTIVE_MARKER:       return "Active Markers";
 
+       /* Image source controls */
+       case V4L2_CID_IMAGE_SOURCE_CLASS:       return "Image Source Controls";
+       case V4L2_CID_VBLANK:                   return "Vertical Blanking";
+       case V4L2_CID_HBLANK:                   return "Horizontal Blanking";
+       case V4L2_CID_ANALOGUE_GAIN:            return "Analogue Gain";
+
        default:
                return NULL;
        }
@@ -745,6 +751,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
        case V4L2_CID_FM_TX_CLASS:
        case V4L2_CID_FLASH_CLASS:
        case V4L2_CID_JPEG_CLASS:
+       case V4L2_CID_IMAGE_SOURCE_CLASS:
                *type = V4L2_CTRL_TYPE_CTRL_CLASS;
                /* You can neither read not write these */
                *flags |= V4L2_CTRL_FLAG_READ_ONLY | V4L2_CTRL_FLAG_WRITE_ONLY;
index ace8ac000b9b9a35b0d13b80e071ce22b52aebb8..3cd13b2faab517f030d51de0379bf86f2148a500 100644 (file)
@@ -1139,6 +1139,7 @@ struct v4l2_ext_controls {
 #define V4L2_CTRL_CLASS_FM_TX 0x009b0000       /* FM Modulator control class */
 #define V4L2_CTRL_CLASS_FLASH 0x009c0000       /* Camera flash controls */
 #define V4L2_CTRL_CLASS_JPEG 0x009d0000                /* JPEG-compression controls */
+#define V4L2_CTRL_CLASS_IMAGE_SOURCE 0x009e0000        /* Image source controls */
 
 #define V4L2_CTRL_ID_MASK                (0x0fffffff)
 #define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)
@@ -1788,6 +1789,14 @@ enum v4l2_jpeg_chroma_subsampling {
 #define        V4L2_JPEG_ACTIVE_MARKER_DQT             (1 << 17)
 #define        V4L2_JPEG_ACTIVE_MARKER_DHT             (1 << 18)
 
+/* Image source controls */
+#define V4L2_CID_IMAGE_SOURCE_CLASS_BASE       (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)
+#define V4L2_CID_IMAGE_SOURCE_CLASS            (V4L2_CTRL_CLASS_IMAGE_SOURCE | 1)
+
+#define V4L2_CID_VBLANK                                (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 1)
+#define V4L2_CID_HBLANK                                (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 2)
+#define V4L2_CID_ANALOGUE_GAIN                 (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 3)
+
 /*
  *     T U N I N G
  */