diff options
author | Yusuke Nakamura <muken.the.vfrmaniac@gmail.com> | 2013-10-12 11:55:45 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-10-16 00:17:28 +0200 |
commit | 53f903b7c5427cb18659f7775714e860c1c5fc39 (patch) | |
tree | 9cb2181403765e4fd2701851d94aca7c41af2801 | |
parent | cf49d0156dfdfbabf3077ddc97eeb0737837d969 (diff) | |
download | ffmpeg-53f903b7c5427cb18659f7775714e860c1c5fc39.tar.gz |
lavf/mov: Support HEVC demuxing.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/isom.c | 3 | ||||
-rw-r--r-- | libavformat/mov.c | 10 |
2 files changed, 10 insertions, 3 deletions
diff --git a/libavformat/isom.c b/libavformat/isom.c index 8cbf70b56e..48539e1a2d 100644 --- a/libavformat/isom.c +++ b/libavformat/isom.c @@ -151,6 +151,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 f8535f0413..3422131511 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1590,8 +1590,11 @@ static int mov_skip_multiple_stsd(MOVContext *c, AVIOContext *pb, avio_skip(pb, size); return 1; } - if (codec_tag == AV_RL32("avc1")) - av_log(c->fc, AV_LOG_WARNING, "Concatenated H.264 might not play corrently.\n"); + if ( codec_tag == AV_RL32("avc1") || + codec_tag == AV_RL32("hvc1") || + codec_tag == AV_RL32("hev1") + ) + av_log(c->fc, AV_LOG_WARNING, "Concatenated H.264 or H.265 might not play corrently.\n"); return 0; } @@ -1656,7 +1659,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) @@ -2962,6 +2965,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 }, { MKTAG('u','u','i','d'), mov_read_uuid }, { MKTAG('C','i','n', 0x8e), mov_read_targa_y216 }, { 0, NULL } |