AV2 Codec ISO Media File Format Binding

Working Group Draft,

This version:
https://aomediacodec.github.io/av2-isobmff/v1.0.0.html
Issue Tracking:
GitHub
Editors:
TBD
TBD
Warning

This specification is still at draft stage and should not be referenced other than as a working draft.

Copyright 2026, Alliance for Open Media

Licensing information is available at https://www.aomedia.org/license/

The MATERIALS ARE PROVIDED “AS IS.” The Alliance for Open Media, its members, and its contributors expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to the materials. The entire risk as to implementing or otherwise using the materials is assumed by the implementer and user. IN NO EVENT WILL THE ALLIANCE FOR OPEN MEDIA, ITS MEMBERS, OR CONTRIBUTORS BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS DELIVERABLE OR ITS GOVERNING AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Abstract

This document specifies the storage format for [AV2] bitstreams in [ISOBMFF] tracks as well as in [CMAF] files.

1. Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

All of the text of this specification is normative except sections explicitly marked as non-normative, examples, and notes.

Examples in this specification are introduced with the words "for example" or are set apart from the normative text with class="example", like this:

This is an example of an informative example.

Informative notes begin with the word "Note" and are set apart from the normative text with class="note", like this:

NOTE: This is an example of an informative note.

↑ Back to Table of Contents

2. Bitstream features overview

An AV2 bitstream is composed of a sequence of OBUs (Open Bitstream Units), grouped into Temporal Units. A Temporal Unit consists of a Temporal Delimiter OBU and all following OBUs up to, but not including, the next Temporal Delimiter OBU. Each Temporal Unit is associated with a single presentation time.

Every OBU begins with a 1- or 2-byte header that carries the obu_type and the temporal layer identifier obu_tlayer_id. When the OBU header extension is present (i.e. when obu_header_extension_flag is equal to 1 in that header), two additional layer identifiers are carried: the embedded layer identifier obu_mlayer_id and the extended layer identifier obu_xlayer_id. Depending on its type, an OBU can carry configuration information (e.g., a Sequence Header OBU or Layer Configuration Record OBU), metadata, or coded video data.

A Temporal Unit MAY contain multiple coded pictures but only one is output. AV2 defines a number of coded-frame OBU types, including Closed Loop Key OBUs, Open Loop Key OBUs, regular and leading tile-group OBUs, Switch OBUs, OBU_RAS_FRAME, Bridge Frame OBUs, and TIP (Temporally Interpolated Prediction) frames.

Frames that can be decoded without reference to other frames are Key Frames (carried in a Closed Loop Key OBU or an Open Loop Key OBU) and Intra frames. All other coded frames - including Inter Frames, Switch Frames, RAS frames, Bridge frames, TIP frames, and frames with show_existing_frame equal to 1 - have coding dependencies on other frames in the same or previous Temporal Units.

A Closed Random Access is the random access process that applies to an extended layer whose first coded frame is a Key Frame carried in a Closed Loop Key OBU. It starts a new coded video sequence for the extended layer; the layer’s reference frame buffers are invalidated and every subsequent frame of that layer can be decoded. This is the primary random-access mechanism.

An Open Random Access is the random access process that applies to an extended layer whose first coded frame is a Key Frame carried in an Open Loop Key OBU. During sequential decoding, an Open Random Access point does not start a new coded video sequence; however, when a decoder initiates decoding at that point, the decoding process is treated as if it were the start of a new coded video sequence for the extended layer. Leading frames that follow an Open Random Access point MAY reference frames that precede it, and are discarded when decoding begins at the Open Random Access point.

In addition to Key Frames, AV2 provides two further mechanisms that support random access or stream switching: a RAS frame (OBU_RAS_FRAME) is an inter-predicted frame that uses long-term reference frames and enables random access or switching without inserting a full key frame; a Switch Frame (OBU_SWITCH) is an inter-predicted frame that enables switching between representations at a given point, typically in adaptive streaming scenarios.

