[FFmpeg-devel] [PATCH 1/2] avfilter/f_loop: fix video loop issues with 0 size or when size is bigger than input
Marton Balint
cus at passwd.hu
Fri May 24 23:45:33 EEST 2019
On Fri, 24 May 2019, Paul B Mahol wrote:
> 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
Thanks, applied the series.
Regards,
Marton
More information about the ffmpeg-devel
mailing list