media: coda: fix default JPEG colorimetry
authorPhilipp Zabel <p.zabel@pengutronix.de>
Tue, 26 Apr 2022 09:15:43 +0000 (11:15 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 13 May 2022 09:02:20 +0000 (11:02 +0200)
Set default colorspace to SRGB for JPEG encoder and decoder devices,
to fix the following v4l2-compliance test failure:

test VIDIOC_TRY_FMT: OK
fail: v4l2-test-formats.cpp(818): fmt_raw.g_colorspace() != V4L2_COLORSPACE_SRGB

Also explicitly set transfer function, YCbCr encoding and quantization
range, as required by v4l2-compliance for the JPEG encoded side.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/chips-media/coda-common.c

index d246afc..7528f27 100644 (file)
@@ -1653,13 +1653,18 @@ static void set_default_params(struct coda_ctx *ctx)
        csize = coda_estimate_sizeimage(ctx, usize, max_w, max_h);
 
        ctx->params.codec_mode = ctx->codec->mode;
-       if (ctx->cvd->src_formats[0] == V4L2_PIX_FMT_JPEG)
-               ctx->colorspace = V4L2_COLORSPACE_JPEG;
-       else
+       if (ctx->cvd->src_formats[0] == V4L2_PIX_FMT_JPEG ||
+           ctx->cvd->dst_formats[0] == V4L2_PIX_FMT_JPEG) {
+               ctx->colorspace = V4L2_COLORSPACE_SRGB;
+               ctx->xfer_func = V4L2_XFER_FUNC_SRGB;
+               ctx->ycbcr_enc = V4L2_YCBCR_ENC_601;
+               ctx->quantization = V4L2_QUANTIZATION_FULL_RANGE;
+       } else {
                ctx->colorspace = V4L2_COLORSPACE_REC709;
-       ctx->xfer_func = V4L2_XFER_FUNC_DEFAULT;
-       ctx->ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT;
-       ctx->quantization = V4L2_QUANTIZATION_DEFAULT;
+               ctx->xfer_func = V4L2_XFER_FUNC_DEFAULT;
+               ctx->ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT;
+               ctx->quantization = V4L2_QUANTIZATION_DEFAULT;
+       }
        ctx->params.framerate = 30;
 
        /* Default formats for output and input queues */