media: coda: set colorimetry on coded queue
authorPhilipp Zabel <p.zabel@pengutronix.de>
Fri, 27 Apr 2018 16:19:17 +0000 (12:19 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 9 May 2018 20:23:33 +0000 (16:23 -0400)
Do not set context colorimetry on the raw (OUTPUT) queue for encoders.
Always set colorimetry on the coded queue (CAPTURE for encoders, OUTPUT
for decoders).
This also skips propagation of capture queue format and selection
rectangle on S_FMT(OUTPUT) to the CAPTURE queue for encoders.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/coda/coda-common.c

index d3e22c14fad48d5fbb1b34eda77d023fc9317a7d..c7631e117dd318fd52a82c2ef72e4e2e2a756711 100644 (file)
@@ -779,7 +779,19 @@ static int coda_s_fmt_vid_cap(struct file *file, void *priv,
        r.width = q_data_src->width;
        r.height = q_data_src->height;
 
-       return coda_s_fmt(ctx, f, &r);
+       ret = coda_s_fmt(ctx, f, &r);
+       if (ret)
+               return ret;
+
+       if (ctx->inst_type != CODA_INST_ENCODER)
+               return 0;
+
+       ctx->colorspace = f->fmt.pix.colorspace;
+       ctx->xfer_func = f->fmt.pix.xfer_func;
+       ctx->ycbcr_enc = f->fmt.pix.ycbcr_enc;
+       ctx->quantization = f->fmt.pix.quantization;
+
+       return 0;
 }
 
 static int coda_s_fmt_vid_out(struct file *file, void *priv,
@@ -798,6 +810,9 @@ static int coda_s_fmt_vid_out(struct file *file, void *priv,
        if (ret)
                return ret;
 
+       if (ctx->inst_type != CODA_INST_DECODER)
+               return 0;
+
        ctx->colorspace = f->fmt.pix.colorspace;
        ctx->xfer_func = f->fmt.pix.xfer_func;
        ctx->ycbcr_enc = f->fmt.pix.ycbcr_enc;