Browse Source

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.
tags/n3.3
Nicolas George 8 years ago
parent
commit
373f21a911
1 changed files with 5 additions and 1 deletions
  1. +5
    -1
      libavfilter/avfiltergraph.c

+ 5
- 1
libavfilter/avfiltergraph.c 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;


Loading…
Cancel
Save