aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>2021-10-31 22:53:43 +0000
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2021-11-01 07:30:43 +0000
commita13eec2cb2e88c48ab2ba88163df61900ac0db33 (patch)
tree8c414442e9b8bcdbd6e158dc488aa4a0f378696f
parent365915aa694d9c1a66b59bb718456fdd6fefa67c (diff)
downloadv4l-utils-a13eec2cb2e88c48ab2ba88163df61900ac0db33.tar.gz
v4l2grab: add RGB 32 format and variants
Those are pretty simple to add. As we don't have much to do with that, just ignore the alpha channel, if present. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
-rw-r--r--contrib/test/v4l2grab.c37
1 files changed, 36 insertions, 1 deletions
diff --git a/contrib/test/v4l2grab.c b/contrib/test/v4l2grab.c
index af2a5bc0..04cd6653 100644
--- a/contrib/test/v4l2grab.c
+++ b/contrib/test/v4l2grab.c
@@ -310,6 +310,28 @@ static void copy_two_pixels(struct v4l2_format *fmt,
convert_yuv(enc, plane0[i], u, v, dst);
break;
+ case V4L2_PIX_FMT_RGB32:
+ case V4L2_PIX_FMT_ARGB32:
+ case V4L2_PIX_FMT_XRGB32:
+ for (i = 0; i < 2; i++) {
+ *(*dst)++ = plane0[1];
+ *(*dst)++ = plane0[2];
+ *(*dst)++ = plane0[3];
+
+ plane0 += 4;
+ }
+ break;
+ case V4L2_PIX_FMT_BGR32:
+ case V4L2_PIX_FMT_ABGR32:
+ case V4L2_PIX_FMT_XBGR32:
+ for (i = 0; i < 2; i++) {
+ *(*dst)++ = plane0[2];
+ *(*dst)++ = plane0[1];
+ *(*dst)++ = plane0[0];
+
+ plane0 += 4;
+ }
+ break;
default:
case V4L2_PIX_FMT_BGR24:
for (i = 0; i < 2; i++) {
@@ -348,11 +370,18 @@ static unsigned int convert_to_rgb24(struct v4l2_format *fmt,
else
enc = fmt->fmt.pix.ycbcr_enc;
- /* Depth should be multiple of 4 */
switch (fmt->fmt.pix.pixelformat) {
case V4L2_PIX_FMT_BGR24:
depth = 24;
break;
+ case V4L2_PIX_FMT_RGB32:
+ case V4L2_PIX_FMT_ARGB32:
+ case V4L2_PIX_FMT_XRGB32:
+ case V4L2_PIX_FMT_BGR32:
+ case V4L2_PIX_FMT_ABGR32:
+ case V4L2_PIX_FMT_XBGR32:
+ depth = 32;
+ break;
case V4L2_PIX_FMT_NV12:
case V4L2_PIX_FMT_NV21:
num_planes = 2;
@@ -1047,6 +1076,12 @@ int main(int argc, char **argv)
case V4L2_PIX_FMT_RGB565:
case V4L2_PIX_FMT_RGB565X:
case V4L2_PIX_FMT_RGB24:
+ case V4L2_PIX_FMT_RGB32:
+ case V4L2_PIX_FMT_ARGB32:
+ case V4L2_PIX_FMT_XRGB32:
+ case V4L2_PIX_FMT_BGR32:
+ case V4L2_PIX_FMT_ABGR32:
+ case V4L2_PIX_FMT_XBGR32:
case V4L2_PIX_FMT_YUYV:
case V4L2_PIX_FMT_UYVY:
case V4L2_PIX_FMT_YVYU: