changeset 6379:9f4f88218b78 libavcodec

Make timestamp interpolation work with mpeg2 field pictures. Cleaner/simpler solutions are welcome.
author michael
date Wed, 20 Feb 2008 03:20:06 +0000
parents 99823c80a93d
children 464938b9c2b0
files avcodec.h mpegvideo_parser.c
diffstat 2 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/avcodec.h	Tue Feb 19 22:50:28 2008 +0000
+++ b/avcodec.h	Wed Feb 20 03:20:06 2008 +0000
@@ -2788,6 +2788,7 @@
     /* video info */
     int pict_type; /* XXX: Put it back in AVCodecContext. */
     int repeat_pict; /* XXX: Put it back in AVCodecContext. */
+    int parity;
     int64_t pts;     /* pts of the current frame */
     int64_t dts;     /* dts of the current frame */
 
--- a/mpegvideo_parser.c	Tue Feb 19 22:50:28 2008 +0000
+++ b/mpegvideo_parser.c	Wed Feb 20 03:20:06 2008 +0000
@@ -36,6 +36,7 @@
     int horiz_size_ext, vert_size_ext, bit_rate_ext;
 //FIXME replace the crap with get_bits()
     s->repeat_pict = 0;
+    s->parity = 0;
     buf_end = buf + buf_size;
     while (buf < buf_end) {
         start_code= -1;
@@ -105,8 +106,11 @@
 
                         /* the packet only represents half a frame
                            XXX,FIXME maybe find a different solution */
-                        if(picture_structure != 3)
+                        if(picture_structure != 3){
                             s->repeat_pict = -1;
+                            s->parity = picture_structure-1;
+                        }else
+                            s->parity = !top_field_first;
                     }
                     break;
                 }