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.
This commit is contained in:
Nicolas George 2016-12-23 11:18:09 +01:00
parent 0ed4993ad0
commit 373f21a911
1 changed files with 5 additions and 1 deletions

View File

@ -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;