mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
In dv decoder, set sample aspect aspect ratio, fix issue #1612
Originally committed as revision 25232 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
348a3237cc
commit
2a5db1aa58
@ -1081,6 +1081,8 @@ static int dvvideo_decode_frame(AVCodecContext *avctx,
|
||||
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 @@ static int dvvideo_decode_frame(AVCodecContext *avctx,
|
||||
*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 */
|
||||
|
Loading…
Reference in New Issue
Block a user