media: imx-jpeg: Don't clear stop state in handling dynamic resolution change
authorMing Qian <ming.qian@nxp.com>
Tue, 26 Jul 2022 09:04:27 +0000 (17:04 +0800)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Fri, 30 Sep 2022 13:44:09 +0000 (15:44 +0200)
In dynamic resolution change, streamoff and streamon on the capture
queue may be called,
the V4L2_DEC_CMD_STOP cmd may be called before driver parsed the
jpeg header.
don't clear the stop state in streamoff of handling the
dynamic resolution change,
otherwise the drain may not complete.

Fixes: 4911c5acf9351 ("media: imx-jpeg: Implement drain using v4l2-mem2mem helpers")
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c

index 16af887a6e3c80d324784ef224f8f116cbd68f56..ce8a305e49fd9a58d6caac803f314b7489e57a0c 100644 (file)
@@ -1277,7 +1277,8 @@ static void mxc_jpeg_stop_streaming(struct vb2_queue *q)
                v4l2_m2m_buf_done(vbuf, VB2_BUF_STATE_ERROR);
        }
 
-       v4l2_m2m_update_stop_streaming_state(ctx->fh.m2m_ctx, q);
+       if (V4L2_TYPE_IS_OUTPUT(q->type) || !ctx->source_change)
+               v4l2_m2m_update_stop_streaming_state(ctx->fh.m2m_ctx, q);
        if (V4L2_TYPE_IS_OUTPUT(q->type) &&
            v4l2_m2m_has_stopped(ctx->fh.m2m_ctx)) {
                notify_eos(ctx);