Mercurial > libavcodec.hg
diff mpegvideo_parser.c @ 9036:8e5fe9e56b93 libavcodec
Correct time_base and repeat_pict for MPEG2 video.
Patch by Ivan Schreter, schreter gmx net
author | cehoyos |
---|---|
date | Tue, 24 Feb 2009 20:23:19 +0000 |
parents | 04423b2f6e0b |
children | cecf81f93756 |
line wrap: on
line diff
--- a/mpegvideo_parser.c Tue Feb 24 20:19:59 2009 +0000 +++ b/mpegvideo_parser.c Tue Feb 24 20:23:19 2009 +0000 @@ -81,7 +81,7 @@ pc->height |=( vert_size_ext << 12); avctx->bit_rate += (bit_rate_ext << 18) * 400; avcodec_set_dimensions(avctx, pc->width, pc->height); - avctx->time_base.den = pc->frame_rate.den * (frame_rate_ext_n + 1); + avctx->time_base.den = pc->frame_rate.den * (frame_rate_ext_n + 1) * 2; avctx->time_base.num = pc->frame_rate.num * (frame_rate_ext_d + 1); avctx->codec_id = CODEC_ID_MPEG2VIDEO; avctx->sub_id = 2; /* forces MPEG2 */ @@ -95,14 +95,15 @@ progressive_frame = buf[4] & (1 << 7); /* check if we must repeat the frame */ + s->repeat_pict = 1; if (repeat_first_field) { if (pc->progressive_sequence) { if (top_field_first) - s->repeat_pict = 4; + s->repeat_pict = 5; else - s->repeat_pict = 2; + s->repeat_pict = 3; } else if (progressive_frame) { - s->repeat_pict = 1; + s->repeat_pict = 2; } } }