Browse code

avfilter: add a pointer from links to graph.

Nicolas George authored on 2012/04/19 19:43:33
Showing 2 changed files
... ...
@@ -690,6 +690,12 @@ struct AVFilterLink {
690 690
     AVRational time_base;
691 691
 
692 692
     struct AVFilterPool *pool;
693
+
694
+    /**
695
+     * Graph the filter belongs to.
696
+     */
697
+    struct AVFilterGraph *graph;
698
+
693 699
 };
694 700
 
695 701
 /**
... ...
@@ -374,6 +374,21 @@ int ff_avfilter_graph_config_formats(AVFilterGraph *graph, AVClass *log_ctx)
374 374
     return 0;
375 375
 }
376 376
 
377
+static void ff_avfilter_graph_config_pointers(AVFilterGraph *graph,
378
+                                              AVClass *log_ctx)
379
+{
380
+    unsigned i, j;;
381
+    AVFilterContext *f;
382
+
383
+    for (i = 0; i < graph->filter_count; i++) {
384
+        f = graph->filters[i];
385
+        for (j = 0; j < f->input_count; j++)
386
+            f->inputs[j]->graph = graph;
387
+        for (j = 0; j < f->output_count; j++)
388
+            f->outputs[j]->graph = graph;
389
+    }
390
+}
391
+
377 392
 int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx)
378 393
 {
379 394
     int ret;
... ...
@@ -384,6 +399,7 @@ int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx)
384 384
         return ret;
385 385
     if ((ret = ff_avfilter_graph_config_links(graphctx, log_ctx)))
386 386
         return ret;
387
+    ff_avfilter_graph_config_pointers(graphctx, log_ctx);
387 388
 
388 389
     return 0;
389 390
 }