diff options
author | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2011-06-11 15:30:46 +0200 |
---|---|---|
committer | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2011-06-12 22:46:02 +0200 |
commit | c535494268069282cc1147c4d61d4a88ce39e078 (patch) | |
tree | b7aa99064bf1b577eae22eac07ba4fa361815cc5 /libavfilter/graphparser.c | |
parent | 6119b23a3662d1e106cdf69ef3171b2e7e1d495c (diff) | |
download | ffmpeg-c535494268069282cc1147c4d61d4a88ce39e078.tar.gz |
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.c | 23 |
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; } |