# HG changeset patch # User bcoudurier # Date 1285623089 0 # Node ID f4caff0e1e10ac9d7a7629d2fe7bb56a61318a11 # Parent fae5731a5543ad8b643b805bd518d56c85b05bc7 In dv decoder, set sample aspect aspect ratio, fix issue #1612 diff -r fae5731a5543 -r f4caff0e1e10 dv.c --- a/dv.c Mon Sep 27 21:30:41 2010 +0000 +++ b/dv.c Mon Sep 27 21:31:29 2010 +0000 @@ -1081,6 +1081,8 @@ const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; DVVideoContext *s = avctx->priv_data; + const uint8_t* vsc_pack; + int apt, is16_9; s->sys = ff_dv_frame_profile(s->sys, buf, buf_size); if (!s->sys || buf_size < s->sys->frame_size || dv_init_dynamic_tables(s->sys)) { @@ -1114,6 +1116,14 @@ *data_size = sizeof(AVFrame); *(AVFrame*)data = s->picture; + /* Determine the codec's sample_aspect ratio from the packet */ + vsc_pack = buf + 80*5 + 48 + 5; + if ( *vsc_pack == dv_video_control ) { + apt = buf[4] & 0x07; + is16_9 = (vsc_pack && ((vsc_pack[2] & 0x07) == 0x02 || (!apt && (vsc_pack[2] & 0x07) == 0x07))); + avctx->sample_aspect_ratio = s->sys->sar[is16_9]; + } + return s->sys->frame_size; } #endif /* CONFIG_DVVIDEO_DECODER */