media: v4l2-ctrls: Add RGB color effects control
authorDillon Min <dillon.minfei@gmail.com>
Tue, 19 Oct 2021 08:43:21 +0000 (09:43 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 15 Nov 2021 08:11:32 +0000 (08:11 +0000)
Add V4L2_COLORFX_SET_RGB color effects control, V4L2_CID_COLORFX_RGB
for RGB color setting.

with two mirror changes:
- change 0xFFFFFF to 0xffffff
- fix comments 2^24 to 2^24 - 1

[hverkuil: dropped spaces around + with V4L2_CID_BASE for consistency]

Signed-off-by: Dillon Min <dillon.minfei@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Documentation/userspace-api/media/v4l/control.rst
drivers/media/v4l2-core/v4l2-ctrls-defs.c
include/uapi/linux/v4l2-controls.h

index f8d0b923da2068165231d5746a5ff6cf30739a88..3eec651742605dd8ad857b99f5ff177b77c14918 100644 (file)
@@ -242,8 +242,17 @@ Control IDs
     * - ``V4L2_COLORFX_SET_CBCR``
       - The Cb and Cr chroma components are replaced by fixed coefficients
        determined by ``V4L2_CID_COLORFX_CBCR`` control.
+    * - ``V4L2_COLORFX_SET_RGB``
+      - The RGB components are replaced by the fixed RGB components determined
+        by ``V4L2_CID_COLORFX_RGB`` control.
 
 
+``V4L2_CID_COLORFX_RGB`` ``(integer)``
+    Determines the Red, Green, and Blue coefficients for
+    ``V4L2_COLORFX_SET_RGB`` color effect.
+    Bits [7:0] of the supplied 32 bit value are interpreted as Blue component,
+    bits [15:8] as Green component, bits [23:16] as Red component, and
+    bits [31:24] must be zero.
 
 ``V4L2_CID_COLORFX_CBCR`` ``(integer)``
     Determines the Cb and Cr coefficients for ``V4L2_COLORFX_SET_CBCR``
index 0cb6c0f18b39d88997cfbd1501a7d54ee60ae69c..431f7ec17557bdeaf113c9870529c94afac958ee 100644 (file)
@@ -785,6 +785,7 @@ const char *v4l2_ctrl_get_name(u32 id)
        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";
+       case V4L2_CID_COLORFX_RGB:              return "Color Effects, RGB";
 
        /*
         * Codec controls
@@ -1394,11 +1395,12 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
                *min = *max = *step = *def = 0;
                break;
        case V4L2_CID_BG_COLOR:
+       case V4L2_CID_COLORFX_RGB:
                *type = V4L2_CTRL_TYPE_INTEGER;
                *step = 1;
                *min = 0;
-               /* Max is calculated as RGB888 that is 2^24 */
-               *max = 0xFFFFFF;
+               /* Max is calculated as RGB888 that is 2^24 - 1 */
+               *max = 0xffffff;
                break;
        case V4L2_CID_COLORFX_CBCR:
                *type = V4L2_CTRL_TYPE_INTEGER;
index 5fea5feb0412bb10dfebd4e92eddea8f526c6988..c9eea93a43a912d8b325105d01da1694b5f115b5 100644 (file)
@@ -128,6 +128,7 @@ enum v4l2_colorfx {
        V4L2_COLORFX_SOLARIZATION               = 13,
        V4L2_COLORFX_ANTIQUE                    = 14,
        V4L2_COLORFX_SET_CBCR                   = 15,
+       V4L2_COLORFX_SET_RGB                    = 16,
 };
 #define V4L2_CID_AUTOBRIGHTNESS                        (V4L2_CID_BASE+32)
 #define V4L2_CID_BAND_STOP_FILTER              (V4L2_CID_BASE+33)
@@ -145,9 +146,10 @@ enum v4l2_colorfx {
 
 #define V4L2_CID_ALPHA_COMPONENT               (V4L2_CID_BASE+41)
 #define V4L2_CID_COLORFX_CBCR                  (V4L2_CID_BASE+42)
+#define V4L2_CID_COLORFX_RGB                   (V4L2_CID_BASE+43)
 
 /* last CID + 1 */
-#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+43)
+#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+44)
 
 /* USER-class private control IDs */