summaryrefslogtreecommitdiff
path: root/libavfilter/vf_bwdif.c
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2024-01-25 23:08:52 +0100
committerMarton Balint <cus@passwd.hu>2024-02-04 20:04:18 +0100
commit268062fa15e1c05310f9c3977e0b95ac07eca274 (patch)
tree17aaed78d569ee7981ee1c086d3700029ef99581 /libavfilter/vf_bwdif.c
parent8fccd6d510fe802c7d2dbe291676b0780cd4cf7f (diff)
avfilter/yadif_common: factorize some part of the config_output and the uninit functions
This unifies slightly diverged code and ensures that cc_fifo is always initialized. Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavfilter/vf_bwdif.c')
-rw-r--r--libavfilter/vf_bwdif.c30
1 files changed, 4 insertions, 26 deletions
diff --git a/libavfilter/vf_bwdif.c b/libavfilter/vf_bwdif.c
index 353cd0b61a..9042db8d7f 100644
--- a/libavfilter/vf_bwdif.c
+++ b/libavfilter/vf_bwdif.c
@@ -137,17 +137,6 @@ static void filter(AVFilterContext *ctx, AVFrame *dstpic,
}
}
-static av_cold void uninit(AVFilterContext *ctx)
-{
- BWDIFContext *bwdif = ctx->priv;
- YADIFContext *yadif = &bwdif->yadif;
-
- av_frame_free(&yadif->prev);
- av_frame_free(&yadif->cur );
- av_frame_free(&yadif->next);
- ff_ccfifo_uninit(&yadif->cc_fifo);
-}
-
static const enum AVPixelFormat pix_fmts[] = {
AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUV420P,
AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P,
@@ -176,20 +165,9 @@ static int config_props(AVFilterLink *link)
YADIFContext *yadif = &s->yadif;
int ret;
- link->time_base = av_mul_q(ctx->inputs[0]->time_base, (AVRational){1, 2});
- link->w = link->src->inputs[0]->w;
- link->h = link->src->inputs[0]->h;
-
- if(yadif->mode&1)
- link->frame_rate = av_mul_q(link->src->inputs[0]->frame_rate, (AVRational){2,1});
- else
- link->frame_rate = ctx->inputs[0]->frame_rate;
-
- ret = ff_ccfifo_init(&yadif->cc_fifo, link->frame_rate, ctx);
- if (ret < 0 ) {
- av_log(ctx, AV_LOG_ERROR, "Failure to setup CC FIFO queue\n");
- return ret;
- }
+ ret = ff_yadif_config_output_common(link);
+ if (ret < 0)
+ return AVERROR(EINVAL);
yadif->csp = av_pix_fmt_desc_get(link->format);
yadif->filter = filter;
@@ -251,7 +229,7 @@ const AVFilter ff_vf_bwdif = {
.description = NULL_IF_CONFIG_SMALL("Deinterlace the input image."),
.priv_size = sizeof(BWDIFContext),
.priv_class = &bwdif_class,
- .uninit = uninit,
+ .uninit = ff_yadif_uninit,
FILTER_INPUTS(avfilter_vf_bwdif_inputs),
FILTER_OUTPUTS(avfilter_vf_bwdif_outputs),
FILTER_PIXFMTS_ARRAY(pix_fmts),