AV1 OBU Headers: Stream Isolation and Compatibility
The AOMedia Video 1 (AV1) bitstream relies on a modular Open Bitstream Unit (OBU) architecture to guarantee robust stream parsing isolation and seamless backward compatibility. By decoupling packet transport from syntax decoding through standardized headers, explicit payload boundaries, and extensibility flags, AV1 ensures that legacy decoders and lightweight demuxers can safely traverse, skip, or isolate data units without risking stream corruption or requiring payload-level decoding.
The Role of
obu_has_size_field in Stream Isolation
The primary mechanism for parsing isolation in AV1 is the explicit
payload size signaling in the OBU header. An OBU begins with a mandatory
1-byte header, which contains the obu_has_size_field
flag.
When obu_has_size_field is set to 1, the header is
followed by a variable-length integer encoded in LEB128 (Little-Endian
Base 128) format that explicitly states the byte length of the OBU's
payload. This design enables byte-level stream parsing isolation:
- Payload Independent Skipping: Parsers, splitters, and decoders do not need to parse the internal syntax of an OBU to find where it ends. They simply read the LEB128 integer and advance the read pointer directly to the start of the next OBU.
- Error Resilience: Bitstream corruption inside a specific OBU does not desynchronize the overall stream parser. Because the parser knows the boundary of the next OBU, parsing can immediately recover at the subsequent unit boundary.
Handling Unknown Types and Forward Compatibility
AV1 reserves 4 bits within the base OBU header for
obu_type, defining elements such as Sequence Headers, Frame
Headers, Tile Groups, and Metadata.
Because the bitstream format is expected to evolve, the specification mandates that decoders ignore unrecognized OBU types. Combined with the explicit size field, an older (legacy) decoder encountering a newly defined OBU type from a future standard extension can safely read the type, read the size, and bypass the payload entirely. This guarantees forward compatibility: future enhancements, non-standard private payloads, or new metadata types do not break existing compliant decoders.
Scalability and Layer Isolation via Extension Headers
The OBU header includes an obu_extension_flag. When
asserted, a 1-byte extension header is appended directly after the base
header, introducing two critical fields:
temporal_id: Identifies the temporal layer (frame rate hierarchy).spatial_id: Identifies the spatial layer (resolution hierarchy).
This mechanism allows middleboxes, media servers, and lightweight stream splitters to inspect and filter layers without reading the compressed video payload. A selective forwarding unit (SFU) can prune higher spatial or temporal layers simply by inspecting these header bytes and discarding the designated byte ranges, providing stream manipulation isolation directly at the network layer.