aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter/avfilter.c
diff options
context:
space:
mode:
authorVitor Sessak <vitor1001@gmail.com>2008-02-15 21:39:19 +0000
committerVitor Sessak <vitor1001@gmail.com>2008-02-15 21:39:19 +0000
commit52362e9dc1e098441be5df837aa547fa31c1263e (patch)
tree2504472f7e005b4c7af4b68e4622dded7c39fb74 /libavfilter/avfilter.c
parent4ea0ab3c39331f5fb059a22b143a4142b79798f7 (diff)
downloadffmpeg-52362e9dc1e098441be5df837aa547fa31c1263e.tar.gz
Make filter auto-insertion code its own function.
Commited in SoC by Bobby Bingham on 2007-11-04 22:03:14 Originally committed as revision 12026 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavfilter/avfilter.c')
-rw-r--r--libavfilter/avfilter.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index 216a5fb109..f82e9145d5 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -108,6 +108,27 @@ static int common_format(int *fmts0, int *fmts1)
return -1;
}
+int avfilter_insert_filter(AVFilterLink *link, AVFilterContext *filt,
+ unsigned in, unsigned out)
+{
+ av_log(NULL, AV_LOG_INFO, "auto-inserting filter '%s'\n",
+ filt->filter->name);
+
+ link->dst->inputs[link->dstpad] = NULL;
+ if(avfilter_link(filt, out, link->dst, link->dstpad)) {
+ /* failed to link output filter to new filter */
+ link->dst->inputs[link->dstpad] = link;
+ return -1;
+ }
+
+ /* re-hookup the link to the new destination filter we inserted */
+ link->dst = filt;
+ link->dstpad = in;
+ filt->inputs[in] = link;
+
+ return 0;
+}
+
int avfilter_config_link(AVFilterLink *link)
{
int *fmts[3] = {NULL,NULL,NULL};
@@ -133,16 +154,9 @@ int avfilter_config_link(AVFilterLink *link)
avfilter_destroy(scale);
goto format_done;
}
-
- link->dst->inputs[link->dstpad] = NULL;
- if(avfilter_link(scale, 0, link->dst, link->dstpad)) {
- link->dst->inputs[link->dstpad] = link;
+ if(avfilter_insert_filter(link, scale, 0, 0))
goto format_done;
- }
link2 = scale->outputs[0];
- link->dst = scale;
- link->dstpad = 0;
- scale->inputs[0] = link;
/* now try again to find working colorspaces.
* XXX: is it safe to assume that the scale filter always supports the