media: imx-jpeg: use NV12M to represent non contiguous NV12
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>
This commit is contained in:
parent
7e2c9c6fd8
commit
784a1883cf
|
@ -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 */
|
||||
|
@ -404,7 +404,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;
|
||||
|
@ -673,7 +673,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;
|
||||
|
@ -709,7 +709,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:
|
||||
|
@ -1183,7 +1183,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
|
||||
|
@ -1215,7 +1215,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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue