[FFmpeg-devel] [PATCH 4/7] avfilter/avfilter: simplify processing sinks without activate callback

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Tue Jun 17 02:54:40 EEST 2025


Marton Balint:
> 
> 
> On Tue, 17 Jun 2025, Andreas Rheinhardt wrote:
> 
>> Marton Balint:
>>> Sinks without an activate callback (nullsink, anullsink) could cause
>>> AVERROR(EAGAIN)-s in avfilter_graph_request_oldest() even when all
>>> the filter
>>> graphs inputs were in EOF state.
>>>
>>> Fixes ticket #11624.
>>> Fixes ticket #10988.
>>> Fixes ticket #10990.
>>>
>>> Signed-off-by: Marton Balint <cus at passwd.hu>
>>> ---
>>>  libavfilter/avfiltergraph.c | 38 ++++++++++++++++++-------------------
>>>  1 file changed, 18 insertions(+), 20 deletions(-)
>>>
>>> diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
>>> index 2d6036df74..6f9f46f1ea 100644
>>> --- a/libavfilter/avfiltergraph.c
>>> +++ b/libavfilter/avfiltergraph.c
>>> @@ -1423,12 +1423,26 @@ void
>>> ff_avfilter_graph_update_heap(AVFilterGraph *graph,
>>> FilterLinkInternal *li)
>>>      heap_bubble_down(graphi, li, li->age_index);
>>>  }
>>>
>>> +static int process_legacy_sink_output(FilterLinkInternal *oldesti)
>>
>> Why is considered legacy (instead of being just a different API)?
>>
> 
> The documentation calls it legacy:
> 
> doc/filtering_design:
> 
> "The design using filter_frame() and request_frame() is legacy, but it is
>  suitable for filters that have a single input and process one frame at a
>  time."
> 
> avfilter/avfilter.c:
> 
> "In order to activate a filter implementing the legacy filter_frame()
>  and request_frame() methods, perform the first possible of the following
>  actions:"
> 
> But if you have another name in mind for this, I can change it.
> 
Why not just call it the "simple" API?

- Andreas



More information about the ffmpeg-devel mailing list