Allow code to pass data to filters it creates.
authorVitor Sessak <vitor1001@gmail.com>
Fri, 4 Apr 2008 20:06:13 +0000 (20:06 +0000)
committerVitor Sessak <vitor1001@gmail.com>
Fri, 4 Apr 2008 20:06:13 +0000 (20:06 +0000)
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

libavfilter/avfiltergraph.c
libavfilter/avfiltergraph.h

index 034342a..ac2fb00 100644 (file)
@@ -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];
index 942b106..c5a0641 100644 (file)
@@ -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 */