Lots of efforts are being put into AV1 open source, royalty-free video codec with the AV1 specification published in March, and companies like YouTube and Netflix having recently uploaded AV1 video samples for testing and evaluation.
We also reported FFmpeg 4.0 was released with AV1 supporting using libaom reference decoder. However, the library is not really optimized for code size and speed, but instead just to demonstrate AV1 decoding and encoding. So VideoLAN, VLC and FFmpeg communities have been working on another decoder called Dav1d – which stands for “Dav1d is an AV1 Decoder” – that aims to be lightweight, cross-platform, fast and open source.
- written in C99 without VLAs (Variable Length Arrays)
- ASM in NASM/GAS syntax (no intrinsics),
- Meson/ninja buildsystem,
- Works on x86, x64, ARMv7, ARMv8 architectures for now
- Runs on Windows, Linux, macOS, Android, iOS operating systems
- Licensed under BSD which allows to be easily integrated into both open source and commercial projects
The team has already done a good job on footprint reduction with dav1d having a tenth of the lines of code compared to libaom, and a binary size that is a third of libaom. Memory usage is also much lower with the library takes about a fourth of the memory use of libaom.
There still more work to do on performance as dav1d is about as fast as libaom 1.0.0, but still slower than libaom HEAD. This is expected however, since the library has virtually no assembly code, and so performance will improve over time once optimized assembly code is added to the code base. Speaking about code, you’ll find the source on VideoLAN website. More details can also be found in “Dav1d: a fast new AV1 decoder” presentation that very recently took place at Video Dev Days 2018.
If you’d like to get involved, the team welcomes C & ASM developers, as well as app integrators and testers.