AV2 supports three scalability dimensions: temporal layers (identified by obu_tlayer_id), embedded layers (identified by obu_mlayer_id), and extended layers (identified by obu_xlayer_id). The reserved obu_xlayer_id value GLOBAL_XLAYER_ID (equal to 31, as defined in [AV2]) denotes global scope and is used by OBUs that do not belong to any specific extended layer (such as the Temporal Delimiter OBU). A bitstream that uses a single distinct non-global value of obu_xlayer_id is a Singlestream bitstream; a bitstream that uses two or more distinct non-global values is a Multistream bitstream.

AV2 defines two distinct Metadata OBU types for carrying metadata: OBU_METADATA_SHORT, using the metadata short OBU syntax, and OBU_METADATA_GROUP, using the metadata group OBU syntax. A separate OBU type carries film grain synthesis parameters; its presence is indicated by the film_grain_params_present flag in the Sequence Header OBU.

The Sequence Header OBU also carries the bitstream’s profile, level, and - when applicable - tier, as defined in Annex A of [AV2].

The Sequence Header OBU carries a monotonic_output_order_flag that defines the output mode of the associated coded video sequence.

When monotonic_output_order_flag is equal to 1, the output order of coded output frame equals their decoding order within the coded video sequence. Within a sample, the composition time (CTS) of the associated output frame is equal to the sample’s decoding time (DTS); the sample MAY additionally contain hidden frames.

When monotonic_output_order_flag is equal to 0, the output order of coded output frames MAY differ from their decoding order. The composition time of each sample is then derived from a ctts box that signals the offset between the sample’s decoding time (DTS) and the composition time of its associated output frame. As in the monotonic case, a sample MAY additionally contain hidden frames.

NOTE: Non-monotonic output mode is new in AV2; AV1 supports only the monotonic mode.

↑ Back to Table of Contents

3. Basic Encapsulation Scheme

This section describes the basic data structures used to signal encapsulation of AV2 bitstreams in [ISOBMFF] containers.

There are two locations where OBUs can be found in a file conformant to this specification:

An AV2 sample is the union of a sample inclusive of the OBUs it carries, the OBUs carried in the AV2CodecConfigurationBox of the corresponding AV2SampleEntry, and an implicit Temporal Delimiter OBU.

NOTE: This specification refers to samples as defined in [ISOBMFF], which are not to be mistaken with samples or sample values as defined in the [AV2] specification.

3.1. General Requirements & Brands

A file conformant to this specification satisfies the following:

3.2. AV2 Sample Entry and Configuration

3.2.1. AV2 Sample Entry

The AV2SampleEntry extends VisualSampleEntry and signals a track carrying AV2 samples.

class AV2SampleEntry extends VisualSampleEntry('av02') {
  AV2CodecConfigurationBox config;
}
An AV2SampleEntry SHALL contain exactly one AV2CodecConfigurationBox. An AV2SampleEntry SHALL contain exactly one colr box with the nclx colour_type. Each value among colour_primaries, transfer_characteristics, and matrix_coefficients carried in that colr box: The value of full_range_flag carried in that colr box SHOULD equal the corresponding effective value of the AV2 bitstream carried by the track and SHALL take precedence over the corresponding effective value of the AV2 bitstream carried by the track. An AV2SampleEntry SHALL contain exactly one pixi box. That box SHALL have the least significant bit of px_flags enabled. The constraints described in § 3.3.4 Layers apply to that AV2SampleEntry.

NOTE: An AV2SampleEntry may contain additional sub-boxes permitted by [ISOBMFF] for a VisualSampleEntry, such as colr with a colour_type value other than nclx, pasp, clli, mdcv or btrt. They may be located before and/or after the AV2CodecConfigurationBox.

3.2.2. AV2 Codec Configuration Box

The AV2CodecConfigurationBox carries the decoder initialisation data required to decode the AV2 samples of a track.

