diff options
author | Vitor Sessak <vitor1001@gmail.com> | 2008-02-15 21:35:53 +0000 |
---|---|---|
committer | Vitor Sessak <vitor1001@gmail.com> | 2008-02-15 21:35:53 +0000 |
commit | 102fb0e3ac5048c27a1ca319dba60a99155a7ced (patch) | |
tree | bb4bab7961bd6ad804fc7aac5435ad7246ae7fe2 /libavfilter/avfilter.c | |
parent | ba6b903510b23ea2721c101ac4989a32469dbdcd (diff) | |
download | ffmpeg-102fb0e3ac5048c27a1ca319dba60a99155a7ced.tar.gz |
Provide some default functions to simplify the implementation of common one
input one output video filters.
Commited in SoC by Bobby Bingham on 2007-07-06 15:25:52
Originally committed as revision 11976 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavfilter/avfilter.c')
-rw-r--r-- | libavfilter/avfilter.c | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index efc5ba637f..8e880fb155 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -88,6 +88,25 @@ void avfilter_unref_pic(AVFilterPicRef *ref) av_free(ref); } +/** + * default config_link() implementation for output video links to simplify + * the implementation of one input one output video filters */ +static int default_config_output_link(AVFilterLink *link) +{ + link->w = link->src->inputs[0]->w; + link->h = link->src->inputs[0]->h; + + return 0; +} + +/** + * default query_formats() implementation for output video links to simplify + * the implementation of one input one output video filters */ +static int *default_query_output_formats(AVFilterLink *link) +{ + return avfilter_make_format_list(1, link->src->inputs[0]->format); +} + int avfilter_link(AVFilterContext *src, unsigned srcpad, AVFilterContext *dst, unsigned dstpad) { @@ -107,7 +126,10 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad, link->cur_pic = NULL; /* find a format both filters support - TODO: auto-insert conversion filter */ - fmts[0] = src->filter->outputs[srcpad].query_formats(link); + if(src->filter->outputs[srcpad].query_formats) + fmts[0] = src->filter->outputs[srcpad].query_formats(link); + else + fmts[0] = default_query_output_formats(link); fmts[1] = dst->filter-> inputs[dstpad].query_formats(link); for(i = 0; fmts[0][i] != -1; i ++) for(j = 0; fmts[1][j] != -1; j ++) @@ -127,8 +149,14 @@ format_done: return -1; } - src->filter->outputs[srcpad].config_props(link); - dst->filter-> inputs[dstpad].config_props(link); + if (src->filter->outputs[srcpad].config_props) + src->filter->outputs[srcpad].config_props(link); + else + default_config_output_link(link); + + if (dst->filter->inputs[dstpad].config_props) + dst->filter->inputs[dstpad].config_props(link); + return 0; } |