media: coda: wake up capture queue on encoder stop after output streamoff
authorPhilipp Zabel <p.zabel@pengutronix.de>
Mon, 17 Jul 2017 10:43:15 +0000 (06:43 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 19 Jul 2017 19:21:45 +0000 (15:21 -0400)
If an encoder stop command is issued after the output queue has already
stopped streaming, the qsequence counter has been reset to 0. Always
wake up the capture queue if the output queue is not streaming.

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@s-opensource.com>
drivers/media/platform/coda/coda-common.c

index 3f80fb3c3b43775268a3a6491a6f3814a9ca71d2..3992ef2bda42ffaa49aa2e4f7b3e2ad9ba71b3ff 100644 (file)
@@ -933,7 +933,7 @@ static int coda_encoder_cmd(struct file *file, void *fh,
        ctx->bit_stream_param |= CODA_BIT_STREAM_END_FLAG;
 
        /* If there is no buffer in flight, wake up */
-       if (ctx->qsequence == ctx->osequence) {
+       if (!ctx->streamon_out || ctx->qsequence == ctx->osequence) {
                dst_vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx,
                                         V4L2_BUF_TYPE_VIDEO_CAPTURE);
                dst_vq->last_buffer_dequeued = true;