[Libav-user] avfilter_config_links() deprecated - what's an alternative way?

nolan d dnolan314159 at gmail.com
Wed Apr 23 14:05:44 EEST 2025


Hello there,

(This is my first post here, so forgive any setup errors.)

I've noticed that while upgrading to FFmpeg 7.1.1,
avfilter_config_links() and other stuff has been deprecated. And since
then, that function has been removed.

So, I'm seeking an alternative way to configure newly added
AVFilterContext instances, to an existing, already running
AVFilterGraph.

Here is our usage of libavfilter... (I don't think it is a unique usage.)

We're interfacing with C/C++ here.

As part of our video editing/exporting software, we have an audio
filter graph, with multiple filter chains. Those are then mixed
together using "amix" node and finally terminated with an
"abuffersink" node (and few other nodes before that).

The filter chains themselves are initially producing null samples
using "nullsrc" as the starting node (and some other nodes).

As we're processing the video editor timeline (and getting frames out
of the filtergraph), we on the fly, replace the filter chains to hold
samples from audio sources using "abuffersrc" (and some other) nodes.
And continue processing. And when we don't need that audio source, we
replace the filter chain back to produce null samples. And we can do
this for several audio sources as time progresses.

This way, we achieve, a continuous mixing of audio sources based on
our trims from the timeline in the video editor. So, we can have
hundreds of audio sources on the timeline, but only a few are mixing
at any time, with filter chains being replaced between "abuffer" and
"nullsrc" ones.

So, for this functionality, we remove older and create additional
filter nodes dynamically, and then configure the graph. And then
further configure all the nodes (using avfilter_config_links()) -
because the avfilter_graph_config() function doesn't configure the new
ones. If we don't configure the new links, we get crashes.

So, is there an alternative way to handle this type of mixing? Are we
doing sometime totally wrong or out of the ordinary?

Thanks,
Nolan


More information about the Libav-user mailing list