diff options
author | Yusuke Nakamura <muken.the.vfrmaniac@gmail.com> | 2013-10-03 09:03:53 +0400 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2013-10-31 23:20:32 +0400 |
commit | ea29f965dc71182f77b8efe819630f55e48b0ab7 (patch) | |
tree | e04eb5dfeee019a896ddf94cbdc6ca5a4bdf060a | |
parent | 5846646296e377e093441dfe9eadde38ff1f7c99 (diff) |
mov: Support HEVC demuxing
Signed-off-by: Anton Khirnov <anton@khirnov.net>
-rw-r--r-- | Changelog | 2 | ||||
-rw-r--r-- | libavformat/isom.c | 3 | ||||
-rw-r--r-- | libavformat/mov.c | 5 | ||||
-rw-r--r-- | libavformat/version.h | 2 |
4 files changed, 9 insertions, 3 deletions
@@ -42,7 +42,7 @@ version 10: - F4V muxer - HNM version 4 demuxer and video decoder - HEVC decoder -- raw HEVC demuxer +- raw HEVC, HEVC in MOV/MP4 demuxing version 9: diff --git a/libavformat/isom.c b/libavformat/isom.c index 014096d95d..372e877ff0 100644 --- a/libavformat/isom.c +++ b/libavformat/isom.c @@ -136,6 +136,9 @@ const AVCodecTag ff_codec_movvideo_tags[] = { { AV_CODEC_ID_RAWVIDEO, MKTAG('W', 'R', 'A', 'W') }, + { AV_CODEC_ID_HEVC, MKTAG('h', 'v', 'c', '1') }, /* HEVC/H.265 which indicates parameter sets shall not be in ES */ + { AV_CODEC_ID_HEVC, MKTAG('h', 'e', 'v', '1') }, /* HEVC/H.265 which indicates parameter sets may be in ES */ + { AV_CODEC_ID_H264, MKTAG('a', 'v', 'c', '1') }, /* AVC-1/H.264 */ { AV_CODEC_ID_H264, MKTAG('a', 'i', '5', 'p') }, /* AVC-Intra 50M 720p24/30/60 */ { AV_CODEC_ID_H264, MKTAG('a', 'i', '5', 'q') }, /* AVC-Intra 50M 720p25/50 */ diff --git a/libavformat/mov.c b/libavformat/mov.c index 60fb999d81..d9cb36b67a 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1396,6 +1396,8 @@ static int mov_skip_multiple_stsd(MOVContext *c, AVIOContext *pb, if (codec_tag && (codec_tag == AV_RL32("avc1") || + codec_tag == AV_RL32("hvc1") || + codec_tag == AV_RL32("hev1") || (codec_tag != format && (c->fc->video_codec_id ? video_codec_id != c->fc->video_codec_id : codec_tag != MKTAG('j','p','e','g'))))) { @@ -1471,7 +1473,7 @@ int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries) if (ret < 0) return ret; } - /* this will read extra atoms at the end (wave, alac, damr, avcC, SMI ...) */ + /* this will read extra atoms at the end (wave, alac, damr, avcC, hvcC, SMI ...) */ a.size = size - (avio_tell(pb) - start_pos); if (a.size > 8) { if ((ret = mov_read_default(c, pb, a)) < 0) @@ -2604,6 +2606,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('c','h','a','n'), mov_read_chan }, /* channel layout */ { MKTAG('d','v','c','1'), mov_read_dvc1 }, { MKTAG('s','b','g','p'), mov_read_sbgp }, +{ MKTAG('h','v','c','C'), mov_read_glbl }, { 0, NULL } }; diff --git a/libavformat/version.h b/libavformat/version.h index b219a2b39d..d4752a9207 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -31,7 +31,7 @@ #define LIBAVFORMAT_VERSION_MAJOR 55 #define LIBAVFORMAT_VERSION_MINOR 9 -#define LIBAVFORMAT_VERSION_MICRO 0 +#define LIBAVFORMAT_VERSION_MICRO 1 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \ |