wmvenc: check if width is multiple of 2
authorPiotr Bandurski <ami_stuff@o2.pl>
Sun, 13 May 2012 01:31:52 +0000 (03:31 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 13 May 2012 17:30:32 +0000 (19:30 +0200)
The width of wmv1/2 video must be multiple of 2 or win32 codec will fail to decode it (WMP displays black screen).

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/mpegvideo_enc.c

index 88b177740c41ade1a69cb29ee3c70f2fc3274134..631316898eca6661b61b66fa2c65cef77aa25191 100644 (file)
@@ -508,6 +508,14 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx)
         av_log(avctx, AV_LOG_ERROR, "MPEG-2 does not support resolutions above 16383x16383\n");
         return -1;
     }
+
+    if ((s->codec_id == CODEC_ID_WMV1 ||
+         s->codec_id == CODEC_ID_WMV2) &&
+         avctx->width & 1) {
+         av_log(avctx, AV_LOG_ERROR, "width must be multiple of 2\n");
+         return -1;
+    }
+
     if ((s->flags & (CODEC_FLAG_INTERLACED_DCT | CODEC_FLAG_INTERLACED_ME)) &&
         s->codec_id != CODEC_ID_MPEG4 && s->codec_id != CODEC_ID_MPEG2VIDEO) {
         av_log(avctx, AV_LOG_ERROR, "interlacing not supported by codec\n");