diff options
author | Vitor Sessak <vitor1001@gmail.com> | 2008-04-04 20:06:13 +0000 |
---|---|---|
committer | Vitor Sessak <vitor1001@gmail.com> | 2008-04-04 20:06:13 +0000 |
commit | 1ac87cc890128fb1276610f6b9f23cfb0746fe6a (patch) | |
tree | ae82e0b796e6d4683969c6e583100a02a56e5dd6 /libavfilter | |
parent | fc27b8081ec79e58f3429a5d49e51fdc041f74ca (diff) | |
download | ffmpeg-1ac87cc890128fb1276610f6b9f23cfb0746fe6a.tar.gz |
Allow code to pass data to filters it creates.
Commited in SoC by Bobby Bingham on 2007-07-15 16:45:50
Originally committed as revision 12692 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavfilter')
-rw-r--r-- | libavfilter/avfiltergraph.c | 13 | ||||
-rw-r--r-- | libavfilter/avfiltergraph.h | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c index 034342a540..ac2fb00a08 100644 --- a/libavfilter/avfiltergraph.c +++ b/libavfilter/avfiltergraph.c @@ -56,7 +56,7 @@ void avfilter_graph_add_filter(AVFilterGraph *graph, AVFilterContext *filter) graph->filters[graph->filter_count - 1] = filter; } -static AVFilterContext *create_filter_with_args(const char *filt) +static AVFilterContext *create_filter_with_args(const char *filt, void *opaque) { AVFilterContext *ret; char *filter = av_strdup(filt); /* copy - don't mangle the input string */ @@ -75,7 +75,7 @@ static AVFilterContext *create_filter_with_args(const char *filt) name, args ? args : "(none)"); if((ret = avfilter_create_by_name(name, NULL))) { - if(avfilter_init_filter(ret, args)) { + if(avfilter_init_filter(ret, args, opaque)) { av_log(NULL, AV_LOG_ERROR, "error initializing filter!\n"); avfilter_destroy(ret); goto fail; @@ -90,14 +90,19 @@ fail: } int avfilter_graph_load_chain(AVFilterGraph *graph, - unsigned count, char **filter_list, + unsigned count, char **filter_list, void **opaque, AVFilterContext **first, AVFilterContext **last) { unsigned i; AVFilterContext *filters[2] = {NULL,NULL}; for(i = 0; i < count; i ++) { - if(!(filters[1] = create_filter_with_args(filter_list[i]))) + void *op; + + if(opaque) op = opaque[i]; + else op = NULL; + + if(!(filters[1] = create_filter_with_args(filter_list[i], op))) goto fail; if(i == 0) { if(first) *first = filters[1]; diff --git a/libavfilter/avfiltergraph.h b/libavfilter/avfiltergraph.h index 942b10685a..c5a0641b39 100644 --- a/libavfilter/avfiltergraph.h +++ b/libavfilter/avfiltergraph.h @@ -55,6 +55,6 @@ void avfilter_graph_add_filter(AVFilterGraph *graph, AVFilterContext *filter); * @return 0 on success. -1 on error. */ int avfilter_graph_load_chain(AVFilterGraph *graph, - unsigned count, char **filter_list, + unsigned count, char **filter_list, void **opaque, AVFilterContext **first, AVFilterContext **last); #endif /* FFMPEG_AVFILTER_H */ |