[media] V4L: Extend V4L2_CID_COLORFX with more image effects

This patch adds definition of additional color effects:

 - V4L2_COLORFX_AQUA,
 - V4L2_COLORFX_ART_FREEZE,
 - V4L2_COLORFX_SILHOUETTE,
 - V4L2_COLORFX_SOLARIZATION,
 - V4L2_COLORFX_ANTIQUE,
 - V4L2_COLORFX_SET_CBCR.

The new V4L2_COLORFX_CBCR control is added to allow setting
the fixed Cb, Cr values that replace chroma Cb/Cr coefficients
in case of V4L2_COLORFX_SET_CBCR effect.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Sylwester Nawrocki 2012-04-02 06:40:19 -03:00 committed by Mauro Carvalho Chehab
parent 6fd522a6d1
commit 6491d1adfb
5 changed files with 127 additions and 25 deletions

View File

@ -2422,6 +2422,19 @@ details.</para>
&VIDIOC-SUBDEV-G-SELECTION; and
&VIDIOC-SUBDEV-S-SELECTION;.</para>
</listitem>
<listitem>
<para> Added <constant>V4L2_COLORFX_ANTIQUE</constant>,
<constant>V4L2_COLORFX_ART_FREEZE</constant>,
<constant>V4L2_COLORFX_AQUA</constant>,
<constant>V4L2_COLORFX_SILHOUETTE</constant>,
<constant>V4L2_COLORFX_SOLARIZATION</constant>,
<constant>V4L2_COLORFX_VIVID</constant> and
<constant>V4L2_COLORFX_ARBITRARY_CBCR</constant> menu items
to the <constant>V4L2_CID_COLORFX</constant> control.</para>
</listitem>
<listitem>
<para> Added <constant>V4L2_CID_COLORFX_CBCR</constant> control.</para>
</listitem>
</orderedlist>
</section>

View File

@ -285,18 +285,92 @@ minimum value disables backlight compensation.</entry>
<row id="v4l2-colorfx">
<entry><constant>V4L2_CID_COLORFX</constant></entry>
<entry>enum</entry>
<entry>Selects a color effect. Possible values for
<constant>enum v4l2_colorfx</constant> are:
<constant>V4L2_COLORFX_NONE</constant> (0),
<constant>V4L2_COLORFX_BW</constant> (1),
<constant>V4L2_COLORFX_SEPIA</constant> (2),
<constant>V4L2_COLORFX_NEGATIVE</constant> (3),
<constant>V4L2_COLORFX_EMBOSS</constant> (4),
<constant>V4L2_COLORFX_SKETCH</constant> (5),
<constant>V4L2_COLORFX_SKY_BLUE</constant> (6),
<constant>V4L2_COLORFX_GRASS_GREEN</constant> (7),
<constant>V4L2_COLORFX_SKIN_WHITEN</constant> (8) and
<constant>V4L2_COLORFX_VIVID</constant> (9).</entry>
<entry>Selects a color effect. The following values are defined:
</entry>
</row><row>
<entry></entry>
<entry></entry>
<entrytbl spanname="descr" cols="2">
<tbody valign="top">
<row>
<entry><constant>V4L2_COLORFX_NONE</constant>&nbsp;</entry>
<entry>Color effect is disabled.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_ANTIQUE</constant>&nbsp;</entry>
<entry>An aging (old photo) effect.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_ART_FREEZE</constant>&nbsp;</entry>
<entry>Frost color effect.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_AQUA</constant>&nbsp;</entry>
<entry>Water color, cool tone.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_BW</constant>&nbsp;</entry>
<entry>Black and white.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_EMBOSS</constant>&nbsp;</entry>
<entry>Emboss, the highlights and shadows replace light/dark boundaries
and low contrast areas are set to a gray background.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_GRASS_GREEN</constant>&nbsp;</entry>
<entry>Grass green.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_NEGATIVE</constant>&nbsp;</entry>
<entry>Negative.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_SEPIA</constant>&nbsp;</entry>
<entry>Sepia tone.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_SKETCH</constant>&nbsp;</entry>
<entry>Sketch.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_SKIN_WHITEN</constant>&nbsp;</entry>
<entry>Skin whiten.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_SKY_BLUE</constant>&nbsp;</entry>
<entry>Sky blue.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_SOLARIZATION</constant>&nbsp;</entry>
<entry>Solarization, the image is partially reversed in tone,
only color values above or below a certain threshold are inverted.
</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_SILHOUETTE</constant>&nbsp;</entry>
<entry>Silhouette (outline).</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_VIVID</constant>&nbsp;</entry>
<entry>Vivid colors.</entry>
</row>
<row>
<entry><constant>V4L2_COLORFX_SET_CBCR</constant>&nbsp;</entry>
<entry>The Cb and Cr chroma components are replaced by fixed
coefficients determined by <constant>V4L2_CID_COLORFX_CBCR</constant>
control.</entry>
</row>
</tbody>
</entrytbl>
</row>
<row>
<entry><constant>V4L2_CID_COLORFX_CBCR</constant></entry>
<entry>integer</entry>
<entry>Determines the Cb and Cr coefficients for <constant>V4L2_COLORFX_SET_CBCR</constant>
color effect. Bits [7:0] of the supplied 32 bit value are interpreted as
Cr component, bits [15:8] as Cb component and bits [31:16] must be zero.
</entry>
</row>
<row>
<entry><constant>V4L2_CID_ROTATE</constant></entry>

