AV1 Uniform Tile Grid vs Arbitrary Tile Grid
In the AV1 video codec, tiling divides video frames into independent rectangular regions to enable multi-threaded encoding and decoding. The AV1 specification supports two methods for structuring these regions: the uniform tile grid and the arbitrary tile grid. While a uniform tile grid spaces rows and columns evenly across the frame with minimal metadata overhead, an arbitrary tile grid allows encoders to explicitly define varying tile sizes to optimize for complex workloads and specific region-of-interest processing.
Understanding Tiles in AV1
Tiles in AV1 are self-contained rectangular blocks of video that can be decoded and encoded independently of adjacent tiles within the same frame. This partitioning is essential for modern high-resolution video (such as 4K and 8K), as it allows multi-core CPUs and parallel GPU hardware to distribute the processing workload simultaneously.
The Uniform Tile Grid
A uniform tile grid is the standard, most common method of splitting
a frame in AV1. In this mode, the encoder sets the
uniform_tile_spacing_flag to 1.
- Structure: The frame is divided into regular rows and columns where each tile column has approximately the same width, and each tile row has approximately the same height. Any remaining pixels that do not divide evenly are absorbed into the final boundary tiles.
- Signaling: Tile sizes are signaled using
logarithmic values (
tile_cols_log2andtile_rows_log2). Because of this, the bitstream header requires very few bits to communicate the frame's grid structure to the decoder. - Ideal Use Case: General video streaming, on-demand playback, and standard multi-threaded encoding where the priority is keeping bitstream overhead low while achieving balanced parallel processing.
The Arbitrary Tile Grid
An arbitrary (or non-uniform) tile grid removes the requirement for
equal spacing. It is activated when the encoder sets the
uniform_tile_spacing_flag to 0.
- Structure: The encoder explicitly dictates the width of each individual column and the height of each individual row. This allows for tiles of varying dimensions across the same frame.
- Signaling: Because each column width and row height must be individually declared, arbitrary tiling increases the signaling overhead in the frame header compared to the uniform approach.
- Ideal Use Case: Specialized streaming applications, such as 360-degree virtual reality (VR) video and viewport-dependent streaming. In VR, higher-resolution or custom-sized tiles can be allocated to the user's active field of view, while peripheral regions use differently sized tiles to save bandwidth and compute resources.
Key Differences
| Feature | Uniform Tile Grid | Arbitrary Tile Grid |
|---|---|---|
| Tile Sizing | Equal dimensions across rows/columns | Custom dimensions per row/column |
| Bitstream Overhead | Minimal (signaled via log2 values) | Higher (explicit per-column/row signaling) |
| Implementation Complexity | Simple, widely supported | Higher complexity for encoder rate control |
| Primary Advantage | Efficient parallel CPU/GPU scaling | Granular control for specialized video delivery |
Choosing between uniform and arbitrary tiling depends on the distribution pipeline. Uniform tiling remains the default choice for general consumer video, whereas arbitrary tiling serves targeted applications that require dynamic, localized resource allocation.