Jump to content

Draft:Dav1d

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Trudluc (talk | contribs) at 18:56, 3 May 2024. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

dav1d
Developer(s)VideoLAN and FFmpeg communities
Repositorycode.videolan.org/videolan/dav1d.git
Written inAssembly language
C99
TypeVideo decoder
LicenseBSD 2-clause "Simplified" License
Websitewww.videolan.org/projects/dav1d.html

dav1d is a free and open-source software library and a command-line utility to decode video streams in the AV1 video coding format. It is developed by the VideoLAN and FFmpeg communities and sponsored by the Alliance for Open Media.[1] It is designed to be fast, small, cross-platform and multithreaded.[2]

dav1d is released under the BSD 2-clause "Simplified" License, a distinction from the Copyleft licensing favored by projects like FFmpeg and VideoLAN. This strategic choice of a more permissive license was made to encourage wider adoption of AV1. The decision to adopt a permissive license model for dav1d finds its roots in the Vorbis project, where similar licensing strategies were employed to promote adoption and prevent the entrenchment of proprietary formats.[3]

History

The Alliance for Open Media released AV1 in June 2018 with a production grade and SIMD optimized software decoder called aomdec as part of libaom. A widespread opinion was that the libaom software implementation was slow[4] both in terms of encoding and decoding speeds. The VideoLAN and FFmpeg communities, who had previously written faster software decoders for both VP8[5] and VP9[6] video formats, saw this as a barrier to entry for AV1 and decided to resolve this by writting a faster software decoder.

In October 2018, Ronald Bultje and Jean-Baptiste Kempf announced dav1d at the VideoLAN Developer Days 2018 conference.[7] The goal of the project being to develop a fast AV1 software decoder to jumpstart the AV1 ecosystem and act as a stopgap solution until AV1 hardware decoders are common place.

The first usable version of dav1d, called 0.1.0 Gazelle, was released in December 2018.[8] Releases 0.1.0 to 0.7.1 were primarily dedicated to low-bitdepth SIMD optimizations, aimed at enhancing decoding efficiency on x86 and ARM.[9] In 2019, benchmarks showed that dav1d 0.5 was the fastest AV1 decoder in comparison to libgav1 and libaom.[10] Subsequent releases, from 0.7.1 to 1.0, shifted focus to high-bitdepth SIMD optimizations.[11]

From the beginning, dav1d was designed to be multithreaded, allowing for a combination of both frame-level parallelism and tile-level parallelism. The 1.0.0 release introduced a thread pool design, where each component in the decoding loop runs as a generic task with a simple dependency management mechanism[12]. In this design, worker threads iterate over a list of available tasks, allowing for a more resource-efficient parallel decoding scheme that is independent of bitstream features like tiles.

References

  1. ^ "dav1d - dav1d is an AV1 decoder - VideoLAN". www.videolan.org. Retrieved 2024-04-26.
  2. ^ "Introducing dav1d: a new AV1 decoder - Jean-Baptiste Kempf's Website". jbkempf.com. Retrieved 2024-04-26.
  3. ^ "LWN.net: RMS on the Ogg Vorbis license". lwn.net. Retrieved 2024-04-29.
  4. ^ Ozer, Jan (2018-08-31). "AV1: A First Look".{{cite web}}: CS1 maint: url-status (link)
  5. ^ "Diary Of An x264 Developer » Announcing the world's fastest VP8 decoder: ffvp8". web.archive.org. 2010-08-11. Retrieved 2024-05-03.
  6. ^ "The world's fastest VP9 decoder: ffvp9 | Ronald S. Bultje". Retrieved 2024-05-03.
  7. ^ Video Dev Days 2018: Dav1d: a fast new AV1 decoder. Retrieved 2024-04-29 – via www.youtube.com.
  8. ^ "First release of dav1d, the AV1 decoder - Jean-Baptiste Kempf's Website". jbkempf.com. Retrieved 2024-04-29.
  9. ^ "dav1d 0.7.1 - Jean-Baptiste Kempf's Website". jbkempf.com. Retrieved 2024-04-29.
  10. ^ Hoeven, Ewout ter (2019-10-10). "AV1 is ready for prime time Part 2: Decoding performance". Medium. Retrieved 2024-04-29.
  11. ^ "dav1d 0.9.1: a ton of asm - Jean-Baptiste Kempf's Website". jbkempf.com. Retrieved 2024-04-29.
  12. ^ Ronald S. Bultje - Low-level wizardry in dav1d. Retrieved 2024-05-03 – via www.youtube.com.