[FFmpeg-cvslog] lavfi: avfilter_graph_request_oldest: request a frame again before returning.

Nicolas George git at videolan.org
Fri Dec 23 16:28:05 EET 2016


ffmpeg | branch: master | Nicolas George <george at nsup.org> | Fri Dec 23 11:18:09 2016 +0100| [373f21a91126d052cd310d675f43f548a407649e] | committer: Nicolas George

lavfi: avfilter_graph_request_oldest: request a frame again before returning.

With min_samples, if a frame arrives but is too small, it clears
frame_wanted_out. In most cases, the destination filter would be
activated again later because of frame_wanted_out on its own
outputs, but not sinks.
avfilter_graph_request_oldest() is doing the work of the sink
itself, and is therefore allowed to use frame_blocked_in.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=373f21a91126d052cd310d675f43f548a407649e
---

 libavfilter/avfiltergraph.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 6b5a6f3..cb5d618 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -1407,7 +1407,11 @@ int avfilter_graph_request_oldest(AVFilterGraph *graph)
     frame_count = oldest->frame_count_out;
     while (frame_count == oldest->frame_count_out) {
         r = ff_filter_graph_run_once(graph);
-        if (r < 0)
+        if (r == AVERROR(EAGAIN) &&
+            !oldest->frame_wanted_out && !oldest->frame_blocked_in &&
+            !oldest->status_in)
+            ff_request_frame(oldest);
+        else if (r < 0)
             return r;
     }
     return 0;



More information about the ffmpeg-cvslog mailing list