mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avfilter/f_loop: fix video loop issues with 0 size or when size is bigger than input
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 ef1aadffc7
.
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
f811ac5228
commit
87e0247a6c
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user