Commit 30fe3fd5 authored by Michael Niedermayer's avatar Michael Niedermayer

avfilter/vf_decimate: Check that input parameters match

Fixes Ticket4964
Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
parent 22e960ad
...@@ -362,6 +362,8 @@ static int config_output(AVFilterLink *outlink) ...@@ -362,6 +362,8 @@ static int config_output(AVFilterLink *outlink)
DecimateContext *dm = ctx->priv; DecimateContext *dm = ctx->priv;
const AVFilterLink *inlink = const AVFilterLink *inlink =
ctx->inputs[dm->ppsrc ? INPUT_CLEANSRC : INPUT_MAIN]; ctx->inputs[dm->ppsrc ? INPUT_CLEANSRC : INPUT_MAIN];
const AVFilterLink *inlink_main =
ctx->inputs[INPUT_MAIN];
AVRational fps = inlink->frame_rate; AVRational fps = inlink->frame_rate;
if (!fps.num || !fps.den) { if (!fps.num || !fps.den) {
...@@ -369,6 +371,13 @@ static int config_output(AVFilterLink *outlink) ...@@ -369,6 +371,13 @@ static int config_output(AVFilterLink *outlink)
"current rate of %d/%d is invalid\n", fps.num, fps.den); "current rate of %d/%d is invalid\n", fps.num, fps.den);
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }
if (inlink->w != inlink_main->w ||
inlink->h != inlink_main->h ||
inlink->format != inlink_main->format) {
av_log(ctx, AV_LOG_ERROR, "frame parameters differ between inputs\n");
return AVERROR_PATCHWELCOME;
}
fps = av_mul_q(fps, (AVRational){dm->cycle - 1, dm->cycle}); fps = av_mul_q(fps, (AVRational){dm->cycle - 1, dm->cycle});
av_log(ctx, AV_LOG_VERBOSE, "FPS: %d/%d -> %d/%d\n", av_log(ctx, AV_LOG_VERBOSE, "FPS: %d/%d -> %d/%d\n",
inlink->frame_rate.num, inlink->frame_rate.den, fps.num, fps.den); inlink->frame_rate.num, inlink->frame_rate.den, fps.num, fps.den);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment