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

Marton Balint cus at passwd.hu
Tue Jun 17 23:07:37 EEST 2025



On Tue, 17 Jun 2025, Andreas Rheinhardt wrote:

> 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?

Ok, changed locally the function name to process_simple_api_sink().

Regards,
Marton


More information about the ffmpeg-devel mailing list