Browse Source

Merge commit 'd79bd6040599ef017dc45d5997fcc959ab1f71f6'

* commit 'd79bd6040599ef017dc45d5997fcc959ab1f71f6':
  lavfi: factorize freeing a link

Conflicts:
	libavfilter/avfilter.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.0
Michael Niedermayer 12 years ago
parent
commit
fb8dde37e4
1 changed files with 21 additions and 23 deletions
  1. +21
    -23
      libavfilter/avfilter.c

+ 21
- 23
libavfilter/avfilter.c View File

@@ -622,10 +622,28 @@ int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *in
}
#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);
avfilter_link_free(&link);
}

void avfilter_free(AVFilterContext *filter)
{
int i;
AVFilterLink *link;

if (!filter)
return;
@@ -637,30 +655,10 @@ void avfilter_free(AVFilterContext *filter)
filter->filter->uninit(filter);

for (i = 0; i < filter->nb_inputs; i++) {
if ((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);
}
avfilter_link_free(&link);
free_link(filter->inputs[i]);
}
for (i = 0; i < filter->nb_outputs; i++) {
if ((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);
}
avfilter_link_free(&link);
free_link(filter->outputs[i]);
}

if (filter->filter->priv_class)


Loading…
Cancel
Save