Introducing dav1d
AV1 is a new video codec by the Alliance for Open Media, composed of most of the important Web companies (Google, Facebook, Netflix, Amazon, Microsoft, Mozilla…).
AV1 has the potential to be up to 20% better than the HEVC codec, but the patents license is totally free, while HEVC patents licenses are insanely high and very confusing.
The reference decoder for AV1 is great, but it’s a research codebase, so it has a lot to improve.
Therefore, the VideoLAN, VLC and FFmpeg communities have started to work on a new decoder, sponsored by the Alliance of Open Media.
The goal of this new decoder is:
- be small,
- be as fast as possible,
- be very cross-platform,
- correctly threaded,
- libre and (actually) Open Source.
Without further ado, the code: https://code.videolan.org/videolan/dav1d
Name
dav1d is called dav1d, because Dav1d is an AV1 Decoder
(Yes, that is a recursive acronym, no need to tell us…)
Video
You can see a talk during VDD 2018 about dav1d:
Technical details
Some technical details about dav1d:
- written in C99 (without VLAs),
- has asm in NASM/GAS syntax (no intrinsics),
- uses meson/ninja as buildsystem,
- currently works on x86, x64, ARMv7, ARMv8,
- runs on Windows, Linux, macOS, Android, iOS,
- licensed under BSD.
Performance
Currently the source code of dav1d is 1/10th of lines of code compared to libaom and its weight is 1/3rd of the binary size of libaom.
It currently uses 1/4th of the memory usage of libaom and uses a very limited amount of stack.
Depending on the threads conditions (see the video talk linked above), dav1d is more or less faster than libaom 1.0.0, but slower than libaom HEAD.
dav1d having almost no assembly code yet, this is not surprising, and is actually a good starting point for the future.
Of course, those metrics will evolve once we add more assembly code, and when the project evolves a bit more.
Questions
Is it production-ready?
Not yet, but you can start testing it and check how the API works for you.
Can I help?
Yes! We need C, ASM developers, but also app integrators and testers to give us feedback.
I need to ship an AV1 decoder with my OS, my hardware, my app. Can I do that?
Yes. dav1d is licensed under BSD for this very reason.
Please talk to us, if you need to get adaptations for your use-case (hybrid decoders, or specific platforms, for example).
BSD is not copyleft, why?
We want AV1 to be as popular as possible. This requires fast decoders, running everywhere. Therefore, we want to help everyone, even non-open-source software.
See RMS opinion on this subject.