media: coda: jpeg: start streaming without valid header
authorPhilipp Zabel <p.zabel@pengutronix.de>
Wed, 6 Apr 2022 08:53:53 +0000 (09:53 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sun, 24 Apr 2022 07:47:42 +0000 (08:47 +0100)
Stop bailing out on JPEG header parsing errors during streamon.
This allows userspace to provide valid output buffers later and
fixes a v4l2-compliance streaming test failure:

fail: v4l2-test-buffers.cpp(1429): node->streamon(q.g_type())
test MMAP (no poll): FAIL

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 3eaf0e7..7b4942b 100644 (file)
@@ -1999,9 +1999,13 @@ static int coda_start_streaming(struct vb2_queue *q, unsigned int count)
                 */
                if (q_data_src->fourcc == V4L2_PIX_FMT_JPEG) {
                        buf = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
-                       ret = coda_jpeg_decode_header(ctx, &buf->vb2_buf);
-                       if (ret < 0)
-                               goto err;
+                       coda_jpeg_decode_header(ctx, &buf->vb2_buf);
+                       /*
+                        * We have to start streaming even if the first buffer
+                        * does not contain a valid JPEG image. The error will
+                        * be caught during device run and will be signalled
+                        * via the capture buffer error flag.
+                        */
 
                        q_data_dst = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE);
                        q_data_dst->width = round_up(q_data_src->width, 16);