media: imx-jpeg: use NV12M to represent non contiguous NV12
authorMing Qian <ming.qian@nxp.com>
Fri, 24 Dec 2021 03:02:41 +0000 (04:02 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:23:21 +0000 (14:23 +0200)
[ Upstream commit 784a1883cff07e7510a81ad3041d6ec443d51944 ]

V4L2_PIX_FMT_NV12 requires num_planes equals to 1,
V4L2_PIX_FMT_NV12M requires num_planes equals to 2.
and mxc-jpeg supports 2 planes for nv12,
so we should use 4L2_PIX_FMT_NV12M instead of V4L2_PIX_FMT_NV12,
otherwise it will confuses gstreamer and prevent encoding and decoding.

Signed-off-by: Ming Qian <ming.qian@nxp.com>
Signed-off-by: Shijie Qin <shijie.qin@nxp.com>
Signed-off-by: Zhou Peng <eagle.zhou@nxp.com>
Reviewed-by: Mirela Rabulea <mirela.rabulea@oss.nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/platform/imx-jpeg/mxc-jpeg.c

index bc66c09b807a5992f298f3f5fc83a7c8120192ba..1ec60f54d5a12717e5e735a37b0aab1ed3cd2f37 100644 (file)
@@ -96,7 +96,7 @@ static const struct mxc_jpeg_fmt mxc_formats[] = {
        },
        {
                .name           = "YUV420", /* 1st plane = Y, 2nd plane = UV */
-               .fourcc         = V4L2_PIX_FMT_NV12,
+               .fourcc         = V4L2_PIX_FMT_NV12M,
                .subsampling    = V4L2_JPEG_CHROMA_SUBSAMPLING_420,
                .nc             = 3,
                .depth          = 12, /* 6 bytes (4Y + UV) for 4 pixels */
@@ -390,7 +390,7 @@ static enum mxc_jpeg_image_format mxc_jpeg_fourcc_to_imgfmt(u32 fourcc)
                return MXC_JPEG_GRAY;
        case V4L2_PIX_FMT_YUYV:
                return MXC_JPEG_YUV422;
-       case V4L2_PIX_FMT_NV12:
+       case V4L2_PIX_FMT_NV12M:
                return MXC_JPEG_YUV420;
        case V4L2_PIX_FMT_YUV24:
                return MXC_JPEG_YUV444;
@@ -660,7 +660,7 @@ static int mxc_jpeg_fixup_sof(struct mxc_jpeg_sof *sof,
        _bswap16(&sof->width);
 
        switch (fourcc) {
-       case V4L2_PIX_FMT_NV12:
+       case V4L2_PIX_FMT_NV12M:
                sof->components_no = 3;
                sof->comp[0].v = 0x2;
                sof->comp[0].h = 0x2;
@@ -696,7 +696,7 @@ static int mxc_jpeg_fixup_sos(struct mxc_jpeg_sos *sos,
        u8 *sof_u8 = (u8 *)sos;
 
        switch (fourcc) {
-       case V4L2_PIX_FMT_NV12:
+       case V4L2_PIX_FMT_NV12M:
                sos->components_no = 3;
                break;
        case V4L2_PIX_FMT_YUYV:
@@ -1179,7 +1179,7 @@ static void mxc_jpeg_bytesperline(struct mxc_jpeg_q_data *q,
                /* bytesperline unused for compressed formats */
                q->bytesperline[0] = 0;
                q->bytesperline[1] = 0;
-       } else if (q->fmt->fourcc == V4L2_PIX_FMT_NV12) {
+       } else if (q->fmt->fourcc == V4L2_PIX_FMT_NV12M) {
                /* When the image format is planar the bytesperline value
                 * applies to the first plane and is divided by the same factor
                 * as the width field for the other planes
@@ -1211,7 +1211,7 @@ static void mxc_jpeg_sizeimage(struct mxc_jpeg_q_data *q)
        } else {
                q->sizeimage[0] = q->bytesperline[0] * q->h;
                q->sizeimage[1] = 0;
-               if (q->fmt->fourcc == V4L2_PIX_FMT_NV12)
+               if (q->fmt->fourcc == V4L2_PIX_FMT_NV12M)
                        q->sizeimage[1] = q->sizeimage[0] / 2;
        }
 }