[FFmpeg-devel] [PATCH 1/5] lavfi/buffersink: loop over ff_request_frame().

Paul B Mahol onemda at gmail.com
Fri Aug 28 11:22:51 CEST 2015


Dana 26. 8. 2015. 13:19 osoba "Nicolas George" <george at nsup.org> napisala
je:
>
> Do not assume that ff_request_frame() returning success
> implies a frame has arrived in the FIFO.
> Instead, just loop until a frame is in the FIFO.
> It does not change anything since the same loop is present
> in ff_request_frame(), confirmed by an assertion.
>
> Signed-off-by: Nicolas George <george at nsup.org>
> ---
>  libavfilter/buffersink.c | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c
> index 36b9e42..492e290 100644
> --- a/libavfilter/buffersink.c
> +++ b/libavfilter/buffersink.c
> @@ -133,7 +133,7 @@ int attribute_align_arg
av_buffersink_get_frame_flags(AVFilterContext *ctx, AVFr
>      AVFrame *cur_frame;
>
>      /* no picref available, fetch it from the filterchain */
> -    if (!av_fifo_size(buf->fifo)) {
> +    while (!av_fifo_size(buf->fifo)) {
>          if (inlink->closed)
>              return AVERROR_EOF;
>          if (flags & AV_BUFFERSINK_FLAG_NO_REQUEST)
> @@ -142,9 +142,6 @@ int attribute_align_arg
av_buffersink_get_frame_flags(AVFilterContext *ctx, AVFr
>              return ret;
>      }
>
> -    if (!av_fifo_size(buf->fifo))
> -        return AVERROR(EINVAL);
> -
>      if (flags & AV_BUFFERSINK_FLAG_PEEK) {
>          cur_frame = *((AVFrame **)av_fifo_peek2(buf->fifo, 0));
>          if ((ret = av_frame_ref(frame, cur_frame)) < 0)
> --
> 2.5.0

lgtm


More information about the ffmpeg-devel mailing list