aligned(8) class AV2CodecConfigurationBox extends FullBox('av2C', 0, av2c_flags)
{
  unsigned int(5) profile_idc;
  unsigned int(5) level_idx;
  unsigned int(1) tier;
  unsigned int(1) initial_presentation_delay_present;
  if (initial_presentation_delay_present) {
    unsigned int(4) initial_presentation_delay_minus_one;
  } else {
    unsigned int(4) reserved1 = 0;
  }
  if ((av2c_flags & multistream_present) != 0) {
    unsigned int(16) max_canvas_width_minus_1;
    unsigned int(16) max_canvas_height_minus_1;
    unsigned int(3) max_num_substreams_minus2;
    unsigned int(5) max_xlayer_cnt_minus1;
    unsigned int(3) max_mlayer_cnt_minus1;
    unsigned int(1) atlas_present;
    unsigned int(1) alpha_atlas_present;
    unsigned int(1) lcr_present;
    unsigned int(2) reserved2 = 0;
  }
  unsigned int(8) config_obus_count;
  for (i = 0; i < config_obus_count; ++i) {
    unsigned int(8) config_obu[];
  }
}
The reserved1 and reserved2 fields SHALL be set to 0. Readers SHALL ignore its value.

av2c_flags is a 24-bit field. The following flag is defined:

All other bits of av2c_flags SHALL be set to 0. Readers SHALL ignore their value.

profile_idc, level_idx and tier are the profile, level and tier required to decode the track. For a track that is not a Multistream, they SHALL equal the maximum of seq_profile_idc, seq_level_idx and seq_tier over the Sequence Header OBUs applying to the AV2SampleEntry. For a Multistream track, they SHALL equal the maximum of multistream_profile_idc, multistream_level_idx and multistream_tier over the Multi Stream Decoder Operation OBUs applying to the AV2SampleEntry.

initial_presentation_delay_present and initial_presentation_delay_minus_one signal, when present, the number of frames minus one that the decoder should wait after the first sample’s decode before starting output.

max_canvas_width_minus_1 and max_canvas_height_minus_1 are the maximum canvas dimensions, minus one, of any composition of the track. max_num_substreams_minus2, max_xlayer_cnt_minus1 and max_mlayer_cnt_minus1 are the maximum number of sub-streams minus two, extended layers minus one and embedded layers minus one, over the whole track. atlas_present, alpha_atlas_present and lcr_present indicate that the track contains, respectively, OBU_ATLAS_SEGMENT OBUs, alpha atlas segments and Layer Configuration Record OBUs.

The summary fields of an AV2CodecConfigurationBox SHALL describe the maximum capability required to decode every AV2 sample associated with the corresponding AV2SampleEntry.

NOTE: Bit depth and chroma format are not repeated in the AV2CodecConfigurationBox: they are described by the mandatory pixi box of the AV2SampleEntry, as specified in § 3.3.5 Summary information in the pixi box.

config_obus_count is the number of config_obu. A value of 0 selects the in-band carriage mode described in § 3.2.3 Carriage modes.

config_obu is a byte array carrying one OBU and its length as described in § 3.2.2.1 config_obu.

