[FFmpeg-devel] [PATCH 1/2] avfilter/f_loop: fix video loop issues with 0 size or when size is bigger than input

Paul B Mahol onemda at gmail.com
Fri May 24 11:00:23 EEST 2019


On 5/23/19, Marton Balint <cus at passwd.hu> wrote:
> Fixes infinte loop with -vf loop=loop=1 and also fixes looping when the
> input
> is less frames than the specified loop size.
>
> Possible regressions since ef1aadffc785b48ed62c45d954289e754f43ef46.
>
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
>  libavfilter/f_loop.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/libavfilter/f_loop.c b/libavfilter/f_loop.c
> index d9d55f9837..fcbd742eb4 100644
> --- a/libavfilter/f_loop.c
> +++ b/libavfilter/f_loop.c
> @@ -343,7 +343,7 @@ static int activate(AVFilterContext *ctx)
>
>      FF_FILTER_FORWARD_STATUS_BACK(outlink, inlink);
>
> -    if (!s->eof && (s->nb_frames < s->size || !s->loop)) {
> +    if (!s->eof && (s->nb_frames < s->size || !s->loop || !s->size)) {
>          ret = ff_inlink_consume_frame(inlink, &frame);
>          if (ret < 0)
>              return ret;
> @@ -352,11 +352,13 @@ static int activate(AVFilterContext *ctx)
>      }
>
>      if (!s->eof && ff_inlink_acknowledge_status(inlink, &status, &pts)) {
> -        if (status == AVERROR_EOF)
> +        if (status == AVERROR_EOF) {
> +            s->size = s->nb_frames;
>              s->eof = 1;
> +        }
>      }
>
> -    if (s->eof && (s->loop == 0 || s->nb_frames < s->size)) {
> +    if (s->eof && (!s->loop || !s->size)) {
>          ff_outlink_set_status(outlink, AVERROR_EOF, s->duration);
>          return 0;
>      }
> --
> 2.16.4
>

lgtm

> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list