On Tue, 17. Mar 10:28, Ming Qian wrote: > Yes, I have meet some hang issue on nxp's imx platform. > On nxp's imx platform, there is a stream buffer in the v4l2 decoder driver. > So driver may cache some frames in driver, if without this patch, after the > draining is set to 1, the v4l2 capture buffer won't be enqueued to driver any > more, it leds to hang.
Did you try increasing the -num_capture_buffers option? It may solve your problem. There is currently a check that sets ctx->done=1 when all the capture buffers are dequeued (v4l2_context.c:300), and this patch would prevent it (although it's not needed if an eos event is received). Perhaps Mark/Aman could also comment? Thanks, Andriy > > ________________________________ > 发件人: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> 代表 Andriy Gelman > <andriy.gel...@gmail.com> > 发送时间: 2020年3月16日 20:07 > 收件人: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> > 主题: [EXT] Re: [FFmpeg-devel] [PATCH] avcodec/v4l2_buffers: don't prevent > enqueue capture buffer to driver > > Caution: EXT Email > > On Mon, 16. Mar 10:02, Ming Qian wrote: > > the draining is set when the output port is finished, > > but it doesn't mean the capture port is finished. > > especially for decoder, there may be a stream buffer to store several > > frames. > > so the decoder still need capture buffer even if the draining is set. > > > > Signed-off-by: Ming Qian <ming.q...@nxp.com> > > --- > > libavcodec/v4l2_buffers.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c > > index dc1b9eaf24..02f23d954b 100644 > > --- a/libavcodec/v4l2_buffers.c > > +++ b/libavcodec/v4l2_buffers.c > > @@ -222,7 +222,7 @@ static void v4l2_free_buffer(void *opaque, uint8_t > > *unused) > > if (!atomic_load(&s->refcount)) > > sem_post(&s->refsync); > > } else { > > - if (s->draining) { > > + if (s->draining && V4L2_TYPE_IS_OUTPUT(avbuf->context->type)) { > > /* no need to queue more buffers to the driver */ > > avbuf->status = V4L2BUF_AVAILABLE; > > } > > It makes sense, but did you have some dropped frames without this? > > Thanks, > -- > Andriy -- Andriy _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".