3.2.2.1. config_obu
Each config_obu SHALL carry a single OBU preceded by a leb128() num_bytes_in_obu value giving the byte length of that OBU, as specified in the Length delimited bitstream format from Annex B of [AV2]. The OBUs within an AV2CodecConfigurationBox SHALL appear in the order specified by the ordering of OBUs in a temporal unit in [AV2], with the following constraint:
AV2 OBU type Be present in AV2CodecConfigurationBox (in config_obu) Be present in a sample
OBU_SEQUENCE_HEADER SHALL SHALL NOT
OBU_TEMPORAL_DELIMITER SHALL NOT SHALL NOT (the AV2 sample boundary already delimits the temporal unit)
OBU_MULTI_FRAME_HEADER SHALL NOT MAY
OBU_CLOSED_LOOP_KEY SHALL NOT MAY
OBU_OPEN_LOOP_KEY SHALL NOT MAY
OBU_LEADING_TILE_GROUP SHALL NOT MAY
OBU_REGULAR_TILE_GROUP SHALL NOT MAY
OBU_METADATA_SHORT or OBU_METADATA_GROUP, when its contents do not change for the duration of the active AV2SampleEntry MAY SHOULD NOT
OBU_METADATA_SHORT or OBU_METADATA_GROUP, otherwise SHOULD NOT MAY
OBU_SWITCH SHALL NOT MAY
OBU_LEADING_SEF SHALL NOT MAY
OBU_REGULAR_SEF SHALL NOT MAY
OBU_LEADING_TIP SHALL NOT MAY
OBU_REGULAR_TIP SHALL NOT MAY
OBU_BUFFER_REMOVAL_TIMING SHALL NOT MAY
OBU_LAYER_CONFIGURATION_RECORD MAY SHALL NOT
OBU_ATLAS_SEGMENT SHALL NOT MAY
OBU_OPERATING_POINT_SET SHALL NOT MAY
OBU_BRIDGE_FRAME SHALL NOT MAY
OBU_MSDO SHALL NOT MAY
OBU_RAS_FRAME SHALL NOT MAY
OBU_QUANTIZATION_MATRIX SHALL NOT MAY
OBU_FILM_GRAIN, when its contents do not change for the duration of the active AV2SampleEntry MAY SHOULD NOT
OBU_FILM_GRAIN, otherwise SHOULD NOT MAY
OBU_CONTENT_INTERPRETATION MAY SHALL NOT
OBU_PADDING SHALL NOT SHALL NOT (byte-level padding within a track is achieved using ISOBMFF mechanisms, e.g. free/skip boxes or sample size signalling)
Figure 3.1: List of AV2 OBU types and where they can be found
For a Multistream bitstream in out-of-band mode, the Sequence Header OBU of each extended layer together with the stream’s global configuration OBUs SHALL be carried by the associated AV2CodecConfigurationBox, in the order specified by the ordering of OBUs in a temporal unit in [AV2].

Editor’s note: for a Multistream bitstream, the AV2CodecConfigurationBox contains a Sequence Header OBU for each extended layer. The impact on multi-layer use cases — including how a reader determines the active decoder configuration per extended layer from multiple Sequence Header OBUs — needs investigation. Also how profile / level is signalled to decoder API for layers. etc.

3.2.3. Carriage modes

An AV2SampleEntry uses one of two carriage modes for the High-Level Syntax OBUs that it applies to:

All AV2SampleEntry of a track SHALL use the same carriage mode. In in-band mode, the OBUs carried in samples SHALL appear in the order specified by the ordering of OBUs in a temporal unit in [AV2].

3.2.4. Configuration changes

In out-of-band mode, a change of configuration SHOULD be signalled by a new AV2SampleEntry, selected through sample_description_index in the SampleToChunkBox (stsc) or the TrackFragmentHeaderBox (tfhd).

In in-band mode, a change of configuration is signalled by new High-Level Syntax OBUs in the next sync AV2 sample. In in-band mode, the configuration SHALL NOT change at an AV2 sample that is not a sync AV2 sample. The summary fields of the AV2CodecConfigurationBox describe the maximum capability required for the complete track.

3.3. AV2 Sample Format

3.3.1. General

The AV2 sample boundary delimits the temporal unit.

Each OBU within a sample SHALL be framed using the Length delimited bitstream format specified in Annex B of [AV2]: each OBU is preceded by a leb128() num_bytes_in_obu field giving the byte length of the OBU that follows. Figure 3.2 illustrates this mapping.
Mapping of AV2 temporal units to ISOBMFF track samples
Figure 3.2: Example mapping of AV2 temporal units into the ISOBMFF sample format.

3.3.2. OBUs in samples

The OBUs within a sample SHALL appear in the order specified by the ordering of OBUs in a temporal unit in [AV2], with the following constraint:

