Supported HDR Video Formats

This topic provides details for Zencoder support of High Dynamic Range (HDR) video formats.

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.

Support HDR Formats
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

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 hdr_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 hdr_format parameter and additional parameters that must be specified.

hdr_format Details
HDR format Zencoder API parameters / values
hdr_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,
      "hdr_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",
     "hdr_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

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} 
  ] 
}