[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