Ingesting HDR10 Video

Supply per-asset HDR10 mastering metadata with your Dynamic Ingest request to produce 10-bit HEVC HDR10 renditions.

Overview

HDR10 is an open high-dynamic-range format that uses static SMPTE ST 2086 mastering-display metadata and content light-level values. When you supply this metadata at ingest, Brightcove transcodes a 10-bit HEVC rendition that signals HDR10 to compatible playback devices.

You provide the HDR metadata per asset, inline in the ingest request. There is no sidecar file. Brightcove validates the values at submission and attaches them to any 10-bit HEVC HDR10 rendition produced by your ingest profile. All other renditions in the profile are produced as SDR.

Prerequisites

Three conditions must be true before HDR metadata can be applied. Your Brightcove account team configures these during enablement.

HDR10 prerequisites
Prerequisite Why required
HEVC / Dynamic Delivery enabled on the account (configured by Brightcove). HDR10 is carried only on HEVC renditions; without HEVC delivery they are not produced.
An ingest profile that outputs a 10-bit HEVC HDR10 rendition (HEVC Main 10, 10-bit, HDR10 color). Mastering metadata is attached only to a rendition whose settings declare HEVC + 10-bit + HDR10.
A 10-bit HDR10 source file — an HDR10-graded mezzanine (e.g., ProRes or HEVC Main 10, BT.2020 primaries, PQ / SMPTE ST 2084 transfer). HDR10 cannot be synthesized from an SDR source.

Ingesting a video with HDR10 metadata

Send the HDR metadata in the master object of the Dynamic Ingest request, under the hdr_profile key. Select a profile that produces a 10-bit HEVC HDR10 rendition.

POST https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "master": {
    "url": "https://your-storage.example.com/video_hdr10.mxf",
    "hdr_profile": {
      "master_display": {
        "red":         { "x": 0.708,  "y": 0.292 },
        "green":       { "x": 0.170,  "y": 0.797 },
        "blue":        { "x": 0.131,  "y": 0.046 },
        "white_point": { "x": 0.3127, "y": 0.3290 },
        "luminance":   { "min": 0.0001, "max": 1000.0 }
      },
      "max_content_light_level":       1000,
      "max_frame_average_light_level": 400
    }
  },
  "profile": "your-10bit-hevc-hdr10-profile"
}

The hdr_profile object

All values follow SMPTE ST 2086. Chromaticity coordinates are CIE 1931 x/y values (range 0–1); luminance is in nits (candelas per square metre). The master_display object and all its sub-fields are required. max_content_light_level and max_frame_average_light_level are optional, but supply both or neither — sending only one returns a 422 validation error (HDR_CLL_PAIRING).

hdr_profile fields
Field Type Required Description
master_display.red / .green / .blue object {x, y} Yes CIE 1931 chromaticity of the mastering display primaries. For BT.2020: red ≈ 0.708/0.292, green ≈ 0.170/0.797, blue ≈ 0.131/0.046.
master_display.white_point object {x, y} Yes White point chromaticity. D65 ≈ 0.3127/0.3290.
master_display.luminance object {min, max} Yes Min and max display luminance in nits (e.g., 0.0001 to 1000).
max_content_light_level integer (nits) Optional, but supply both or neither — sending only one returns a 422 validation error (HDR_CLL_PAIRING). MaxCLL — the brightest single pixel in the content.
max_frame_average_light_level integer (nits) Optional, but supply both or neither — sending only one returns a 422 validation error (HDR_CLL_PAIRING). MaxFALL — the highest frame-average brightness.

Validation and errors

Brightcove validates hdr_profile values at submission.

HDR10 validation outcomes
Condition Result
A required master_display field is missing, or any submitted value is outside its valid ST 2086 range. 422 Unprocessable Entity — names the offending field. Omitting the optional max_content_light_level / max_frame_average_light_level fields is allowed; only an out-of-range value is rejected.
hdr_profile is present but the selected profile has no HEVC output at all. 400 Bad Request — fail fast. Note: CAE (context-aware encoding) profiles are not rejected with a 400 — they may emit HEVC downstream and fall into the silently-dropped bucket instead.
hdr_profile is present, profile has HEVC output, but no 10-bit HDR10 rendition. Job succeeds; HDR metadata is not applied (no capable rendition to attach to).
hdr_profile is absent. Standard ingest — behavior unchanged.

Limitations

  • HDR10 only. HDR10+, Dolby Vision, and HLG are out of scope.
  • 10-bit HEVC only. Metadata is applied only to a 10-bit HEVC HDR10 rendition. H.264 and 8-bit renditions remain SDR.
  • Per-asset metadata. No account- or profile-level HDR default exists.
  • Source must be HDR. HDR10 cannot be created from an SDR source.