media: vicodec: add support for 4 new RGB32 pixelformats
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Tue, 30 Jul 2019 13:00:20 +0000 (10:00 -0300)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 7 Aug 2019 20:05:01 +0000 (17:05 -0300)
Add support for V4L2_PIX_FMT_BGRA/X32 and V4L2_PIX_FMT_RGBA/X32 formats.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/vicodec/codec-v4l2-fwht.c

index 01e7f09efc4e2ebc4d16dadf74c7c6170ef4824c..3c93d9232c3cf55e3bc52ae5284b8abd79fd4baa 100644 (file)
@@ -29,11 +29,15 @@ static const struct v4l2_fwht_pixfmt_info v4l2_fwht_pixfmts[] = {
        { V4L2_PIX_FMT_HSV24,   3, 3, 1, 3, 3, 1, 1, 3, 1, FWHT_FL_PIXENC_HSV},
        { V4L2_PIX_FMT_BGR32,   4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB},
        { V4L2_PIX_FMT_XBGR32,  4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB},
+       { V4L2_PIX_FMT_ABGR32,  4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB},
        { V4L2_PIX_FMT_RGB32,   4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB},
        { V4L2_PIX_FMT_XRGB32,  4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB},
-       { V4L2_PIX_FMT_HSV32,   4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_HSV},
        { V4L2_PIX_FMT_ARGB32,  4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB},
-       { V4L2_PIX_FMT_ABGR32,  4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB},
+       { V4L2_PIX_FMT_BGRX32,  4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB},
+       { V4L2_PIX_FMT_BGRA32,  4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB},
+       { V4L2_PIX_FMT_RGBX32,  4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB},
+       { V4L2_PIX_FMT_RGBA32,  4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB},
+       { V4L2_PIX_FMT_HSV32,   4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_HSV},
        { V4L2_PIX_FMT_GREY,    1, 1, 1, 1, 0, 1, 1, 1, 1, FWHT_FL_PIXENC_RGB},
 };
 
@@ -193,6 +197,28 @@ static int prepare_raw_frame(struct fwht_raw_frame *rf,
                rf->luma++;
                rf->alpha = rf->cr + 1;
                break;
+       case V4L2_PIX_FMT_BGRX32:
+               rf->cb = rf->luma + 1;
+               rf->cr = rf->cb + 2;
+               rf->luma += 2;
+               break;
+       case V4L2_PIX_FMT_BGRA32:
+               rf->alpha = rf->luma;
+               rf->cb = rf->luma + 1;
+               rf->cr = rf->cb + 2;
+               rf->luma += 2;
+               break;
+       case V4L2_PIX_FMT_RGBX32:
+               rf->cr = rf->luma;
+               rf->cb = rf->cr + 2;
+               rf->luma++;
+               break;
+       case V4L2_PIX_FMT_RGBA32:
+               rf->alpha = rf->luma + 3;
+               rf->cr = rf->luma;
+               rf->cb = rf->cr + 2;
+               rf->luma++;
+               break;
        default:
                return -EINVAL;
        }