Browse Source

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
tags/v0.5
Vitor Sessak 17 years ago
parent
commit
102fb0e3ac
1 changed files with 31 additions and 3 deletions
  1. +31
    -3
      libavfilter/avfilter.c

+ 31
- 3
libavfilter/avfilter.c View File

@@ -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;
}



Loading…
Cancel
Save