[FFmpeg-cvslog] r16066 - trunk/libavformat/mov.c
bcoudurier
subversion
Thu Dec 11 23:24:56 CET 2008
Author: bcoudurier
Date: Thu Dec 11 23:24:56 2008
New Revision: 16066
Log:
parse pasp atom and set sample aspect ratio,
warn if transformation matrix differs from pasp,
based on a patch by Skal.
Modified:
trunk/libavformat/mov.c
Modified: trunk/libavformat/mov.c
==============================================================================
--- trunk/libavformat/mov.c (original)
+++ trunk/libavformat/mov.c Thu Dec 11 23:24:56 2008
@@ -430,6 +430,22 @@ static int mov_read_esds(MOVContext *c,
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_defa
{ 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 },
More information about the ffmpeg-cvslog
mailing list