summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/dvdec.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c
index 6306b5a548..d3a12347b3 100644
--- a/libavcodec/dvdec.c
+++ b/libavcodec/dvdec.c
@@ -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;