On Monday, Jean-Baptiste Kempf, the president of VideoLAN introduced a new AV1 decoder, named dav1d. This open source decoder aims to be small, fast, maintainable, correctly threaded, and cross-platform.
What is AV1?
AV1, short for AOMedia Video 1, is a new royalty-free video coding format designed for video transmissions over the internet. It is being developed by the Alliance for Open Media (AOMedia) composed of most of the important Web companies including YouTube, Google, Facebook, Netflix, Amazon, and Microsoft, among others. Back in September, the YouTube Developers account published a playlist of the first videos to receive AV1 transcodes.
Technical details of dav1d
The following are the technical details about dav1d:
- It is written in C99 without VLAs. This facilitates portability as some compilers still haven’t implemented VLAs.
- It has asm in NASM/GAS syntax.
- It uses Meson/Ninja as build system. Meson and Ninja are open source build systems which are meant to be extremely fast.
- It supports x86, x64, ARMv7, ARMv8 architectures.
- It runs on Windows, Linux, macOS, Android, iOS making it cross-platform.
- It is released under BSD, so that it can be embedded anywhere, including non-open-source software; or even drivers, for hybrid decoders.
Performance details of dav1d
Currently, the reference decoder (libaom) for AV1 requires a lot of improvement as it is a research codebase. That is why, the VideoLAN and FFmpeg communities have come together to work on this new decoder, sponsored by the Alliance of Open Media.
This project is partially funded by the Alliance for Open Media/AOM and is supported by TwoOrioles and VideoLabs.
To show the performance improvements that dav1d comes with, the developers compared it with libaom:
- Smaller source code: The source code of dav1d is 1/10th of lines of code compared to libaom.
- Smaller binary size: Its weight is 1/3rd of the binary size of libaom.
- Smaller runtime memory footprint: The memory footprint of dav1d is 1/4th of memory footprint of libaom
- Stack usage is minimal: It uses a very limited amount of stack (about 1 KB).
- Faster than libaom 1.0.0, slower than libaom HEAD: Depending on the threads conditions it is approximately faster than libaom 1.0.0, but slower than libaom HEAD.
You can find the source code of dav1d at VideoLAN website.