diff --git a/modules/highgui/src/cap_ffmpeg_impl.hpp b/modules/highgui/src/cap_ffmpeg_impl.hpp index 0c9c950f0..e590cd278 100644 --- a/modules/highgui/src/cap_ffmpeg_impl.hpp +++ b/modules/highgui/src/cap_ffmpeg_impl.hpp @@ -560,6 +560,10 @@ bool CvCapture_FFMPEG::open( const char* _filename ) if( AVMEDIA_TYPE_VIDEO == enc->codec_type && video_stream < 0) { + // backup encoder' width/height + int enc_width = enc->width; + int enc_height = enc->height; + AVCodec *codec = avcodec_find_decoder(enc->codec_id); if (!codec || #if LIBAVCODEC_VERSION_INT >= ((53<<16)+(8<<8)+0) @@ -570,6 +574,10 @@ bool CvCapture_FFMPEG::open( const char* _filename ) < 0) goto exit_func; + // checking width/height (since decoder can sometimes alter it, eg. vp6f) + if (enc_width && (enc->width != enc_width)) { enc->width = enc_width; } + if (enc_height && (enc->height != enc_height)) { enc->height = enc_height; } + video_stream = i; video_st = ic->streams[i]; picture = avcodec_alloc_frame();