]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/avfilter.c
avfilter/vf_zoompan: remove AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC
[ffmpeg] / libavfilter / avfilter.c
index 08b86b010dc35ce7bc9920e86f86b076d80ac139..185ba8df00a3adc957d6a0750e49b6c5f703b94c 100644 (file)
@@ -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;