How AV1 Daala Entropy Coding Outperforms CABAC
The AV1 video codec incorporates an entropy coding framework derived from the experimental Daala project rather than the traditional Context-Adaptive Binary Arithmetic Coding (CABAC) standard found in H.264 and HEVC. This article examines the architectural shift from binary arithmetic coding to Daala's multi-symbol range coding, highlighting how it eliminates throughput bottlenecks, accelerates hardware and software processing, improves probability modeling, and enhances overall compression efficiency.
Multi-Symbol Processing vs. Binary Serialization
The fundamental distinction between CABAC and the Daala-derived coder in AV1 lies in the alphabet size processed during each coding step.
CABAC operates strictly as a binary arithmetic coder. Before encoding, any syntax element with non-binary values must undergo "binarization"—a process that splits the value into a tree of individual binary decisions called bins. Each bin is then sequentially fed into the arithmetic coder. This introduces a severe serialization bottleneck: decoding a large syntax element requires multiple iterations through the arithmetic decoding loop, where each step depends directly on the output of the preceding step.
AV1's Daala-based coder is a non-binary, multi-symbol arithmetic coder. It directly processes alphabets containing multiple symbols (up to 16 symbols per alphabet) in a single cycle. By evaluating complete syntax elements simultaneously rather than breaking them down into strings of individual bits, AV1 significantly reduces the number of coder cycles required to process a given block of data.
Throughput and Hardware Scaling
Entropy decoding is historically the most difficult part of a video pipeline to parallelize because arithmetic coding is inherently serial.
In high-bitrate scenarios—such as 4K or 8K video playback—CABAC struggles because the bin rate spikes. Hardware decoders must run at aggressively high clock frequencies to process enough bins per second to sustain real-time playback. When a single syntax element generates dozens of bins, CABAC engines experience latency stalls.
By processing multi-symbol tokens, AV1 reduces the operational cycle count by roughly a factor of two to three compared to CABAC. Hardware decoders can run at substantially lower clock speeds, directly translating to lower power consumption and reduced thermal throttling on mobile devices. For high-throughput desktop GPUs and dedicated ASICs, this architecture easily scales to high-bitrate 10-bit and 12-bit workflows.
Cumulative Distribution Functions (CDFs) vs. Binary State Transitions
Probability estimation directly impacts compression efficiency. The two systems handle context-adaptive probability updates in fundamentally different ways:
- CABAC State Machine: CABAC maintains probability states using a 63-state transition table. Every time a bin is encoded or decoded, the probability state transitions up or down based on a precomputed, hardcoded curve. This fixed step size can be slow to adapt to sharp changes in data statistics and loses precision due to coarse quantization.
- AV1 Multi-Symbol CDFs: AV1 maintains 16-bit Cumulative Distribution Functions (CDFs) for each context. When a symbol is decoded, the entire distribution curve adapts smoothly based on a dynamic adaptation rate. The 16-bit precision allows the entropy coder to track real-world probabilities far more accurately than CABAC's 6-bit states, improving the overall rate-distortion (RD) performance of the codec.
Furthermore, AV1 introduces CDF updating modes that allow the decoder to periodically freeze probability updates across predictable regions, freeing up computational cycles without sacrificing compression density.
Software Optimization and SIMD Vectorization
Modern CPU architectures favor wide, vectorized instructions (such as AVX-512, AVX2, and ARM NEON) and predictable branch execution.
CABAC's binary nature creates an execution profile plagued by data-dependent branch predictions and tight, sequential dependency chains that modern superscalar execution pipelines cannot easily optimize.
The Daala-derived entropy coder in AV1 replaces deeply nested branch
trees with table lookups, bit shifts, and standard multi-bit arithmetic
operations. These operations map cleanly to modern processor registers,
allowing software implementations (like dav1d) to achieve
exceptionally fast decoding speeds in software without requiring
dedicated hardware accelerators.