History

Merge commit '1565cbc65cbb9f95c11367314a080068895e0cf0'

* commit '1565cbc65cbb9f95c11367314a080068895e0cf0': lavfi: make avfilter_free() remove the filter from its graph. Conflicts: libavfilter/avfilter.c libavfilter/avfiltergraph.c libavfilter/graphparser.c

Michael Niedermayer committed 13 years ago

Commit eb0f7742 parents 4fde705 1565cbc5 files · +32 −10Browse files

Showing the changes to libavfilter/avfiltergraph.c (1 of 5 files). Show all

Unified · Split

libavfilter/avfiltergraph.c+18−5
@@ -59,12 +59,27 @@ AVFilterGraph *avfilter_graph_alloc(void) · 58 unmodified lines
5959 return ret;
6060 }
6161
62+void ff_filter_graph_remove_filter(AVFilterGraph *graph, AVFilterContext *filter)
63+{
64+ int i;
65+ for (i = 0; i < graph->nb_filters; i++) {
66+ if (graph->filters[i] == filter) {
67+ FFSWAP(AVFilterContext*, graph->filters[i],
68+ graph->filters[graph->nb_filters - 1]);
69+ graph->nb_filters--;
70+ return;
71+ }
72+ }
73+}
74+
6275 void avfilter_graph_free(AVFilterGraph **graph)
6376 {
6477 if (!*graph)
6578 return;
66− for (; (*graph)->nb_filters > 0; (*graph)->nb_filters--)
67− avfilter_free((*graph)->filters[(*graph)->nb_filters - 1]);
79+
80+ while ((*graph)->nb_filters)
81+ avfilter_free((*graph)->filters[0]);
82+
6883 av_freep(&(*graph)->sink_links);
6984 av_freep(&(*graph)->scale_sws_opts);
7085 av_freep(&(*graph)->aresample_swr_opts);
@@ -103,10 +118,8 @@ int avfilter_graph_create_filter(AVFilterContext **filt_ctx, AVFilter *filt, · 32 unmodified lines
103118 *filt_ctx = avfilter_graph_alloc_filter(graph_ctx, filt, name);
104119 if (!*filt_ctx)
105120 return AVERROR(ENOMEM);
106− if ((ret = avfilter_init_filter(*filt_ctx, args, opaque)) < 0) {
107− graph_ctx->filters[graph_ctx->nb_filters-1] = NULL;
121+ if ((ret = avfilter_init_filter(*filt_ctx, args, opaque)) < 0)
108122 goto fail;
109− }
110123
111124 return 0;
112125

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