History

lavfi: factorize freeing a link

Anton Khirnov committed 13 years ago

Commit d79bd601 parent 1dd35611 file · +21 −23Browse files

Showing the changes to libavfilter/avfilter.c (1 of 1 file). Show all

Unified · Split

libavfilter/avfilter.c+21−23
@@ -428,10 +428,28 @@ int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *in · 427 unmodified lines
428428 }
429429 #endif
430430
431+static void free_link(AVFilterLink *link)
432+{
433+ if (!link)
434+ return;
435+
436+ if (link->src)
437+ link->src->outputs[link->srcpad - link->src->output_pads] = NULL;
438+ if (link->dst)
439+ link->dst->inputs[link->dstpad - link->dst->input_pads] = NULL;
440+
441+ ff_formats_unref(&link->in_formats);
442+ ff_formats_unref(&link->out_formats);
443+ ff_formats_unref(&link->in_samplerates);
444+ ff_formats_unref(&link->out_samplerates);
445+ ff_channel_layouts_unref(&link->in_channel_layouts);
446+ ff_channel_layouts_unref(&link->out_channel_layouts);
447+ av_freep(&link);
448+}
449+
431450 void avfilter_free(AVFilterContext *filter)
432451 {
433452 int i;
434− AVFilterLink *link;
435453
436454 if (filter->graph)
437455 ff_filter_graph_remove_filter(filter->graph, filter);
@@ -440,30 +458,10 @@ void avfilter_free(AVFilterContext *filter) · 2 unmodified lines
440458 filter->filter->uninit(filter);
441459
442460 for (i = 0; i < filter->nb_inputs; i++) {
443− if ((link = filter->inputs[i])) {
444− if (link->src)
445− link->src->outputs[link->srcpad - link->src->output_pads] = NULL;
446− ff_formats_unref(&link->in_formats);
447− ff_formats_unref(&link->out_formats);
448− ff_formats_unref(&link->in_samplerates);
449− ff_formats_unref(&link->out_samplerates);
450− ff_channel_layouts_unref(&link->in_channel_layouts);
451− ff_channel_layouts_unref(&link->out_channel_layouts);
452− }
453− av_freep(&link);
461+ free_link(filter->inputs[i]);
454462 }
455463 for (i = 0; i < filter->nb_outputs; i++) {
456− if ((link = filter->outputs[i])) {
457− if (link->dst)
458− link->dst->inputs[link->dstpad - link->dst->input_pads] = NULL;
459− ff_formats_unref(&link->in_formats);
460− ff_formats_unref(&link->out_formats);
461− ff_formats_unref(&link->in_samplerates);
462− ff_formats_unref(&link->out_samplerates);
463− ff_channel_layouts_unref(&link->in_channel_layouts);
464− ff_channel_layouts_unref(&link->out_channel_layouts);
465− }
466− av_freep(&link);
464+ free_link(filter->outputs[i]);
467465 }
468466
469467 if (filter->filter->priv_class)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t