diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2016-03-02 02:03:46 +0100 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2016-03-02 02:03:46 +0100 |
commit | 2355b7458e637a56a8eb878ee9dbe1e06dfd69b2 (patch) | |
tree | 6d8edc75efd87a9c6730d867fc41a8b1c8599d02 | |
parent | c3bb6166dd05801e86a959085cdffbc3fb1ac46d (diff) | |
download | ffmpeg-2355b7458e637a56a8eb878ee9dbe1e06dfd69b2.tar.gz |
lavf/mov: Set display aspect ratio for avid dv.
Fixes ticket #5271.
-rw-r--r-- | libavformat/mov.c | 19 | ||||
-rw-r--r-- | libavformat/version.h | 2 |
2 files changed, 20 insertions, 1 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c index 043f4a9dbc..2eddc49f9b 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1461,6 +1461,25 @@ static int mov_read_ares(MOVContext *c, AVIOContext *pb, MOVAtom atom) if (avio_rb16(pb) == 0xd4d) codec->width = 1440; return 0; + } else if (codec->codec_tag == MKTAG('A', 'V', 'd', '1') && + atom.size >= 24) { + int num, den; + avio_skip(pb, 12); + num = avio_rb32(pb); + den = avio_rb32(pb); + if (num <= 0 || den <= 0) + return 0; + switch (avio_rb32(pb)) { + case 2: + if (den >= INT_MAX / 2) + return 0; + den *= 2; + case 1: + c->fc->streams[c->fc->nb_streams-1]->display_aspect_ratio.num = num; + c->fc->streams[c->fc->nb_streams-1]->display_aspect_ratio.den = den; + default: + return 0; + } } } diff --git a/libavformat/version.h b/libavformat/version.h index 29aca6640c..4849171c76 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -31,7 +31,7 @@ #define LIBAVFORMAT_VERSION_MAJOR 57 #define LIBAVFORMAT_VERSION_MINOR 27 -#define LIBAVFORMAT_VERSION_MICRO 100 +#define LIBAVFORMAT_VERSION_MICRO 101 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \ |