AV1 Bitstream Packaging for Progressive vs Byte-Range

AV1 video streams are packaged differently depending on whether they are delivered via progressive download or byte-range requests used in adaptive bitrate streaming. While both methods encapsulate AV1 Open Bitstream Units (OBUs) inside container formats like the ISO Base Media File Format (ISOBMFF/MP4), progressive downloads rely on a single, continuous file with a centralized metadata index, whereas byte-range delivery requires fragmented file structures, periodic index markers, and strictly aligned keyframe boundaries to allow dynamic, non-linear chunk fetching.

Progressive Download Packaging

In a progressive download workflow, the media is packaged as a monolithic file intended to be read sequentially from start to finish. The container structure is optimized to begin playback as soon as the initial data reaches the client.

  • Metadata Placement (moov atom): The file structure places the file-type box (ftyp) and the movie box (moov) at the very beginning of the file, preceding the media data (mdat). This is often referred to as "fast start" or Web-optimized layout. The moov box contains the AV1 configuration box (av1C), which stores the initial Sequence Header OBU and decoder configuration.
  • Sample Indexing: The moov box contains a complete set of static sample tables (stbl), mapping every frame's decode time, presentation time, size, and byte offset within the large mdat payload.
  • Bitstream Flow: The AV1 OBUs reside linearly inside a single, large mdat container. While clients can issue basic HTTP Range requests to scrub forward, the browser must first parse the entire moov atom to calculate where those target sample byte offsets are located.

Byte-Range Request Packaging

Byte-range delivery—commonly used in DASH, HLS, and CMAF architectures—packages AV1 into fragmented MP4 (fMP4) structures. Here, playback involves fetching independent media chunks using byte-range headers or segmented URLs based on a manifest (MPD or M3U8).

  • Split Initialization and Media: The bitstream is decoupled. An initialization segment contains the ftyp and moov boxes (including av1C), establishing track parameters and decoder setup without any audio or video frames. This initialization block is requested once per stream or bitrate switch.
  • Fragmented Structures (moof + mdat): Instead of one massive mdat, the video is chopped into short intervals (typically 2 to 6 seconds). Each interval consists of a Movie Fragment box (moof) followed immediately by its corresponding media data (mdat). The moof contains a Track Fragment Run box (trun), which provides local sample durations, sizes, and offsets valid only for that specific fragment.
  • Segment Indexing (sidx): For single-file adaptive streaming workflows, Segment Index boxes (sidx) are positioned before media fragments. The sidx specifies the exact byte offsets, durations, and SAP (Stream Access Point) types of downstream fragments, enabling players to issue precise byte-range requests without downloading the entire file index upfront.

OBU Alignment and Decoder Synchronization

The way raw AV1 OBUs are arranged inside the container directly impacts how decoders handle random access across both delivery modes.

  • Sequence Header Distribution: In progressive downloads, the Sequence Header OBU can exist strictly within the container-level av1C box or appear infrequently in the stream. In byte-range requests, every segment targeted by a byte-range request must begin with a closed Key Frame OBU, preceded by a Sequence Header OBU and a Temporal Delimiter OBU. This ensures the decoder can immediately initialize and decode the segment when a player switches bitrates or seeks.
  • Metadata Overhead: Progressive packaging has lower overall overhead because sample indices and header configurations are written once. Byte-range packaging introduces structural overhead through repeated moof, mfhd, and traf boxes alongside duplicate inline Sequence Header OBUs to maintain fragment independence.