|
|
@@ -100,6 +100,9 @@ void coda_write_base(struct coda_ctx *ctx, struct coda_q_data *q_data,
|
|
|
base_cb = base_y + q_data->bytesperline * q_data->height;
|
|
|
base_cr = base_cb + q_data->bytesperline * q_data->height / 4;
|
|
|
break;
|
|
|
+ case V4L2_PIX_FMT_YUV422P:
|
|
|
+ base_cb = base_y + q_data->bytesperline * q_data->height;
|
|
|
+ base_cr = base_cb + q_data->bytesperline * q_data->height / 2;
|
|
|
}
|
|
|
|
|
|
coda_write(ctx->dev, base_y, reg_y);
|
|
|
@@ -123,6 +126,10 @@ static const struct coda_fmt coda_formats[] = {
|
|
|
.name = "YUV 4:2:0 Partial interleaved Y/CbCr",
|
|
|
.fourcc = V4L2_PIX_FMT_NV12,
|
|
|
},
|
|
|
+ {
|
|
|
+ .name = "YUV 4:2:2 Planar, YCbCr",
|
|
|
+ .fourcc = V4L2_PIX_FMT_YUV422P,
|
|
|
+ },
|
|
|
{
|
|
|
.name = "H264 Encoded Stream",
|
|
|
.fourcc = V4L2_PIX_FMT_H264,
|
|
|
@@ -168,6 +175,7 @@ static bool coda_format_is_yuv(u32 fourcc)
|
|
|
case V4L2_PIX_FMT_YUV420:
|
|
|
case V4L2_PIX_FMT_YVU420:
|
|
|
case V4L2_PIX_FMT_NV12:
|
|
|
+ case V4L2_PIX_FMT_YUV422P:
|
|
|
return true;
|
|
|
default:
|
|
|
return false;
|
|
|
@@ -393,6 +401,11 @@ static int coda_try_fmt(struct coda_ctx *ctx, const struct coda_codec *codec,
|
|
|
f->fmt.pix.sizeimage = f->fmt.pix.bytesperline *
|
|
|
f->fmt.pix.height * 3 / 2;
|
|
|
break;
|
|
|
+ case V4L2_PIX_FMT_YUV422P:
|
|
|
+ f->fmt.pix.bytesperline = round_up(f->fmt.pix.width, 16);
|
|
|
+ f->fmt.pix.sizeimage = f->fmt.pix.bytesperline *
|
|
|
+ f->fmt.pix.height * 2;
|
|
|
+ break;
|
|
|
case V4L2_PIX_FMT_H264:
|
|
|
case V4L2_PIX_FMT_MPEG4:
|
|
|
case V4L2_PIX_FMT_JPEG:
|