[media] v4l: Add new alpha component control
authorSylwester Nawrocki <s.nawrocki@samsung.com>
Mon, 14 Nov 2011 11:48:18 +0000 (08:48 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 30 Dec 2011 16:05:08 +0000 (14:05 -0200)
The V4L2_CID_ALPHA_COMPONENT control is intended for the video capture
or memory-to-memory devices that are capable of setting up the per-pixel
alpha component to some arbitrary value. It allows to set the alpha
component for all pixels to an arbitrary value.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Documentation/DocBook/media/v4l/compat.xml
Documentation/DocBook/media/v4l/controls.xml
Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
drivers/media/video/v4l2-ctrls.c
include/linux/videodev2.h

index 8b44a43..12ba262 100644 (file)
@@ -2379,6 +2379,17 @@ that used it. It was originally scheduled for removal in 2.6.35.
       </orderedlist>
     </section>
 
+    <section>
+      <title>V4L2 in Linux 3.3</title>
+      <orderedlist>
+        <listitem>
+         <para>Added <constant>V4L2_CID_ALPHA_COMPONENT</constant> control
+           to the <link linkend="control">User controls class</link>.
+         </para>
+        </listitem>
+      </orderedlist>
+    </section>
+
     <section id="other">
       <title>Relation of V4L2 to other Linux multimedia APIs</title>
 
index c0422c6..a1be378 100644 (file)
@@ -324,12 +324,6 @@ minimum value disables backlight compensation.</entry>
                (usually a microscope).</entry>
          </row>
          <row>
-           <entry><constant>V4L2_CID_LASTP1</constant></entry>
-           <entry></entry>
-           <entry>End of the predefined control IDs (currently
-<constant>V4L2_CID_ILLUMINATORS_2</constant> + 1).</entry>
-         </row>
-         <row>
            <entry><constant>V4L2_CID_MIN_BUFFERS_FOR_CAPTURE</constant></entry>
            <entry>integer</entry>
            <entry>This is a read-only control that can be read by the application
@@ -345,6 +339,25 @@ and used as a hint to determine the number of OUTPUT buffers to pass to REQBUFS.
 The value is the minimum number of OUTPUT buffers that is necessary for hardware
 to work.</entry>
          </row>
+         <row id="v4l2-alpha-component">
+           <entry><constant>V4L2_CID_ALPHA_COMPONENT</constant></entry>
+           <entry>integer</entry>
+           <entry> Sets the alpha color component on the capture device or on
+           the capture buffer queue of a mem-to-mem device. When a mem-to-mem
+           device produces frame format that includes an alpha component
+           (e.g. <link linkend="rgb-formats">packed RGB image formats</link>)
+           and the alpha value is not defined by the mem-to-mem input data
+           this control lets you select the alpha component value of all
+           pixels. It is applicable to any pixel format that contains an alpha
+           component.
+           </entry>
+         </row>
+         <row>
+           <entry><constant>V4L2_CID_LASTP1</constant></entry>
+           <entry></entry>
+           <entry>End of the predefined control IDs (currently
+             <constant>V4L2_CID_ALPHA_COMPONENT</constant> + 1).</entry>
+         </row>
          <row>
            <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry>
            <entry></entry>
index ba56536..166c8d6 100644 (file)
@@ -428,8 +428,11 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
     <para>Bit 7 is the most significant bit. The value of a = alpha
 bits is undefined when reading from the driver, ignored when writing
 to the driver, except when alpha blending has been negotiated for a
-<link linkend="overlay">Video Overlay</link> or <link
-linkend="osd">Video Output Overlay</link>.</para>
+<link linkend="overlay">Video Overlay</link> or <link linkend="osd">
+Video Output Overlay</link> or when alpha component has been configured
+for a <link linkend="capture">Video Capture</link> by means of <link
+linkend="v4l2-alpha-component"> <constant>V4L2_CID_ALPHA_COMPONENT
+</constant> </link> control.</para>
 
     <example>
       <title><constant>V4L2_PIX_FMT_BGR24</constant> 4 &times; 4 pixel
index 0f415da..3926615 100644 (file)
@@ -467,6 +467,7 @@ const char *v4l2_ctrl_get_name(u32 id)
        case V4L2_CID_ILLUMINATORS_2:           return "Illuminator 2";
        case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE:  return "Minimum Number of Capture Buffers";
        case V4L2_CID_MIN_BUFFERS_FOR_OUTPUT:   return "Minimum Number of Output Buffers";
+       case V4L2_CID_ALPHA_COMPONENT:          return "Alpha Component";
 
        /* MPEG controls */
        /* Keep the order of the 'case's the same as in videodev2.h! */
index 3d62631..2965906 100644 (file)
@@ -1204,10 +1204,10 @@ enum v4l2_colorfx {
 #define V4L2_CID_MIN_BUFFERS_FOR_CAPTURE       (V4L2_CID_BASE+39)
 #define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT                (V4L2_CID_BASE+40)
 
-/* last CID + 1 */
-#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+41)
+#define V4L2_CID_ALPHA_COMPONENT               (V4L2_CID_BASE+41)
 
-/* Minimum number of buffer neede by the device */
+/* last CID + 1 */
+#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+42)
 
 /*  MPEG-class control IDs defined by V4L2 */
 #define V4L2_CID_MPEG_BASE                     (V4L2_CTRL_CLASS_MPEG | 0x900)