summaryrefslogtreecommitdiff
path: root/libavfilter/avfilter.c
diff options
context:
space:
mode:
authorVitor Sessak <vitor1001@gmail.com>2008-02-15 21:35:53 +0000
committerVitor Sessak <vitor1001@gmail.com>2008-02-15 21:35:53 +0000
commit102fb0e3ac5048c27a1ca319dba60a99155a7ced (patch)
treebb4bab7961bd6ad804fc7aac5435ad7246ae7fe2 /libavfilter/avfilter.c
parentba6b903510b23ea2721c101ac4989a32469dbdcd (diff)
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.c34
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;
}