avfilter/vf_decimate: Check that input parameters match
authorMichael Niedermayer <michael@niedermayer.cc>
Mon, 14 Dec 2015 20:18:39 +0000 (21:18 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Mon, 14 Dec 2015 20:46:05 +0000 (21:46 +0100)
Fixes Ticket4964

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavfilter/vf_decimate.c

index e580d05..a79fc02 100644 (file)
@@ -362,6 +362,8 @@ static int config_output(AVFilterLink *outlink)
     DecimateContext *dm = ctx->priv;
     const AVFilterLink *inlink =
         ctx->inputs[dm->ppsrc ? INPUT_CLEANSRC : INPUT_MAIN];
+    const AVFilterLink *inlink_main =
+        ctx->inputs[INPUT_MAIN];
     AVRational fps = inlink->frame_rate;
 
     if (!fps.num || !fps.den) {
@@ -369,6 +371,13 @@ static int config_output(AVFilterLink *outlink)
                "current rate of %d/%d is invalid\n", fps.num, fps.den);
         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});
     av_log(ctx, AV_LOG_VERBOSE, "FPS: %d/%d -> %d/%d\n",
            inlink->frame_rate.num, inlink->frame_rate.den, fps.num, fps.den);