Editor’s note: the Content Interpretation OBU (OBU_CONTENT_INTERPRETATION) carries picture-level interpretation metadata (for example, colour description) that overlaps ISOBMFF container-level signalling such as the ColourInformationBox. Whether to carry it in the track or replace it entirely with container-level signalling is to be resolved in this version.

3.3.3. Sync sample

An AV2 sample is a sync AV2 sample if, for every coded extended layer unit present in the AV2 sample, the first coded frame OBU of that coded extended layer unit has obu_type equal to OBU_CLOSED_LOOP_KEY. Such an AV2 sample is a Closed Random Access point for the carried bitstream and corresponds to a SAP of type 1 or 2 as defined in Annex I of [ISOBMFF].

A sync AV2 sample SHALL be self-sufficient for starting decoding at that point for all layers: every OBU referenced by the coded frame OBUs of the sync AV2 sample SHALL be available either by being carried in the AV2CodecConfigurationBox of the active AV2SampleEntry or by being present in the sample, as required by the availability of HLS OBUs in [AV2]. In in-band mode, a sync AV2 sample SHALL contain the Sequence Header, Multi Stream Decoder Operation and Atlas Segment OBUs required to decode it, and SHALL be a Random Access Point as defined in [AV2].

NOTE: In ISOBMFF terms, sync samples are signalled using the SyncSampleBox (stss) in unfragmented tracks, or by setting sample_is_non_sync_sample equal to 0 in fragmented tracks. When every sample in a track is a sync sample, the SyncSampleBox is omitted in unfragmented tracks (per [ISOBMFF]), and in fragmented tracks this is expressed through the default sample flags of the MovieExtendsBox (trex) or TrackFragmentHeaderBox (tfhd) with no per-sample override.

3.3.4. Layers

The following applies to each coded extended layer unit in an AV2 sample associated with a pixi box:

A PixelInformationBox with px_flags=1 and channel_idc set to 2, 3, 4, 1, 0, 0, 0, 5, 6 matches the following embedded layers: TEXTURE_LAYER/CHROMA_FORMAT_444, AUX_LAYER/SEGMENTATION_AUX/CHROMA_FORMAT_400, AUX_LAYER/GAIN_MAP_AUX/CHROMA_FORMAT_420, AUX_LAYER/ALPHA_AUX/CHROMA_FORMAT_400, AUX_LAYER/DEPTH_AUX/CHROMA_FORMAT_400.
A PixelInformationBox with px_flags=1 and channel_idc set to 7, 2, 3, 4 matches the following embedded layers: TEXTURE_LAYER/CHROMA_FORMAT_400, TEXTURE_LAYER/CHROMA_FORMAT_444.

3.3.5. Summary information in the pixi box

The AV2CodecConfigurationBox carries profile, level and tier but no bit depth or chroma format. Readers obtain them from the pixi box of the AV2SampleEntry, in addition to the channel rules of § 3.3.4 Layers:

