avcodec/mpegvideo_enc: check intra dc precission
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 15 Jul 2014 17:12:55 +0000 (19:12 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 15 Jul 2014 17:56:23 +0000 (19:56 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/mpegvideo_enc.c

index e88b4f3..4bb79f6 100644 (file)
@@ -342,6 +342,17 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx)
     } else if (s->intra_dc_precision >= 8)
         s->intra_dc_precision -= 8;
 
+    if (s->intra_dc_precision < 0) {
+        av_log(avctx, AV_LOG_ERROR,
+                "intra dc precision must be positive, note some applications use"
+                " 0 and some 8 as base meaning 8bit, the value must not be smaller than that\n");
+        return AVERROR(EINVAL);
+    }
+
+    if (s->intra_dc_precision > (avctx->codec_id == AV_CODEC_ID_MPEG2VIDEO ? 3 : 0)) {
+        av_log(avctx, AV_LOG_ERROR, "intra dc precision too large\n");
+        return AVERROR(EINVAL);
+    }
     s->user_specified_pts = AV_NOPTS_VALUE;
 
     if (s->gop_size <= 1) {