summaryrefslogtreecommitdiff
path: root/libavfilter/avfiltergraph.c
diff options
context:
space:
mode:
authorVitor Sessak <vitor1001@gmail.com>2008-04-04 20:06:13 +0000
committerVitor Sessak <vitor1001@gmail.com>2008-04-04 20:06:13 +0000
commit1ac87cc890128fb1276610f6b9f23cfb0746fe6a (patch)
treeae82e0b796e6d4683969c6e583100a02a56e5dd6 /libavfilter/avfiltergraph.c
parentfc27b8081ec79e58f3429a5d49e51fdc041f74ca (diff)
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/avfiltergraph.c')
-rw-r--r--libavfilter/avfiltergraph.c13
1 files changed, 9 insertions, 4 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];