Overview
The term High Dynamic Range (HDR) video generally refers to a family of video formats, characterized by wider ranges of color and brightness through pixel values, particular types of Electo-Optical Transfer Characteristics (OETFs), color spaces, and specialized metadata carried along with the encoded video streams. Such formats are commonly used in production and delivery of UltraHD video content.
For more information on HDR video, see What is HDR video? and High-dynamic-range video.
Specific types of HDR video formats currently supported by Zencoder are listed in the table below.
HDR format | Pixel depth | Pixel range | Primary colors | Color space | OETF | Mastering display metadata | Content light level metadata | Dynamic metadata |
---|---|---|---|---|---|---|---|---|
HLG10 [1-1] | 10 | limited | BT.2020 [1-4] | Y'C'BC'R [1-5] | HLG [1-7] | |||
PQ10 [1-1] | 10 | limited | BT.2020 [1-4] | Y'C'BC'R [1-5] | PQ [1-8] | |||
HDR10 [1-1] | 10 | limited | BT.2020 [1-4] | Y'C'BC'R [1-5] | PQ [1-8] | SMPTE 2086 [1-9] | CAE 861.3 [1-10] | |
DolbyVision 8.1 [1-2] | 10 | limited | BT.2020 [1-4] | Y'C'BC'R [1-5] | PQ [1-8] | SMPTE 2086 [1-9] | CAE 861.3 [1-10] | SMPTE 2094-10 [1-11] |
DolbyVision 5 [1-3] | 10 | full | BT.2020 [1-4] | ICtCp [1-6] | PQ [1-8] | SMPTE 2094-10 [1-11] |
Notes
- [1-1] HLG10, PQ10, and HDR10 refer to HDR formats defined by the UltraHD Forum Guidelines
- [1-2] DolbyVision 8.1 refers to DolbyVision Profile 8, with signal compatibility ID 1, defined by the DolbyVision Profiles and Levels specification
- [1-3] DolbyVision 5 refers to DolbyVision Profile 5, defined by the DolbyVision Profiles and Levels specification
- [1-4] BT.2020 refers to the colorimetry system defined by ITU-R Rec. BT.2020
- [1-5] Y'C'BC'R refers to the Y'C'BC'R non-constant luminance color space defined by ITU-R Rec. BT.2020
- [1-6] ICtCp refers to the ICtCp color space defined by ITU-R Rec. BT.2100
- [1-7] HLG refers to the Hybrid Log Gamma (HLG) transfer function defined by ITU-R Rec. BT.2100
- [1-8] PQ refers to the Perceptual Quantizer (PQ) transfer function defined by ITU-R Rec. BT.2100
- [1-9] SMPTE 2086 refers to the master display characteristics defined by SMPTE ST 2086
- [1-10] CAE 861.3 refers to the content light level parameters defined by CAE 861.3
- [1-11] SMPTE 2094-10 refers to the DolbyVision dynamic metadata defined by SMPTE ST 2094-10
Information about specifics of carriage of such formats within video codec bitstreams, container formats, as well as DASH and HLS streaming systems, can be found in following documents:
Supported operations
Zencoder currently performs only direct transcoding operations with videos in HDR formats. That is, if input video is color-graded and encoded in a particular HDR format, the same color-grading and HDR-format related metadata will be preserved in the output(s).
Conversions between different types of HDR formats or conversions between Standard Dynamic Range (SDR) and HDR formats currently are not supported. In principle, conversions between HDR formats are non-trivial operations that may impact artistic intent and/or introduce visible artifacts. For these reasons, we recommend such conversion operations to be done professionally in post-production.
Encoding of videos in HDR formats currently requires the use of HEVC video codec, operating in Main10 profile, and using 10-bit pixels. Such codec, profile and bit-depth parameters must be defined for all HDR outputs. The use of other codecs/profiles/bit-depths with HDR formats currently is not supported.
Encoding of videos in DolbyVision formats further requires the use of ISOBMFF (MP4) container formats for outputs. The use of other container formats with DolbyVision currently is not supported.
Encoding of HDR formats in Zencoder is supported for both static and dynamic outputs, generated by using Brightcove Context-Aware Encoding (CAE) technology. The use of CAE technology enables more efficient encoding and it is recommended by UltraHD Forum Guidelines for encoding of UltraHD / HDR content.
Requirements for input files
The input video files should be high-quality masters or mezzanines carrying properly color-graded HDR visual content and provided with all necessary metadata needed to describe HDR format being used.
Examples of such files could be:
- HLG10, PQ10, and HDR10 - compliant video streams encoded using HEVC codec, and carrying all necessary HDR information within such streams
- Post-production intra-coded mezzanines (e.g. Apple ProRes 4444, Avid DNxHD, or JPEG 2000 (J2K) in OP1a MXF), accompanied by extra information about type of HDR format being used and any additional metadata (e.g. master display and content light level metadata) needed to describe it
- HEVC-encoded DolbyVision streams, accompanied by “RPU” files carrying the associated dynamic metadata.
Specifying HDR format parameters
In cases when input mezzanine contains all metadata associated with the HDR format, all such information can be propagated to the outputs by using the preserve_hdr_metadata
parameter.
This method is illustrated by following example:
{
"input": "s3://mybucket/hdr_master.mp4",
"outputs": [
{
"video_codec": "hevc",
"video_codec_profile": "main10",
"video_bit_depth": 10,
"preserve_hdr_metadata": true
}
]
}
This method should work well with HEVC-encoded HDR10, PQ10, anf HLG10 mezzanines.
In cases when input mezzanine does not describe HDR format exactly, or carries only partial information, an explicit specification of HDR format parameters should be used.
In such cases, Zencoder should receive the video_color_format
parameter, describing the exact type of HDR format being used, along with several additional parameters that may be required to pass the associated metadata. Below table lists possible values of video_color_format
parameter and additional parameters that must be specified.
HDR format | Zencoder API parameters / values | |||
---|---|---|---|---|
video_color_format |
master_display |
max_content_light_level , max_frame_average_light_level |
dolby_vision_rpu_url |
|
HLG10 | hlg |
|||
PQ10 | pq |
|||
HDR10 | hdr10 |
required | required | |
DolbyVision 8.1 | dv8.1 |
required | required | required |
DolbyVision 5 | dv5 |
required |
For example, encoding of an HDR10 video with master_display
and content light level metadata parameters communicated externally can be performed by using following command:
{
"input": "s3://mybucket/prores_hdr_master.mov",
"outputs": [
{
"video_codec": "hevc",
"video_codec_profile": "main10",
"video_bit_depth": 10,
"video_color_format": "hdr10",
"master_display": {
"red": {"x": 0.708, "y": 0.292},
"green": {"x": 0.17, "y": 0.797},
"blue": {"x": 0.131, "y": 0.046},
"white_point": {"x": 0.31273,"y": 0.329},
"luminance": {"max": 1000,"min": 0.0001}
},
"max_content_light_level": 1000,
"max_frame_average_light_level": 180
}
]
}
This method is appropriate when working with post-production mezzanines, using codecs such as Apple ProRes 4444, Avid DNxHD, or JPEG 2000 (J2K) in OP1a MXF, etc.
Similarly, when transcoding DolbyVision content, the dynamic metadata (“RPU” file) associated with DolbyVision Content can be communicated externally by using dolby_vision_rpu_url
parameter:
{
"input": "s3://mybucket/dv5_master.mp4",
"outputs": [
{
"video_codec": "hevc",
"video_codec_profile": "main10",
"video_bit_depth": 10,
"video_color_range": "full",
"video_color_format": "dv5",
"dolby_vision_rpu_url": "s3://mubucket/dv5_master_rpu.rpu"
}
]
}
Specifying HDR format parameters with CAE
When using Brightcove Context-Aware Encoding (CAE) technology, all codec- and HDR format-related parameters can be specified either as
- parameters of outputs labeled as
dynamic_profile_rendition
, or - parameters of the
dynamic_profile_options
object
The second method is more compact and preferred. An example illustrating the use of the second method is provided below:
{
"input": "s3://mybucket/hdr_master.mp4",
"generate_dynamic_profile": true,
"dynamic_profile_options":
{
"max_renditions": 6,
"video_codec": "hevc",
"video_codec_profile": "main10",
"video_bit_depth": 10,
"preserve_hdr_metadata": true,
}
"outputs": [
{"dynamic_profile_rendition": 1},
{"dynamic_profile_rendition": 2},
{"dynamic_profile_rendition": 3},
{"dynamic_profile_rendition": 4},
{"dynamic_profile_rendition": 5},
{"dynamic_profile_rendition": 6}
]
}