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;
                             }
                         }
                     }