Information Container-level source Bitstream source
Bit depth per channel pixi bits_per_channel bit_depth_idc of the Sequence Header OBU, or lcr_bit_depth_idc
Channel count and kind pixi num_channels, channel_idc lcr_layer_type, lcr_auxiliary_type, chroma_format_idc
Chroma format pixi subsampling_type chroma_format_idc or lcr_chroma_format_idc
Chroma sample position pixi subsampling_location ci_chroma_sample_position_top of the Content Interpretation OBU
Profile, level, tier AV2CodecConfigurationBox summary fields Sequence Header OBU
Colour primaries, transfer, matrix, range colr with nclx Sequence Header OBU or Content Interpretation OBU
Figure 3.3: Where summary information is signalled
The num_channels of the pixi box SHALL equal the sum, over the embedded layers of each coded extended layer unit, of 1 for each embedded layer with CHROMA_FORMAT_400 and 3 for each other embedded layer. The bits_per_channel of each channel SHALL equal the bit depth of the embedded layer carrying it: 8 for bit_depth_idc 1, 10 for 0 and 12 for 2. Channels of different embedded layers, such as colour and alpha, MAY have different bit depths. For an embedded layer with a chroma format other than CHROMA_FORMAT_400, the pixi entries of its second and third colour channels (channel_idc 3 and 4) SHALL have subsampling_flag equal to 1 and subsampling_type equal to 0 (4:4:4) for CHROMA_FORMAT_444, 1 (4:2:2) for CHROMA_FORMAT_422 and 2 (4:2:0) for CHROMA_FORMAT_420. The pixi entries of all other channels SHALL have subsampling_flag equal to 0 or subsampling_type equal to 0. The component_format of every channel SHALL indicate an unsigned integer format. For 4:2:0 chroma channels, subsampling_location values 0 to 5 SHALL correspond to CSP_LEFT, CSP_CENTER, CSP_TOPLEFT, CSP_TOP, CSP_BOTTOMLEFT and CSP_BOTTOM respectively. If the pixi box disagrees with the bitstream on bit depth, channel count or chroma format, the file SHALL be considered non-conformant. The pixi box does not take precedence over the bitstream.

Editor’s note: pixi semantics follow the draft FDIS of [ISOBMFF] 9th edition (Tables 8 and 9) and need re-checking against the published text. Open: the component_format value for unsigned integer (ISO/IEC 23001-17); 4:2:2 subsampling_location mapping to AV2 chroma sample positions 0 and 1; channel_idc for channels with no defined meaning (segmentation, gain map).

3.3.6. AV2 sample reconstruction

A byte sequence containing a conformant [AV2] Temporal Unit using the Length delimited bitstream format specified in Annex B of [AV2] MAY be reconstructed from the OBUs of an AV2 sample by applying the following steps:

  1. Write a Temporal Delimiter OBU, preceded by its leb128() length prefix.

  2. Write the OBUs carried in the sample, in the same order as present in the sample, each preceded by its leb128() length prefix as present in the sample.

  3. In out-of-band mode, insert each OBU carried in the AV2CodecConfigurationBox of the corresponding AV2SampleEntry, preceded by its leb128() length prefix as present in the AV2SampleEntry, between two leb128()-prefixed OBUs already present in the byte sequence, so that:

Note: AV2-ISOBMFF reader implementations do not have to reconstruct the contiguous byte sequence containing a conformant AV2 bitstream or Temporal Unit in memory upon decoding, but they must have all the data to do so: all OBUs, and enough information to deterministically reorder the OBUs if necessary.

↑ Back to Table of Contents

4. CMAF AV2 track format

TBD

↑ Back to Table of Contents

5. Common Encryption

TBD

↑ Back to Table of Contents

6. Codecs Parameter String

DASH and other applications require defined values for the Codecs parameter specified in [RFC6381] for ISO Media tracks. The codecs parameter string for the AOM AV2 codec is as follows:

<sample entry 4CC>.<profile>.<level><tier>.<bitDepth>.<monochrome>.<chromaSubsampling>.
<colorPrimaries>.<transferCharacteristics>.<matrixCoefficients>.<videoFullRangeFlag>

All fields following the sample entry 4CC are expressed as double digit decimals, unless indicated otherwise. Leading or trailing zeros cannot be omitted.

The profile parameter value SHALL equal the value of seq_profile_idc in the first Sequence Header OBU. The level parameter value SHALL equal the level value indicated by seq_level_idx in the first Sequence Header OBU. The tier parameter value SHALL be equal to M when the seq_tier value in the first Sequence Header OBU is equal to 0, and H when it is equal to 1. The bitDepth parameter value SHALL equal the value of the BitDepth variable as defined in [AV2] derived from the first Sequence Header OBU. The monochrome parameter value, represented by 0 or 1, SHALL equal the value of the Monochrome variable as defined in [AV2] derived from the first Sequence Header OBU.