View File

@ -141,9 +141,10 @@ applications. -->
<revision>
<revnumber>3.5</revnumber>
<date>2012-04-02</date>
<authorinitials>sa</authorinitials>
<authorinitials>sa, sn</authorinitials>
<revremark>Added V4L2_CTRL_TYPE_INTEGER_MENU and V4L2 subdev
selections API.
selections API. Improved the description of V4L2_CID_COLORFX
control, added V4L2_CID_COLORFX_CBCR control.
</revremark>
</revision>

View File

@ -241,6 +241,12 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
"Grass Green",
"Skin Whiten",
"Vivid",
"Aqua",
"Art Freeze",
"Silhouette",
"Solarization",
"Antique",
"Set Cb/Cr",
NULL
};
static const char * const tune_preemphasis[] = {
@ -493,6 +499,7 @@ const char *v4l2_ctrl_get_name(u32 id)
case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE: return "Min Number of Capture Buffers";
case V4L2_CID_MIN_BUFFERS_FOR_OUTPUT: return "Min Number of Output Buffers";
case V4L2_CID_ALPHA_COMPONENT: return "Alpha Component";
case V4L2_CID_COLORFX_CBCR: return "Color Effects, CbCr";
/* MPEG controls */
/* Keep the order of the 'case's the same as in videodev2.h! */

View File

@ -1248,16 +1248,22 @@ enum v4l2_power_line_frequency {
#define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30)
#define V4L2_CID_COLORFX (V4L2_CID_BASE+31)
enum v4l2_colorfx {
V4L2_COLORFX_NONE = 0,
V4L2_COLORFX_BW = 1,
V4L2_COLORFX_SEPIA = 2,
V4L2_COLORFX_NEGATIVE = 3,
V4L2_COLORFX_EMBOSS = 4,
V4L2_COLORFX_SKETCH = 5,
V4L2_COLORFX_SKY_BLUE = 6,
V4L2_COLORFX_GRASS_GREEN = 7,
V4L2_COLORFX_SKIN_WHITEN = 8,
V4L2_COLORFX_VIVID = 9,
V4L2_COLORFX_NONE = 0,
V4L2_COLORFX_BW = 1,
V4L2_COLORFX_SEPIA = 2,
V4L2_COLORFX_NEGATIVE = 3,
V4L2_COLORFX_EMBOSS = 4,
V4L2_COLORFX_SKETCH = 5,
V4L2_COLORFX_SKY_BLUE = 6,
V4L2_COLORFX_GRASS_GREEN = 7,
V4L2_COLORFX_SKIN_WHITEN = 8,
V4L2_COLORFX_VIVID = 9,
V4L2_COLORFX_AQUA = 10,
V4L2_COLORFX_ART_FREEZE = 11,
V4L2_COLORFX_SILHOUETTE = 12,
V4L2_COLORFX_SOLARIZATION = 13,
V4L2_COLORFX_ANTIQUE = 14,
V4L2_COLORFX_SET_CBCR = 15,
};
#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32)
#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33)
@ -1274,9 +1280,10 @@ enum v4l2_colorfx {
#define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT (V4L2_CID_BASE+40)
#define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE+41)
#define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE+42)
/* last CID + 1 */
#define V4L2_CID_LASTP1 (V4L2_CID_BASE+42)
#define V4L2_CID_LASTP1 (V4L2_CID_BASE+43)
/* MPEG-class control IDs defined by V4L2 */
#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)