X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Favfilter.c;h=185ba8df00a3adc957d6a0750e49b6c5f703b94c;hb=aa26258faa9704b144dfe5bc5d263a1332d7a9dd;hp=08b86b010dc35ce7bc9920e86f86b076d80ac139;hpb=a0ffd66caaae1bff1abebffb36e135abcc8122e6;p=ffmpeg diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 08b86b010dc..185ba8df00a 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -1191,7 +1191,7 @@ static int take_samples(AVFilterLink *link, unsigned min, unsigned max, called with enough samples. */ av_assert1(samples_ready(link, link->min_samples)); frame0 = frame = ff_framequeue_peek(&link->fifo, 0); - if (frame->nb_samples >= min && frame->nb_samples < max) { + if (!link->fifo.samples_skipped && frame->nb_samples >= min && frame->nb_samples <= max) { *rframe = ff_framequeue_take(&link->fifo); return 0; } @@ -1304,8 +1304,6 @@ static int forward_status_change(AVFilterContext *filter, AVFilterLink *in) return 0; } -#define FFERROR_NOT_READY FFERRTAG('N','R','D','Y') - static int ff_filter_activate_default(AVFilterContext *filter) { unsigned i; @@ -1522,6 +1520,12 @@ int ff_inlink_consume_frame(AVFilterLink *link, AVFrame **rframe) *rframe = NULL; if (!ff_inlink_check_available_frame(link)) return 0; + + if (link->fifo.samples_skipped) { + frame = ff_framequeue_peek(&link->fifo, 0); + return ff_inlink_consume_samples(link, frame->nb_samples, frame->nb_samples, rframe); + } + frame = ff_framequeue_take(&link->fifo); consume_update(link, frame); *rframe = frame;