How AV1 Implements HDR Color Signaling
This article provides an overview of how the AOMedia Video 1 (AV1) codec standardizes High Dynamic Range (HDR) color signaling. AV1 conveys HDR information directly within its bitstream structure using Sequence Header syntax elements and dedicated Metadata Open Bitstream Units (OBUs). This framework enables decoders and display pipelines to accurately interpret high bit-depth pixel data, wide color gamuts, electro-optical transfer functions (EOTFs), and both static and dynamic luminance metadata.
Sequence Header Color Configuration
AV1 handles fundamental color properties within the
color_config syntax structure located inside the Sequence
Header OBU. Because this header governs the entire sequence, it sets the
baseline color properties for all subsequent video frames until a new
sequence begins.
The color_config syntax specifies four critical
parameters:
- Bit Depth (
BitDepth): HDR requires higher bit precision to prevent banding. AV1 signals 8-bit, 10-bit, or 12-bit pixel depth. Profiles 0 (Main) and 2 (Professional) support 10-bit, while Profile 2 also supports 12-bit. - Color Primaries (
color_primaries): Identifies the chromaticity coordinates of the source color space. For standard HDR delivery, this is typically set to12, representing ITU-R BT.2020. - Transfer Characteristics
(
transfer_characteristics): Defines the EOTF curve used to map code values to linear display light. The primary values used for HDR include:16: SMPTE ST 2084 (Perceptual Quantizer / PQ), the standard EOTF for HDR10, Dolby Vision, and HDR10+.18: ARIB STD-B67 (Hybrid Log-Gamma / HLG), commonly used for broadcast applications.
- Matrix Coefficients
(
matrix_coefficients): Specifies the transformation matrix used to derive luma and chroma signals from red, green, and blue (RGB) primaries. HDR workflows typically set this to9(BT.2020 non-constant luminance) or14(BT.2100-ICTCP). - Color Range (
color_range): A single bit signaling either Studio Range (narrow/limited, values 64–940 in 10-bit) or Full Range (0–1023 in 10-bit).
If these parameters conform to the standard sRGB/BT.709 space, the
bitstream can set color_description_present_flag to
0, but for HDR formats, this flag is set to 1
to explicitly declare the parameters.
Chroma Subsampling and Sample Positioning
Proper HDR tone mapping requires exact alignment between luma and
chroma samples. Within the color_config block:
- Subsampling: AV1 explicitly signals
subsampling_xandsubsampling_yto indicate 4:2:0, 4:2:2, or 4:4:4 sampling formats. - Chroma Sample Position: When 4:2:0 subsampling is
applied, AV1 uses
chroma_sample_positionto specify whether chroma samples are collocated with luma samples (e.g., vertical alignment matching ITU-R BT.2020) or positioned half-way between luma samples (center-aligned).
Static HDR Metadata Signaling
Beyond primary color spaces, AV1 carries static mastering display
metadata via discrete Open Bitstream Units designated as
OBU_METADATA. These packets can be injected at keyframe
intervals or repeated periodically to allow decoders to reconstruct
target display capabilities.
AV1 specifies two core static metadata types:
1. Mastering Display Color Volume (MDCV)
Signaled via METADATA_TYPE_HDR_MDCV (Type 1), this block
implements the SMPTE ST 2086 specification. It details the display
parameters of the monitor used during mastering:
- Display Primaries: Normalized chromaticity coordinates (\(x, y\)) for red, green, and blue.
- White Point: Normalized chromaticity coordinates (\(x, y\)) of the mastering monitor's white balance (typically D65).
- Luminance Limits: The minimum and maximum display luminance, measured in candelas per square meter (\(\text{cd/m}^2\) or nits), expressed in fixed-point values.
2. Content Light Level (CLL)
Signaled via METADATA_TYPE_HDR_CLL (Type 2), this block
implements the CTA-861-G standard to describe scene brightness across
the entire video:
- MaxCLL (Maximum Content Light Level): The luminance value of the brightest single pixel in the entire stream, measured in nits.
- MaxFALL (Maximum Frame-Average Light Level): The highest average picture luminance across any single frame in the stream, measured in nits.
Receiving displays use MDCV and CLL data to guide static tone mapping algorithms, compressing out-of-gamut values while preserving specular highlights according to display hardware capabilities.
Dynamic Metadata Implementation
AV1 supports frame-by-frame and scene-by-scene dynamic tone mapping formats using generalized user-data wrappers.
Rather than relying on proprietary bitstream syntax, AV1 employs
METADATA_TYPE_ITUT_T35 (Type 4). This metadata type
encapsulates ITU-T Recommendation T.35 payload structures, which
define:
- Country Code: Standardized geographic indicator.
- Terminal Provider Code: Specific identifier for the standard body or vendor (e.g., SMPTE, Dolby, or HDR10+ Consortium).
- Payload: Frame-accurate metadata packets containing dynamic parametric curves, distribution percentiles (such as 1%, 50%, 99% light levels), and targeted contrast offsets.
By transmitting dynamic metadata within ITU-T T.35 OBUs directly alongside the relevant frame packets, AV1 allows HDR10+ and Dolby Vision metadata to stay synchronized with video frames through transcoding, decapsulation, and playback pipelines.