aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodger Combs <rodger.combs@gmail.com>2018-11-05 10:26:24 -0600
committerJan Ekström <jeebjp@gmail.com>2018-12-17 23:25:43 +0200
commit6ebe88f3a4c427511eba7495896f4a57a2b4b529 (patch)
treeeea52fdec33cf8b5d5c5d9569b163a43b3ddf058
parent7b2a9aaa0b784244f6112dbb4b756ca6c4b374d1 (diff)
downloadffmpeg-6ebe88f3a4c427511eba7495896f4a57a2b4b529.tar.gz
lavf/isom: add Dolby Vision sample entry codes for HEVC and H.264
These are registered identifiers at the MPEG-4 RA, which are defined as to be utilized for Dolby Vision AVC/HEVC streams that are not correctly presentable by standards-compliant AVC/HEVC players. According to the Dolby Vision specification for ISOBMFF, these sample entry codes are specified to have the standard AVC or HEVC decoder configuration box in addition to the Dolby custom DOVIConfigurationBox. This is what enables us to decode the streams without custom parsing. For correct presentation information from the DOVIConfigurationBox is required (YCbCr or modified ICtCP, SDR or HDR, base or enhancement layer).
-rw-r--r--libavformat/isom.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavformat/isom.c b/libavformat/isom.c
index ca9d22e4f7..0a4d901be5 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -163,6 +163,8 @@ const AVCodecTag ff_codec_movvideo_tags[] = {
{ AV_CODEC_ID_HEVC, MKTAG('h', 'e', 'v', '1') }, /* HEVC/H.265 which indicates parameter sets may be in ES */
{ 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('d', 'v', 'h', 'e') }, /* HEVC-based Dolby Vision derived from hev1 */
+ /* dvh1 is handled within mov.c */
{ AV_CODEC_ID_H264, MKTAG('a', 'v', 'c', '1') }, /* AVC-1/H.264 */
{ AV_CODEC_ID_H264, MKTAG('a', 'v', 'c', '2') },
@@ -185,6 +187,8 @@ const AVCodecTag ff_codec_movvideo_tags[] = {
{ AV_CODEC_ID_H264, MKTAG('r', 'v', '6', '4') }, /* X-Com Radvision */
{ AV_CODEC_ID_H264, MKTAG('x', 'a', 'l', 'g') }, /* XAVC-L HD422 produced by FCP */
{ AV_CODEC_ID_H264, MKTAG('a', 'v', 'l', 'g') }, /* Panasonic P2 AVC-LongG */
+ { AV_CODEC_ID_H264, MKTAG('d', 'v', 'a', '1') }, /* AVC-based Dolby Vision derived from avc1 */
+ { AV_CODEC_ID_H264, MKTAG('d', 'v', 'a', 'v') }, /* AVC-based Dolby Vision derived from avc3 */
{ AV_CODEC_ID_VP8, MKTAG('v', 'p', '0', '8') }, /* VP8 */
{ AV_CODEC_ID_VP9, MKTAG('v', 'p', '0', '9') }, /* VP9 */