OSDN Git Service

avfilter: add a pointer from links to graph.
authorNicolas George <nicolas.george@normalesup.org>
Thu, 19 Apr 2012 10:43:33 +0000 (12:43 +0200)
committerNicolas George <nicolas.george@normalesup.org>
Mon, 23 Apr 2012 12:13:40 +0000 (14:13 +0200)
libavfilter/avfilter.h
libavfilter/avfiltergraph.c

index f110623..b0b8cd0 100644 (file)
@@ -690,6 +690,12 @@ struct AVFilterLink {
     AVRational time_base;
 
     struct AVFilterPool *pool;
+
+    /**
+     * Graph the filter belongs to.
+     */
+    struct AVFilterGraph *graph;
+
 };
 
 /**
index 334d718..e46ace5 100644 (file)
@@ -374,6 +374,21 @@ int ff_avfilter_graph_config_formats(AVFilterGraph *graph, AVClass *log_ctx)
     return 0;
 }
 
+static void ff_avfilter_graph_config_pointers(AVFilterGraph *graph,
+                                              AVClass *log_ctx)
+{
+    unsigned i, j;;
+    AVFilterContext *f;
+
+    for (i = 0; i < graph->filter_count; i++) {
+        f = graph->filters[i];
+        for (j = 0; j < f->input_count; j++)
+            f->inputs[j]->graph = graph;
+        for (j = 0; j < f->output_count; j++)
+            f->outputs[j]->graph = graph;
+    }
+}
+
 int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx)
 {
     int ret;
@@ -384,6 +399,7 @@ int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx)
         return ret;
     if ((ret = ff_avfilter_graph_config_links(graphctx, log_ctx)))
         return ret;
+    ff_avfilter_graph_config_pointers(graphctx, log_ctx);
 
     return 0;
 }