field pic timestamp fix
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 9 Jul 2004 21:55:10 +0000 (21:55 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 9 Jul 2004 21:55:10 +0000 (21:55 +0000)
Originally committed as revision 3300 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/parser.c

index 7b01da4..50888a8 100644 (file)
@@ -281,7 +281,7 @@ static void mpegvideo_extract_headers(AVCodecParserContext *s,
     int32_t start_code;
     int frame_rate_index, ext_type, bytes_left;
     int frame_rate_ext_n, frame_rate_ext_d;
-    int top_field_first, repeat_first_field, progressive_frame;
+    int picture_structure, top_field_first, repeat_first_field, progressive_frame;
     int horiz_size_ext, vert_size_ext;
 
     s->repeat_pict = 0;
@@ -328,6 +328,7 @@ static void mpegvideo_extract_headers(AVCodecParserContext *s,
                     break;
                 case 0x8: /* picture coding extension */
                     if (bytes_left >= 5) {
+                        picture_structure = (buf[3]>>5)&3;
                         top_field_first = buf[3] & (1 << 7);
                         repeat_first_field = buf[3] & (1 << 1);
                         progressive_frame = buf[4] & (1 << 7);
@@ -343,6 +344,11 @@ static void mpegvideo_extract_headers(AVCodecParserContext *s,
                                 s->repeat_pict = 1;
                             }
                         }
+                        
+                        /* the packet only represents half a frame 
+                           XXX,FIXME maybe find a different solution */
+                        if(picture_structure != 3)
+                            s->repeat_pict = -1;
                     }
                     break;
                 }