[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