Commit a658a122 authored by vitor's avatar vitor

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


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@12731 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 53a870b8
...@@ -488,11 +488,10 @@ int avfilter_graph_config_formats(AVFilterContext *graphctx) ...@@ -488,11 +488,10 @@ int avfilter_graph_config_formats(AVFilterContext *graphctx)
return 0; return 0;
} }
static int graph_load_from_desc(AVFilterContext *ctx, AVFilterGraphDesc *desc) static int graph_load_from_desc2(AVFilterContext *ctx, AVFilterGraphDesc *desc)
{ {
AVFilterGraphDescFilter *curfilt; AVFilterGraphDescFilter *curfilt;
AVFilterGraphDescLink *curlink; AVFilterGraphDescLink *curlink;
AVFilterGraphDescExport *curpad;
AVFilterContext *filt, *filtb; AVFilterContext *filt, *filtb;
AVFilter *filterdef; AVFilter *filterdef;
...@@ -533,6 +532,22 @@ static int graph_load_from_desc(AVFilterContext *ctx, AVFilterGraphDesc *desc) ...@@ -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 */ /* export all input pads */
for(curpad = desc->inputs; curpad; curpad = curpad->next) { for(curpad = desc->inputs; curpad; curpad = curpad->next) {
snprintf(tmp, 20, "%d", curpad->filter); snprintf(tmp, 20, "%d", curpad->filter);
...@@ -560,6 +575,49 @@ fail: ...@@ -560,6 +575,49 @@ fail:
return -1; 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) static int init(AVFilterContext *ctx, const char *args, void *opaque)
{ {
GraphContext *gctx = ctx->priv; GraphContext *gctx = ctx->priv;
......
...@@ -119,4 +119,9 @@ int avfilter_graph_config_formats(AVFilterContext *graphctx); ...@@ -119,4 +119,9 @@ int avfilter_graph_config_formats(AVFilterContext *graphctx);
*/ */
int avfilter_graph_config_links(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 */ #endif /* FFMPEG_AVFILTERGRAPH_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment