[media] coda: default to h.264 decoder on invalid formats
authorPhilipp Zabel <p.zabel@pengutronix.de>
Fri, 18 Jul 2014 10:22:44 +0000 (07:22 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 21 Aug 2014 20:25:20 +0000 (15:25 -0500)
If the user provides an invalid format, let the decoder device
default to h.264.

Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/platform/coda.c

index 9493cfdb0ae690faeded66ec55ddfe46ea4784e7..b18814ebcd20cb24322cf8097e9fa46a51e39eea 100644 (file)
@@ -683,7 +683,7 @@ static int coda_try_fmt_vid_cap(struct file *file, void *priv,
                                struct v4l2_format *f)
 {
        struct coda_ctx *ctx = fh_to_ctx(priv);
-       struct coda_codec *codec;
+       struct coda_codec *codec = NULL;
        struct vb2_queue *src_vq;
        int ret;
 
@@ -736,6 +736,12 @@ static int coda_try_fmt_vid_out(struct file *file, void *priv,
        /* Determine codec by encoded format, returns NULL if raw or invalid */
        codec = coda_find_codec(ctx->dev, f->fmt.pix.pixelformat,
                                V4L2_PIX_FMT_YUV420);
+       if (!codec && ctx->inst_type == CODA_INST_DECODER) {
+               codec = coda_find_codec(ctx->dev, V4L2_PIX_FMT_H264,
+                                       V4L2_PIX_FMT_YUV420);
+               if (!codec)
+                       return -EINVAL;
+       }
 
        if (!f->fmt.pix.colorspace)
                f->fmt.pix.colorspace = V4L2_COLORSPACE_REC709;