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
This commit is contained in:
@@ -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)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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:
|
|||||||
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);
|
|||||||
*/
|
*/
|
||||||
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 */
|
||||||
|
Reference in New Issue
Block a user