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:

  1. PARTITION_NONE: The block is not split further and is coded as a single unit (e.g., keeping the full 128x128).
  2. PARTITION_HORZ: Splits the block horizontally into two equal rectangular blocks of a 2:1 aspect ratio (e.g., two 128x64 blocks).
  3. PARTITION_VERT: Splits the block vertically into two equal rectangular blocks of a 1:2 aspect ratio (e.g., two 64x128 blocks).
  4. PARTITION_SPLIT: A classic quad-tree split that divides the block into four equal square sub-blocks (e.g., four 64x64 blocks).
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. PARTITION_HORZ_4: Splits the block horizontally into four equal strips with a 4:1 aspect ratio (e.g., four 128x32 blocks).
  10. 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:

Frame Boundary and Syntax Constraints

When a 128x128 superblock crosses the edge of a video frame, AV1 enforces forced partition rules:

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.