[FFmpeg-devel] [PATCH 2/8] avfilter: add a pointer from links to graph.

Nicolas George nicolas.george at normalesup.org
Fri Apr 20 12:31:41 CEST 2012


Signed-off-by: Nicolas George <nicolas.george at normalesup.org>
---
 libavfilter/avfilter.h      |    6 ++++++
 libavfilter/avfiltergraph.c |   16 ++++++++++++++++
 2 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 27849e2..5964397 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -690,6 +690,12 @@ struct AVFilterLink {
     AVRational time_base;
 
     struct AVFilterPool *pool;
+
+    /**
+     * Graph the filter belongs to.
+     */
+    struct AVFilterGraph *graph;
+
 };
 
 /**
diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 334d718..e46ace5 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -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;
 }
-- 
1.7.2.5



More information about the ffmpeg-devel mailing list