What Problem Does the dav1d AV1 Decoder Solve?
The AV1 video codec promised high-quality, royalty-free video
compression, but early adoption was severely hindered by the lack of a
fast, efficient software decoder. This article explains how the creation
of the dav1d (libdav1d) decoder solved this critical
performance bottleneck, enabling smooth AV1 playback on mainstream
consumer devices without requiring specialized hardware.
The Bottleneck: Slow Software Decoding
When the Alliance for Open Media (AOMedia) released the AV1 video standard, it offered superior compression compared to VP9 and H.264. However, this efficiency came at the cost of high computational complexity.
At launch, the primary software tool available for playing AV1 files
was libaom, the reference decoder. Because reference
decoders are built to demonstrate spec compliance rather than real-world
speed, libaom was incredibly slow and
resource-intensive.
This created a major roadblock for the AV1 ecosystem: * No
Hardware Support: New video codecs require years to be
integrated into physical hardware (such as CPUs, GPUs, and Smart TV
chips). * High CPU Usage: Without hardware decoding,
playing AV1 videos relied entirely on software decoding via the CPU.
Using libaom resulted in massive battery drain, high CPU
temperatures, stuttering, and dropped frames on standard consumer
laptops and mobile devices. * Stalled Adoption:
Streaming platforms (like YouTube and Netflix) could not widely deploy
AV1 because the vast majority of their users’ devices could not play the
video smoothly.
The Solution: Building libdav1d
To bridge the gap between the release of the codec and the eventual arrival of hardware acceleration, the VideoLAN and VLC projects—sponsored by AOMedia—developed a new, open-source software decoder called dav1d (dav1d AV1 Decodes).
Launched in 2018, dav1d was designed with a single goal:
to be as fast and lightweight as possible. It solved the ecosystem’s
adoption problem through several key technical features:
1. Extensive Assembly Optimization
While reference decoders are written in standard C code,
dav1d was written with highly optimized assembly language
targeting specific processor architectures. The developers wrote custom
assembly code for x86 (using AVX2, AVX-512, and SSSE3 instructions) and
ARM (using NEON instructions). This allowed the decoder to utilize the
maximum capabilities of modern computer and smartphone processors.
2. Advanced Multi-Threading
Decoding video frame-by-frame can easily bottleneck a single CPU
core. dav1d was built from the ground up to support highly
efficient multi-threading. It can distribute decoding tasks across
multiple CPU cores simultaneously using both frame-level and tile-level
threading, ensuring that modern multi-core processors are utilized
efficiently.
3. Small Memory Footprint
Unlike the resource-heavy reference code, dav1d was
designed to have a very small binary size and low memory consumption.
This made it suitable for resource-constrained environments like budget
mobile phones, browsers, and embedded systems.
Impact on the AV1 Ecosystem
By delivering decoding speeds that were multiple times faster than
libaom, dav1d single-handedly rescued the AV1
ecosystem from stagnation.
Its speed allowed software-only decoding of 1080p and even 4K AV1
video on existing consumer hardware. Today, dav1d is
integrated into major web browsers like Google Chrome and Mozilla
Firefox, media players like VLC, and operating systems like Android,
ensuring that billions of devices can play AV1 content seamlessly while
hardware decoding technology continues to roll out.