OSDN Git Service

dvdec: Set top_field_first from FS flag
authorTomas Härdin <tomas.hardin@codemill.se>
Mon, 15 Oct 2012 14:24:39 +0000 (16:24 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 15 Oct 2012 16:53:44 +0000 (18:53 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/dvdec.c

index 6306b5a..d3a1234 100644 (file)
@@ -343,12 +343,13 @@ static int dvvideo_decode_frame(AVCodecContext *avctx,
     s->picture.interlaced_frame = 1;
     s->picture.top_field_first  = 0;
 
-    /* Determine the codec's sample_aspect ratio from the packet */
+    /* Determine the codec's sample_aspect ratio and field order from the packet */
     vsc_pack = buf + 80*5 + 48 + 5;
     if ( *vsc_pack == dv_video_control ) {
         apt = buf[4] & 0x07;
         is16_9 = (vsc_pack[2] & 0x07) == 0x02 || (!apt && (vsc_pack[2] & 0x07) == 0x07);
         avctx->sample_aspect_ratio = s->sys->sar[is16_9];
+        s->picture.top_field_first = !(vsc_pack[3] & 0x40);
     }
 
     s->buf = buf;