summaryrefslogtreecommitdiff
path: root/libavfilter/graphparser.c
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2011-06-11 15:30:46 +0200
committerStefano Sabatini <stefano.sabatini-lala@poste.it>2011-06-12 22:46:02 +0200
commitc535494268069282cc1147c4d61d4a88ce39e078 (patch)
treeb7aa99064bf1b577eae22eac07ba4fa361815cc5 /libavfilter/graphparser.c
parent6119b23a3662d1e106cdf69ef3171b2e7e1d495c (diff)
avfiltergraph: make the AVFilterInOut alloc/free API public
This is required for letting applications to create and destroy AVFilterInOut structs in a convenient way.
Diffstat (limited to 'libavfilter/graphparser.c')
-rw-r--r--libavfilter/graphparser.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c
index ea0c5dda7f..d62ba8d205 100644
--- a/libavfilter/graphparser.c
+++ b/libavfilter/graphparser.c
@@ -168,13 +168,18 @@ static int parse_filter(AVFilterContext **filt_ctx, const char **buf, AVFilterGr
return ret;
}
-static void free_inout(AVFilterInOut *head)
+AVFilterInOut *avfilter_inout_alloc(void)
{
- while (head) {
- AVFilterInOut *next = head->next;
- av_free(head->name);
- av_free(head);
- head = next;
+ return av_mallocz(sizeof(AVFilterInOut));
+}
+
+void avfilter_inout_free(AVFilterInOut **inout)
+{
+ while (*inout) {
+ AVFilterInOut *next = (*inout)->next;
+ av_freep(&(*inout)->name);
+ av_freep(inout);
+ *inout = next;
}
}
@@ -396,8 +401,8 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters,
for (; graph->filter_count > 0; graph->filter_count--)
avfilter_free(graph->filters[graph->filter_count - 1]);
av_freep(&graph->filters);
- free_inout(*open_inputs);
- free_inout(*open_outputs);
- free_inout(curr_inputs);
+ avfilter_inout_free(open_inputs);
+ avfilter_inout_free(open_outputs);
+ avfilter_inout_free(&curr_inputs);
return ret;
}