mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-02 04:52:09 +00:00
lavfi: factorize freeing a link
This commit is contained in:
parent
1dd3561143
commit
d79bd60405
@ -428,10 +428,28 @@ int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *in
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void free_link(AVFilterLink *link)
|
||||||
|
{
|
||||||
|
if (!link)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (link->src)
|
||||||
|
link->src->outputs[link->srcpad - link->src->output_pads] = NULL;
|
||||||
|
if (link->dst)
|
||||||
|
link->dst->inputs[link->dstpad - link->dst->input_pads] = NULL;
|
||||||
|
|
||||||
|
ff_formats_unref(&link->in_formats);
|
||||||
|
ff_formats_unref(&link->out_formats);
|
||||||
|
ff_formats_unref(&link->in_samplerates);
|
||||||
|
ff_formats_unref(&link->out_samplerates);
|
||||||
|
ff_channel_layouts_unref(&link->in_channel_layouts);
|
||||||
|
ff_channel_layouts_unref(&link->out_channel_layouts);
|
||||||
|
av_freep(&link);
|
||||||
|
}
|
||||||
|
|
||||||
void avfilter_free(AVFilterContext *filter)
|
void avfilter_free(AVFilterContext *filter)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
AVFilterLink *link;
|
|
||||||
|
|
||||||
if (filter->graph)
|
if (filter->graph)
|
||||||
ff_filter_graph_remove_filter(filter->graph, filter);
|
ff_filter_graph_remove_filter(filter->graph, filter);
|
||||||
@ -440,30 +458,10 @@ void avfilter_free(AVFilterContext *filter)
|
|||||||
filter->filter->uninit(filter);
|
filter->filter->uninit(filter);
|
||||||
|
|
||||||
for (i = 0; i < filter->nb_inputs; i++) {
|
for (i = 0; i < filter->nb_inputs; i++) {
|
||||||
if ((link = filter->inputs[i])) {
|
free_link(filter->inputs[i]);
|
||||||
if (link->src)
|
|
||||||
link->src->outputs[link->srcpad - link->src->output_pads] = NULL;
|
|
||||||
ff_formats_unref(&link->in_formats);
|
|
||||||
ff_formats_unref(&link->out_formats);
|
|
||||||
ff_formats_unref(&link->in_samplerates);
|
|
||||||
ff_formats_unref(&link->out_samplerates);
|
|
||||||
ff_channel_layouts_unref(&link->in_channel_layouts);
|
|
||||||
ff_channel_layouts_unref(&link->out_channel_layouts);
|
|
||||||
}
|
|
||||||
av_freep(&link);
|
|
||||||
}
|
}
|
||||||
for (i = 0; i < filter->nb_outputs; i++) {
|
for (i = 0; i < filter->nb_outputs; i++) {
|
||||||
if ((link = filter->outputs[i])) {
|
free_link(filter->outputs[i]);
|
||||||
if (link->dst)
|
|
||||||
link->dst->inputs[link->dstpad - link->dst->input_pads] = NULL;
|
|
||||||
ff_formats_unref(&link->in_formats);
|
|
||||||
ff_formats_unref(&link->out_formats);
|
|
||||||
ff_formats_unref(&link->in_samplerates);
|
|
||||||
ff_formats_unref(&link->out_samplerates);
|
|
||||||
ff_channel_layouts_unref(&link->in_channel_layouts);
|
|
||||||
ff_channel_layouts_unref(&link->out_channel_layouts);
|
|
||||||
}
|
|
||||||
av_freep(&link);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filter->filter->priv_class)
|
if (filter->filter->priv_class)
|
||||||
|
Loading…
Reference in New Issue
Block a user