diff options
author | Baptiste Coudurier <baptiste.coudurier@gmail.com> | 2008-12-11 22:24:56 +0000 |
---|---|---|
committer | Baptiste Coudurier <baptiste.coudurier@gmail.com> | 2008-12-11 22:24:56 +0000 |
commit | 6da54074010d711d3ce83df5f96bb2d3a228f9ae (patch) | |
tree | 0e9c3eb54cc8804e268de658a0279b9058929e6e | |
parent | aaf0e267ffb5bdbb1cdaf7453be9d35377f311aa (diff) | |
download | ffmpeg-6da54074010d711d3ce83df5f96bb2d3a228f9ae.tar.gz |
parse pasp atom and set sample aspect ratio,
warn if transformation matrix differs from pasp,
based on a patch by Skal.
Originally committed as revision 16066 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavformat/mov.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c index 19495d7f6f..ff7be4b60d 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -430,6 +430,22 @@ static int mov_read_esds(MOVContext *c, ByteIOContext *pb, MOVAtom atom) return 0; } +static int mov_read_pasp(MOVContext *c, ByteIOContext *pb, MOVAtom atom) +{ + const int num = get_be32(pb); + const int den = get_be32(pb); + AVStream * const st = c->fc->streams[c->fc->nb_streams-1]; + if (den != 0) { + if ((st->sample_aspect_ratio.den && den != st->sample_aspect_ratio.den) || + (st->sample_aspect_ratio.num && num != st->sample_aspect_ratio.num)) + av_log(c->fc, AV_LOG_WARNING, + "sample aspect ratio already set, overriding by 'pasp' atom\n"); + st->sample_aspect_ratio.num = num; + st->sample_aspect_ratio.den = den; + } + return 0; +} + /* this atom contains actual media data */ static int mov_read_mdat(MOVContext *c, ByteIOContext *pb, MOVAtom atom) { @@ -1754,6 +1770,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('S','M','I',' '), mov_read_smi }, /* Sorenson extension ??? */ { MKTAG('a','l','a','c'), mov_read_extradata }, /* alac specific atom */ { MKTAG('a','v','c','C'), mov_read_glbl }, +{ MKTAG('p','a','s','p'), mov_read_pasp }, { MKTAG('s','t','b','l'), mov_read_default }, { MKTAG('s','t','c','o'), mov_read_stco }, { MKTAG('s','t','s','c'), mov_read_stsc }, |