[FFmpeg-devel] [EXT] [PATCH 2/2] avcodec/v4l2_context: Finish draining if V4L2_BUF_FLAG_LAST is set

Ming Qian ming.qian at nxp.com
Thu Apr 30 04:40:43 EEST 2020


> From: Andriy Gelman <andriy.gelman at gmail.com>
> 
> V4L2 api can indicate that flushing of the capture buffers is completed by
> setting the V4L2_BUF_FLAG_LAST flag.
> Use guards because the flag was only defined in Linux v4.2.
> 
> Reference:
> linux/Documentation/media/uapi/v4l/dev-decoder.rst
> 
>     "The client must continue to handle both queues independently,
>      similarly to normal decode operation. This includes:
>      ...
>      - queuing and dequeuing CAPTURE buffers, until a buffer marked with
>        the V4L2_BUF_FLAG_LAST flag is dequeued"
> 
> Signed-off-by: Andriy Gelman <andriy.gelman at gmail.com>
> ---
>  libavcodec/v4l2_context.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c index
> f0ecc18ebd..da802405e4 100644
> --- a/libavcodec/v4l2_context.c
> +++ b/libavcodec/v4l2_context.c
> @@ -400,6 +400,10 @@ dequeue:
>                  ctx->done = 1;
>                  return NULL;
>              }
> +#ifdef V4L2_BUF_FLAG_LAST
> +            if (buf.flags & V4L2_BUF_FLAG_LAST)
> +                ctx->done = 1;
> +#endif
>          }
> 
>          avbuf = &ctx->buffers[buf.index];
> --
> 2.25.1
> 

Lgtm


More information about the ffmpeg-devel mailing list