The chromaSubsampling parameter value, represented by a three-digit decimal:

  1. SHALL have its first digit equal to the SubsamplingX variable as defined in [AV2] derived from the first Sequence Header OBU.
  2. SHALL have its second digit equal to the SubsamplingY variable as defined in [AV2] derived from the first Sequence Header OBU.
  3. If SubsamplingX is set to 1, a Content Interpretation OBU is present with the same obu_tlayer_id, obu_mlayer_id, obu_xlayer_id as the first Sequence Header OBU, and ci_chroma_sample_position_present_flag is set to 1 in that Content Interpretation OBU, then the third digit SHALL be equal to ci_chroma_sample_position_top from that Content Interpretation OBU, otherwise it SHALL be set to 0.
The colorPrimaries, transferCharacteristics, matrixCoefficients, and videoFullRangeFlag parameter values SHALL equal the values of matching fields in the colr box with the nclx colour_type.

NOTE: A colr box with the nclx colour_type is mandated to be present in § 3.2.1 AV2 Sample Entry.

NOTE: The third digit values of the chromaSubsampling parameter differs from how they are defined in AV1-ISOBMFF. The values of the other fields of the Codecs parameter have the same meaning in this document and in AV1-ISOBMFF.

The videoFullRangeFlag is represented by 0 or 1.

If the codecs parameter string ends with ".0.116.01.01.01.0" (containing all the default values below), that trailing part of the string SHOULD be omitted.

For example, codecs="av02.0.04M.10.0.112.09.16.09.0" represents [AV2] Main_420_10_IP0 profile at Interoperability Point 0, level 4.0, Main tier, 10-bit content, non-monochrome, with 4:2:0 chroma subsampling co-located with (0, 0) luma sample, ITU-R BT.2100 color primaries, ITU-R BT.2100 PQ transfer characteristics, ITU-R BT.2100 YCbCr color matrix, and studio swing representation.

The parameters sample entry 4CC, profile, level, tier, and bitDepth are all mandatory fields. If any of these fields are empty, or not within their allowed range, the processing device SHOULD treat it as an error. All the other fields (including their leading '.') are optional, mutually inclusive (all or none) fields. If not specified then the values listed in the table below are assumed.
mono_chrome 0
chromaSubsampling 116 (4:2:0 with CSP_UNSPECIFIED chroma sample position)
colorPrimaries 01 (ITU-R BT.709)
transferCharacteristics 01 (ITU-R BT.709)
matrixCoefficients 01 (ITU-R BT.709)
videoFullRangeFlag 0 (studio swing representation)

The string codecs="av02.0.01M.08" in this case would represent [AV2] Main_420_10_IP0 profile at Interoperability Point 0, level 2.1, Main tier, 8-bit content with 4:2:0 chroma subsampling, ITU-R BT.709 color primaries, transfer characteristics, matrix coefficients, and studio swing representation.

If any character that is not '.', digits, part of the AV2 4CC, or a tier value is encountered, the string SHALL be interpreted ignoring all the characters starting from that character.

Index

Terms defined by this specification

Terms defined by reference

References

Normative References

[AV2]
AV2 Bitstream & Decoding Process Specification. Standard. URL: https://av2.aomedia.org/v1.0.0/index.html
[CMAF]
Information technology — Multimedia application format (MPEG-A) — Part 19: Common media application format (CMAF) for segmented media. Standard. URL: https://www.iso.org/standard/71975.html
[ISOBMFF]
Information technology — Coding of audio-visual objects — Part 12: ISO base media file format. Standard. URL: https://www.iso.org/standard/83102.html
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. Standard. URL: https://www.rfc-editor.org/info/rfc2119
[RFC6381]
R. Gellens; D. Singer; P. Frojdh. The 'Codecs' and 'Profiles' Parameters for "Bucket" Media Types. August 2011. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc6381/
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. Standard. URL: https://www.rfc-editor.org/info/rfc8174