[FFmpeg-cvslog] r17571 - in trunk/libavcodec: h264.c h264_parser.c

cehoyos subversion
Tue Feb 24 21:19:59 CET 2009


Author: cehoyos
Date: Tue Feb 24 21:19:59 2009
New Revision: 17571

Log:
Correct time_base of H.264 and repeat_pict.

Patch by Ivan Schreter, schreter gmx net

Modified:
   trunk/libavcodec/h264.c
   trunk/libavcodec/h264_parser.c

Modified: trunk/libavcodec/h264.c
==============================================================================
--- trunk/libavcodec/h264.c	Tue Feb 24 21:17:02 2009	(r17570)
+++ trunk/libavcodec/h264.c	Tue Feb 24 21:19:59 2009	(r17571)
@@ -3763,7 +3763,7 @@ static int decode_slice_header(H264Conte
             s->avctx->sample_aspect_ratio.den = 1;
 
         if(h->sps.timing_info_present_flag){
-            s->avctx->time_base= (AVRational){h->sps.num_units_in_tick * 2, h->sps.time_scale};
+            s->avctx->time_base= (AVRational){h->sps.num_units_in_tick, h->sps.time_scale};
             if(h->x264_build > 0 && h->x264_build < 44)
                 s->avctx->time_base.den *= 2;
             av_reduce(&s->avctx->time_base.num, &s->avctx->time_base.den,

Modified: trunk/libavcodec/h264_parser.c
==============================================================================
--- trunk/libavcodec/h264_parser.c	Tue Feb 24 21:17:02 2009	(r17570)
+++ trunk/libavcodec/h264_parser.c	Tue Feb 24 21:19:59 2009	(r17571)
@@ -196,29 +196,29 @@ static inline int parse_nal_units(AVCode
                 switch (h->sei_pic_struct) {
                     case SEI_PIC_STRUCT_TOP_FIELD:
                     case SEI_PIC_STRUCT_BOTTOM_FIELD:
-                        s->repeat_pict = -1;
+                        s->repeat_pict = 0;
                         break;
                     case SEI_PIC_STRUCT_FRAME:
                     case SEI_PIC_STRUCT_TOP_BOTTOM:
                     case SEI_PIC_STRUCT_BOTTOM_TOP:
-                        s->repeat_pict = 0;
+                        s->repeat_pict = 1;
                         break;
                     case SEI_PIC_STRUCT_TOP_BOTTOM_TOP:
                     case SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM:
-                        s->repeat_pict = 1;
+                        s->repeat_pict = 2;
                         break;
                     case SEI_PIC_STRUCT_FRAME_DOUBLING:
-                        s->repeat_pict = 2;
+                        s->repeat_pict = 3;
                         break;
                     case SEI_PIC_STRUCT_FRAME_TRIPLING:
-                        s->repeat_pict = 4;
+                        s->repeat_pict = 5;
                         break;
                     default:
-                        s->repeat_pict = h->s.picture_structure == PICT_FRAME ? 0 : -1;
+                        s->repeat_pict = h->s.picture_structure == PICT_FRAME ? 1 : 0;
                         break;
                 }
             } else {
-                s->repeat_pict = h->s.picture_structure == PICT_FRAME ? 0 : -1;
+                s->repeat_pict = h->s.picture_structure == PICT_FRAME ? 1 : 0;
             }
 
             return 0; /* no need to evaluate the rest */




More information about the ffmpeg-cvslog mailing list