Zencoder HDR10 Video Output

Product(s)
Zencoder
Role(s)
API Developer
API(s)
Zencoder API

This topic provides details for Zencoder support of high-dynamic-range (HDR) video.

Introduction

Zencoder supports high-dynamic-range (HDR) video, initially adding options to produce HDR10 outputs from HDR color-graded masters.

Other HDR formats such as PQ10, HLG, and Dolby Vision are not currently supported.

HDR10 is commonly defined as video using the ITU-R Rec (see this document for more details). BT.2020 color space, SMPTE ST-2084 or Perceptual Quantizer (PQ) Opto-Electronic Transfer Function (OETF), along with SMPTE ST-2086 mastering display color metadata and CEA 861.3 content light level metadata. HDR10 streams are most commonly encoded using H.265/HEVC codec, operating in Main10 profile, and carrying all these metadata within elementary streams.

If you plan to target Apple devices with HDR content, the HLS Authoring Specification for Apple Devices document contains useful guidance.

Requirements

You must meet the following requirements to produce HDR10 outputs using Zencoder.

  • Source files must already be color-graded and in the Rec. 2020 color space.
  • Ideally, the source files will be high-quality masters or mezzanines using intra-frame codecs. Formats such as Apple ProRes 4444, Avid DNxHD, and JPEG 2000 (J2K) in OP1a MXF are examples of supported mastering formats. Source file video bit depths should be 10-bit or 12-bit.
  • For 4K source files, the target resolution should be DCI 4K (4096x2160), UHD-1 (3840x2160), or 1080p HD (1920x1080), with a frame rate of 23.976, 24, 25, 29.97, 30, 50, 59.94, 60, 100, or 120 fps. For optimal results, source file video should not be interlaced.
  • Mastering display metadata must be provided as described below.
  • While Zencoder will attempt to convert most video formats to HDR10 when mastering display metadata is provided, it does not convert from SDR to HDR, or from HDR to SDR. For example, if a Rec. 709 SDR source file is used to create an HDR10 output, it will appear darker than expected.

API options

There are a number of options that are new or otherwise relevant to creating HDR10 outputs. The most important are those related to the SMPTE ST-2086 mastering display color volume, white point, and luminance.

Color volume and white point settings

The following options are specified in CIE 1931 x/y chromaticity units, as floating point values:

The x coordinates shall be in the range [0.0001-0.7400] and the y coordinates shall be in the range [0.0001-0.8400].

Luminance

The following options are specified in nits or candelas per square meter (cd/m2) as floating point values:

The master_display:luminance:max value should be in the range [5.0-10000.0], and master_display:luminance:min value should be in the range [0.0001-5.0].

Light level

Light level metadata is also specified in nits, though as integers rather than floats. These parameters are defined in CEA 861.3, as well as ITU-T Rec. H.265, Annex 3.35.

The max_content_light_level and max_frame_average_light_level value should be in the range [0-10000]. Values of max_frame_average_light_level around 100 generally produce the best results, however.

Other output settings with specific values/ranges for HDR

There are some other general video output settings that must specific values or a specific range of values for HDR10.

Video Settings for HDR10
Setting Value(s) for HDR10
video_codec hvec
video_codec_profile main10
video_codec_level up to 5.1
video_codec_tier high
video_bit_depth automatically set to 10 by using the profile main10

Notes

  1. Transmuxing HEVC source files (including HDR10) is currently not supported and will result in an error.
    1. HLS and DASH outputs need separate encodes.
  2. If a source file is HDR and master_display options are not provided, Zencoder will treat the source file as SDR, so the output coloring may not be accurate.
  3. For segmented outputs, include these settings in each of the video outputs.

Sample request

Below is a sample request for an HDR10 output:

{
  "input": "s3://mybucket/hdr_master.mov",
  "outputs": [
    {
      "video_codec": "hevc",
      "video_bit_depth": 10,
      "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
    }
  ]
}