[SCM] libav/experimental: Split graph_load_from_dest() to have a version independent of avfilter_vf_graph Commited in SoC by Vitor Sessak on 2008-03-24 19:19:38

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:18:25 UTC 2013


The following commit has been merged in the experimental branch:
commit 45a09319b2d780bd206701bed13cc8993ce76228
Author: Vitor Sessak <vitor1001 at gmail.com>
Date:   Fri Apr 4 20:08:40 2008 +0000

    Split graph_load_from_dest() to have a version independent of avfilter_vf_graph
    Commited in SoC by Vitor Sessak on 2008-03-24 19:19:38
    
    Originally committed as revision 12731 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index aea6c69..f92ccf3 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -488,11 +488,10 @@ int avfilter_graph_config_formats(AVFilterContext *graphctx)
     return 0;
 }
 
-static int graph_load_from_desc(AVFilterContext *ctx, AVFilterGraphDesc *desc)
+static int graph_load_from_desc2(AVFilterContext *ctx, AVFilterGraphDesc *desc)
 {
     AVFilterGraphDescFilter *curfilt;
     AVFilterGraphDescLink   *curlink;
-    AVFilterGraphDescExport *curpad;
     AVFilterContext *filt, *filtb;
 
     AVFilter *filterdef;
@@ -533,6 +532,22 @@ static int graph_load_from_desc(AVFilterContext *ctx, AVFilterGraphDesc *desc)
         }
     }
 
+    return 0;
+
+fail:
+    uninit(ctx);
+    return -1;
+}
+
+static int graph_load_from_desc(AVFilterContext *ctx, AVFilterGraphDesc *desc)
+{
+    AVFilterGraphDescExport *curpad;
+    char tmp[20];
+    AVFilterContext *filt;
+
+    if (graph_load_from_desc2(ctx, desc) < 0)
+        goto fail;
+
     /* export all input pads */
     for(curpad = desc->inputs; curpad; curpad = curpad->next) {
         snprintf(tmp, 20, "%d", curpad->filter);
@@ -560,6 +575,49 @@ fail:
     return -1;
 }
 
+int graph_load_from_desc3(AVFilterContext *ctx, AVFilterGraphDesc *desc, AVFilterContext *in, int inpad, AVFilterContext *out, int outpad)
+{
+    AVFilterGraphDescExport *curpad;
+    char tmp[20];
+    AVFilterContext *filt;
+
+    if (graph_load_from_desc2(ctx, desc) < 0)
+        goto fail;
+
+    /* export all input pads */
+    for(curpad = desc->inputs; curpad; curpad = curpad->next) {
+        snprintf(tmp, 20, "%d", curpad->filter);
+        if(!(filt = avfilter_graph_get_filter(ctx, tmp))) {
+            av_log(ctx, AV_LOG_ERROR, "filter owning exported pad does not exist\n");
+            goto fail;
+        }
+        if(avfilter_link(in, inpad, filt, curpad->pad)) {
+            av_log(ctx, AV_LOG_ERROR, "cannot create link between source and destination filters\n");
+            goto fail;
+        }
+    }
+
+    /* export all output pads */
+    for(curpad = desc->outputs; curpad; curpad = curpad->next) {
+        snprintf(tmp, 20, "%d", curpad->filter);
+        if(!(filt = avfilter_graph_get_filter(ctx, tmp))) {
+            av_log(ctx, AV_LOG_ERROR, "filter owning exported pad does not exist\n");
+            goto fail;
+        }
+
+        if(avfilter_link(filt, curpad->pad, out, outpad)) {
+            av_log(ctx, AV_LOG_ERROR, "cannot create link between source and destination filters\n");
+            goto fail;
+        }
+    }
+
+    return 0;
+
+fail:
+    uninit(ctx);
+    return -1;
+}
+
 static int init(AVFilterContext *ctx, const char *args, void *opaque)
 {
     GraphContext *gctx = ctx->priv;
diff --git a/libavfilter/avfiltergraph.h b/libavfilter/avfiltergraph.h
index 5fc60dc..185ef31 100644
--- a/libavfilter/avfiltergraph.h
+++ b/libavfilter/avfiltergraph.h
@@ -119,4 +119,9 @@ int avfilter_graph_config_formats(AVFilterContext *graphctx);
  */
 int avfilter_graph_config_links(AVFilterContext *graphctx);
 
+
+int graph_load_from_desc3(AVFilterContext *ctx, AVFilterGraphDesc *desc,
+                          AVFilterContext *in, int inpad,
+                          AVFilterContext *out, int outpad);
+
 #endif  /* FFMPEG_AVFILTERGRAPH_H */

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list