lavfi/avfiltergraph: only return EOF in avfilter_graph_request_oldest if all sinks...
authorMarton Balint <cus@passwd.hu>
Fri, 5 May 2017 23:12:24 +0000 (01:12 +0200)
committerMarton Balint <cus@passwd.hu>
Sun, 7 May 2017 17:37:34 +0000 (19:37 +0200)
Fixes a regression introduced in 32c59a115d3cc757676b5384a5ea44b5a7a7b872,
becoming effective in 912969a33e313c57c906e87a7e2367b78a2160f4.

Fixes trimmed output of
ffmpeg -f lavfi -i "sine=d=0.01" -f lavfi -i "sine=d=1" -filter_complex "[0:a]anull[a1];[1:a]anull[a2]" -map "[a1]" -f null none -map "[a2]" -f framecrc -

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Marton Balint <cus@passwd.hu>
libavfilter/avfiltergraph.c

index f7fbf11..598e50a 100644 (file)
@@ -1399,10 +1399,13 @@ int avfilter_graph_request_oldest(AVFilterGraph *graph)
         oldest = graph->sink_links[0];
         if (oldest->dst->filter->activate) {
             /* For now, buffersink is the only filter implementing activate. */
-            return av_buffersink_get_frame_flags(oldest->dst, NULL,
-                                                 AV_BUFFERSINK_FLAG_PEEK);
+            r = av_buffersink_get_frame_flags(oldest->dst, NULL,
+                                              AV_BUFFERSINK_FLAG_PEEK);
+            if (r != AVERROR_EOF)
+                return r;
+        } else {
+            r = ff_request_frame(oldest);
         }
-        r = ff_request_frame(oldest);
         if (r != AVERROR_EOF)
             break;
         av_log(oldest->dst, AV_LOG_DEBUG, "EOF on sink link %s:%s.\n",