Introducing dav1d: a new AV1 decoder

1 October 2018

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:

VDD2018 dav1d presentation.

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.

Jean-Baptiste Kempf

Comments

  1. On 12 May 12120, 2:32 by Jonh Doe

    Why not just cmake? It works really neat in aom and does not depends on python and other stupid stuff, making libaom easy to build. Unlike that meson crap.

  2. On 5 May 5050, 12:29 by CNXSoft- новости Android-приставок и встраиваемых систем »

    CNXSoft- новости Android-приставок и встраиваемых систем »

    (…) На сколько известно, FFmpeg 4.0 был выпущен с поддержкой AV1, который использует декодер libaom. Однако, библиотека не оптимизирована по размеру кода и быстроте, вместо этого, просто было (…)

  3. On 4 May 4040, 5:32 by Ronald S. Bultje

    For donations, the most straightforward method is probably to donate to Videolan using the Paypal button on videolan.org

  4. On 3 May 3030, 1:07 by J.B. Nicholson

    Thanks for this work!

    The final slide said to contribute money but it wasn’t clear where to send the money.

    Where should people send donations to help with this work?

    Thanks again.

  5. On 2 May 2020, 10:06 by Links 2/10/2018: Stratis 1.0 and Milestone for Alliance of

    Links 2/10/2018: Stratis 1.0 and Milestone for Alliance of

    (…) Introducing dav1d: a new AV1 decoder (…)

  6. On 2 May 2020, 8:07 by reader

    this is honestly really exciting to hear about!
    loving the blog taking on this sort of approach!
    THANK YOU FOR ALL YOUR HARD WORK!

  7. On 2 May 2020, 7:38 by wswartzendruber

    I think that Rust would not be appropriate for something needing to be built with existing industry tools.

  8. On 2 May 2020, 7:00 by Dav1d, los creadores de VLC ya trabajan en el reproductor de

    Dav1d, los creadores de VLC ya trabajan en el reproductor de

    (…) Patrocinados por AOMedia, los desarrolladores ya han empezado a trabajar en Dav1d, un nuevo decodificador para AV1, de ahí su nombre: Dav1d. Y por supuesto, el código ya está disponible en la web de (…)

  9. On 2 May 2020, 4:01 by Ceo Bolivia

    Ceo Bolivia

    (…) Patrocinados por AOMedia, los desarrolladores ya han empezado a trabajar en Dav1d, un nuevo decodificador para AV1, de ahí su nombre: Dav1d. Y por supuesto, el código ya está disponible en la web de (…)

  10. On 2 May 2020, 3:41 by Dav1d, los creadores de VLC ya trabajan en el reproductor de

    Dav1d, los creadores de VLC ya trabajan en el reproductor de

    (…) Patrocinados por AOMedia, los desarrolladores ya han empezado a trabajar en Dav1d, un nuevo decodificador para AV1, de ahí su nombre: Dav1d. Y por supuesto, el código ya está disponible en la web de (…)

  11. On 2 May 2020, 10:05 by VideoLAN и FFmpeg разработали новый декодировщик для

    VideoLAN и FFmpeg разработали новый декодировщик для

    (…)

  12. On 2 May 2020, 9:41 by VideoLAN 宣布开源 AV1 解码器 Dav1d – bet365为什么上不去

    VideoLAN 宣布开源 AV1 解码器 Dav1d – bet365为什么上不去

    (…) 由亚马逊、ARM、思科、Facebook、Google、英特尔、英伟达、Mozilla、 Netflix、微软、Adobe、AMD、苹果等知名科技公司组建的联盟 Alliance for Open Media(AOMedia) 在今年早些时候释出了开源免专利的编解码器 AOMedia Video Codec 1.0 (AV1) 。独立测试显示,AV1 编码的 4K UHD (…)

  13. On 2 May 2020, 6:57 by Hari

    Hi JB

    Thanks for the project. I have experience in developing video encoders. In fact I have worked extensively on H264 and VP8 (ASM, ARM NEON and C). I am interested in working with you guys on this project. Will checkout the code and see what I can do

  14. On 2 May 2020, 12:36 by Cx

    Inb4 the “why not Rust?!” cretins get here.