AV1 128x128 Superblock Recursive Partitioning
This article explains how the AV1 video codec divides a 128x128 superblock into smaller transform and prediction blocks using its recursive partition tree. It covers the 10 distinct partition types available in the specification, the recursive traversal process down to the minimum 4x4 block size, and the decision-making rules that guide block decomposition.
The Superblock Foundation
In AV1, a frame is divided into regular processing grids called superblocks. While the codec supports both 64x64 and 128x128 configurations, 128x128 is the default and standard size for high-resolution content (such as 1080p and 4K). Processing a larger block reduces side-information overhead in flat, low-detail areas. However, because video frames contain complex textures and varied motion, a 128x128 block must be subdivided into smaller sub-blocks through recursive tree partitioning.
The 10 AV1 Partition Modes
Unlike older codecs (such as VP9, which only supported 4-way quad-tree splits), AV1 introduces a rich 10-way partition tree structure. At any given depth in the hierarchy, an encoder can choose one of the following partition types:
- PARTITION_NONE: The block is not split further and is coded as a single unit (e.g., keeping the full 128x128).
- PARTITION_HORZ: Splits the block horizontally into two equal rectangular blocks of a 2:1 aspect ratio (e.g., two 128x64 blocks).
- PARTITION_VERT: Splits the block vertically into two equal rectangular blocks of a 1:2 aspect ratio (e.g., two 64x128 blocks).
- PARTITION_SPLIT: A classic quad-tree split that divides the block into four equal square sub-blocks (e.g., four 64x64 blocks).
- PARTITION_HORZ_A: A horizontal "T-type" split where the top half is split vertically into two squares, and the bottom half remains an unsplit horizontal rectangle.
- PARTITION_HORZ_B: A horizontal "T-type" split where the top half remains an unsplit horizontal rectangle, and the bottom half is split vertically into two squares.
- PARTITION_VERT_A: A vertical "T-type" split where the left half is split horizontally into two squares, and the right half remains an unsplit vertical rectangle.
- PARTITION_VERT_B: A vertical "T-type" split where the left half remains an unsplit vertical rectangle, and the right half is split horizontally into two squares.
- PARTITION_HORZ_4: Splits the block horizontally into four equal strips with a 4:1 aspect ratio (e.g., four 128x32 blocks).
- PARTITION_VERT_4: Splits the block vertically into four equal strips with a 1:4 aspect ratio (e.g., four 32x128 blocks).
The Recursive Processing Mechanism
The partition process begins at the root 128x128 superblock (depth 0) and proceeds recursively:
- Traversal Order: Sub-blocks are processed in geometric reading order—generally top-to-bottom and left-to-right (Z-scan order).
- Recursive Evaluation: If
PARTITION_SPLITis selected, each of the four resulting sub-blocks becomes a root node for a new partition search at depth + 1. For example, a 128x128 block splits into four 64x64 blocks, each of which can independently choose any valid partition mode. - Non-Square Restrictions: Rectangular blocks created by non-quad-tree splits (such as 1:2, 2:1, 1:4, or T-type splits) generally cannot undergo further recursive quad-tree splitting. Recursive subdivision is primarily restricted to square sub-blocks.
- Termination Criteria: The recursion terminates when
a node chooses
PARTITION_NONE, reaches a non-splittable partition type, or hits the minimum allowable block dimension of 4x4. As a result, sub-block dimensions range from 128x128 down to 4x4, supporting aspect ratios of 1:1, 1:2, 2:1, 1:4, and 4:1.
Frame Boundary and Syntax Constraints
When a 128x128 superblock crosses the edge of a video frame, AV1 enforces forced partition rules:
- If a block extends beyond both the right and bottom boundaries, it
must be split via
PARTITION_SPLIT. - If a block extends beyond only the right boundary, it must split vertically or via a quad-tree split to align sub-blocks with the frame edge.
- If a block extends beyond only the bottom boundary, it must split horizontally or via a quad-tree split.
Any sub-blocks falling entirely outside the frame area are pruned and not coded into the bitstream.
Rate-Distortion Optimization (RDO)
The decision of how to split a 128x128 superblock is governed by Rate-Distortion Optimization (RDO) on the encoder side. The encoder tests multiple partition combinations, computing the visual distortion against the bitrate cost (quantized coefficients and partition signaling overhead). Smooth background areas remain large 128x128 or 64x64 blocks, while high-detail edges or complex motion paths are recursively broken down into narrow strips or fine 4x4 squares.