AVIF HDR Mastering Luminance Metadata Tags
This article provides an overview of the key metadata tags and container boxes within the AV1 Image File Format (AVIF) used by software decoders and display pipelines to identify High Dynamic Range (HDR) mastering luminance levels. AVIF relies on the ISO Base Media File Format (ISOBMFF) architecture alongside underlying AV1 bitstream metadata to signal display peak brightness, black levels, and scene light statistics, ensuring images are accurately tone-mapped to target screens.
The
mdcv Item Property (Mastering Display Colour Volume)
The primary tag responsible for specifying mastering luminance limits
in an AVIF file is the Mastering Display Colour Volume
(mdcv) box. Defined by SMPTE ST 2086 and standardized for
ISOBMFF containers, the mdcv box details the physical
capabilities of the display monitor used during mastering.
It explicitly reports two core luminance properties:
max_display_mastering_luminance: The nominal maximum luminance of the mastering display, configured in units of 0.0001 candelas per square meter (\(\text{cd/m}^2\) or nits). For example, a 1,000-nit display is represented by a value of 10,000,000.min_display_mastering_luminance: The nominal minimum luminance (black point) of the mastering display, also indicated in units of 0.0001 nits (e.g., 0.005 nits is stored as 50).
In addition to luminance limits, mdcv defines the CIE
1931 \((x, y)\) chromaticity
coordinates for the mastering display's red, green, and blue primaries,
as well as the white point.
The
clli Item Property (Content Light Level Information)
While mdcv describes the monitor used during production,
the Content Light Level Information (clli) box informs the
reader about the actual light levels found within the encoded picture
data. Standardized under CTA-861-G and SMPTE ST 2086, it provides two
complementary luminance metrics:
max_content_light_level(MaxCLL): The maximum light level of any single pixel across the entire image, measured in whole candelas per square meter (\(\text{cd/m}^2\)).max_pic_average_light_level(MaxFALL): The maximum average light level across all active pixels in the picture, also represented in nits.
Display renderers use MaxCLL and MaxFALL to avoid clipping highlights and to balance global brightness when tone-mapping to screens that cannot reach the mastering peak.
The colr
Box (Colour Information Property)
Luminance metadata requires an electro-optical transfer function
(EOTF) to give the underlying encoded code values absolute or relative
physical meaning. The colr box with a nclx
(Colour Configuration Box) profile defines this context using three
parameters:
- Transfer Characteristics: Identifies the EOTF
curve. For HDR mastering, this is typically set to
16(SMPTE ST 2084 / Perceptual Quantizer, which maps absolute luminance up to 10,000 nits) or18(ARIB STD-B67 / Hybrid Log-Gamma). - Colour Primaries: Typically set to
9(ITU-R BT.2020) for wide-gamut HDR content. - Matrix Coefficients: Dictates the color space conversion (e.g., BT.2020 non-constant luminance).
Without an HDR transfer characteristic declared in the
colr box, readers cannot interpret the absolute values
contained within mdcv and clli.
Container-Level Properties vs. AV1 Sequence Metadata
In AVIF, these properties are primarily exposed at the file container
level as ISOBMFF item properties associated with the image item.
Exposing mdcv and clli at the container level
allows image viewers and browsers to read mastering luminance values
immediately during header parsing without decoding the underlying
compressed bitstream.
However, AV1 bitstream payload syntax also supports these tags directly through Open Bitstream Units (OBUs):
metadata_hdr_mdcv: Encapsulates identical SMPTE ST 2086 parameters inside the AV1 bitstream.metadata_hdr_clli: Encapsulates identical CTA-861-G parameters inside the AV1 bitstream.
According to the AVIF specification, if mastering luminance metadata
is present in both the ISOBMFF container boxes
(mdcv/clli) and the AV1 bitstream metadata
OBUs, the values should match, but conformant readers will prioritize
the container-level boxes during parsing.