[FFmpeg-cvslog] mov: Support HEVC demuxing

Yusuke Nakamura git at videolan.org
Fri Nov 1 17:56:14 CET 2013


ffmpeg | branch: master | Yusuke Nakamura <muken.the.vfrmaniac at gmail.com> | Thu Oct  3 14:03:53 2013 +0900| [ea29f965dc71182f77b8efe819630f55e48b0ab7] | committer: Anton Khirnov

mov: Support HEVC demuxing

Signed-off-by: Anton Khirnov <anton at khirnov.net>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ea29f965dc71182f77b8efe819630f55e48b0ab7
---

 Changelog             |    2 +-
 libavformat/isom.c    |    3 +++
 libavformat/mov.c     |    5 ++++-
 libavformat/version.h |    2 +-
 4 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/Changelog b/Changelog
index 007ab8c..4935cc5 100644
--- a/Changelog
+++ b/Changelog
@@ -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 014096d..372e877 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 60fb999..d9cb36b 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 b219a2b..d4752a9 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, \



More information about the ffmpeg-cvslog mailing list