summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2009-04-08 20:48:44 +0000
committerMichael Niedermayer <michaelni@gmx.at>2009-04-08 20:48:44 +0000
commit0127b86108c3e2c7b63c7996b10c62877030b706 (patch)
treeee68e4e73cf9b959aa93e35a14fe4dc20c537839 /libavcodec
parente90f5b5ab1fdb2a9cef3fb9a13bab8e38f361a88 (diff)
downloadffmpeg-0127b86108c3e2c7b63c7996b10c62877030b706.tar.gz
Fix mb_height for interlaced mpeg2.
This correctly fixes issue961, thanks to steven warren for spotting my mistake. Originally committed as revision 18381 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/mpeg12.c4
-rw-r--r--libavcodec/mpegvideo.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index f4e4958bfa..573ae32ce6 100644
--- a/libavcodec/mpeg12.c
+++ b/libavcodec/mpeg12.c
@@ -1160,7 +1160,7 @@ typedef struct Mpeg1Context {
int slice_count;
int swap_uv;//indicate VCR2
int save_aspect_info;
- int save_width, save_height;
+ int save_width, save_height, save_progressive_seq;
AVRational frame_rate_ext; ///< MPEG-2 specific framerate modificator
} Mpeg1Context;
@@ -1238,6 +1238,7 @@ static int mpeg_decode_postinit(AVCodecContext *avctx){
s1->save_width != s->width ||
s1->save_height != s->height ||
s1->save_aspect_info != s->aspect_ratio_info||
+ s1->save_progressive_seq != s->progressive_sequence ||
0)
{
@@ -1256,6 +1257,7 @@ static int mpeg_decode_postinit(AVCodecContext *avctx){
s1->save_aspect_info = s->aspect_ratio_info;
s1->save_width = s->width;
s1->save_height = s->height;
+ s1->save_progressive_seq = s->progressive_sequence;
/* low_delay may be forced, in this case we will have B-frames
* that behave like P-frames. */
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index bf1831f1f3..e1bec68f12 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -444,6 +444,9 @@ av_cold int MPV_common_init(MpegEncContext *s)
{
int y_size, c_size, yc_size, i, mb_array_size, mv_table_size, x, y, threads;
+ if(s->codec_id == CODEC_ID_MPEG2VIDEO && !s->progressive_sequence)
+ s->mb_height = (s->height + 31) / 32 * 2;
+ else
s->mb_height = (s->height + 15) / 16;
if(s->avctx->pix_fmt == PIX_FMT_NONE){