diff options
author | Anton Khirnov <anton@khirnov.net> | 2013-02-09 08:28:37 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2013-02-15 16:08:00 +0100 |
commit | ccd70d9c1689990e5aef2de383199bbc7cf60d13 (patch) | |
tree | 03a9ac6fea67f4fd8afb8ddcd6572ceaf3936021 /libavfilter/vf_yadif.c | |
parent | 3594554a064d76e3514fab9781c0e63ea9e08ea9 (diff) | |
download | ffmpeg-ccd70d9c1689990e5aef2de383199bbc7cf60d13.tar.gz |
vf_yadif: factorize initializing the filtering callbacks
Do it all in config_props().
Diffstat (limited to 'libavfilter/vf_yadif.c')
-rw-r--r-- | libavfilter/vf_yadif.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/libavfilter/vf_yadif.c b/libavfilter/vf_yadif.c index ae49013a70..280854093e 100644 --- a/libavfilter/vf_yadif.c +++ b/libavfilter/vf_yadif.c @@ -194,11 +194,6 @@ static int return_frame(AVFilterContext *ctx, int is_second) yadif->out->video->interlaced = 0; } - if (!yadif->csp) - yadif->csp = av_pix_fmt_desc_get(link->format); - if (yadif->csp->comp[0].depth_minus1 / 8 == 1) - yadif->filter_line = filter_line_c_16bit; - filter(ctx, yadif->out, tff ^ !is_second, tff); if (is_second) { @@ -374,17 +369,11 @@ static av_cold int init(AVFilterContext *ctx, const char *args) yadif->mode = 0; yadif->parity = -1; yadif->auto_enable = 0; - yadif->csp = NULL; if (args) sscanf(args, "%d:%d:%d", &yadif->mode, &yadif->parity, &yadif->auto_enable); - yadif->filter_line = filter_line_c; - - if (ARCH_X86) - ff_yadif_init_x86(yadif); - av_log(ctx, AV_LOG_VERBOSE, "mode:%d parity:%d auto_enable:%d\n", yadif->mode, yadif->parity, yadif->auto_enable); @@ -393,11 +382,23 @@ static av_cold int init(AVFilterContext *ctx, const char *args) static int config_props(AVFilterLink *link) { + YADIFContext *s = link->src->priv; + link->time_base.num = link->src->inputs[0]->time_base.num; link->time_base.den = link->src->inputs[0]->time_base.den * 2; link->w = link->src->inputs[0]->w; link->h = link->src->inputs[0]->h; + s->csp = av_pix_fmt_desc_get(link->format); + if (s->csp->comp[0].depth_minus1 / 8 == 1) { + s->filter_line = filter_line_c_16bit; + } else { + s->filter_line = filter_line_c; + + if (ARCH_X86) + ff_yadif_init_x86(s); + } + return 0; } |