Draft:Dav1d: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Trudluc (talk | contribs)
m minor edits to multithreaded paragraph
Trudluc (talk | contribs)
m mention dav1d as a stopgap solution
Line 18: Line 18:


== History ==
== History ==
In October 2018, Ronald Bultje and Jean-Baptiste Kempf announced dav1d at the VideoLAN Developer Days 2018 conference.<ref>{{Cite AV media |url=https://www.youtube.com/watch?v=UhIgBdrKyNM |title=Video Dev Days 2018: Dav1d: a fast new AV1 decoder |language=en |access-date=2024-04-29 |via=www.youtube.com}}</ref> The first usable version of dav1d, called 0.1.0 Gazelle, was released in December 2018.<ref>{{Cite web |title=First release of dav1d, the AV1 decoder - Jean-Baptiste Kempf's Website |url=https://jbkempf.com/blog/First-release-of-dav1d/ |access-date=2024-04-29 |website=jbkempf.com}}</ref>
In October 2018, Ronald Bultje and Jean-Baptiste Kempf announced dav1d at the VideoLAN Developer Days 2018 conference.<ref>{{Cite AV media |url=https://www.youtube.com/watch?v=UhIgBdrKyNM |title=Video Dev Days 2018: Dav1d: a fast new AV1 decoder |language=en |access-date=2024-04-29 |via=www.youtube.com}}</ref> 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.


Releases 0.1 to 0.7.1 were primarily dedicated to [[Color depth|low-bitdepth]] [[Single instruction, multiple data|SIMD]] optimizations, aimed at enhancing decoding efficiency on x86 and ARM.<ref>{{Cite web |title=dav1d 0.7.1 - Jean-Baptiste Kempf's Website |url=https://jbkempf.com/blog/dav1d-0.7.1/ |access-date=2024-04-29 |website=jbkempf.com}}</ref> In 2019, [[Benchmark (computing)|benchmarks]] showed that dav1d 0.5 was the fastest AV1 decoder in comparison to libgav1 and libaom.<ref>{{Cite web |last=Hoeven |first=Ewout ter |date=2019-10-10 |title=AV1 is ready for prime time Part 2: Decoding performance |url=https://medium.com/@ewoutterhoeven/av1-is-ready-for-prime-time-part-2-decoding-performance-d3428221313 |access-date=2024-04-29 |website=Medium |language=en}}</ref> Subsequent releases, from 0.7.1 to 1.0, shifted focus to high-bitdepth SIMD optimizations.<ref>{{Cite web |title=dav1d 0.9.1: a ton of asm - Jean-Baptiste Kempf's Website |url=https://jbkempf.com/blog/2021/dav1d-0.9.1-a-ton-of-asm/ |access-date=2024-04-29 |website=jbkempf.com}}</ref>
The first usable version of dav1d, called 0.1.0 Gazelle, it was released in December 2018.<ref>{{Cite web |title=First release of dav1d, the AV1 decoder - Jean-Baptiste Kempf's Website |url=https://jbkempf.com/blog/First-release-of-dav1d/ |access-date=2024-04-29 |website=jbkempf.com}}</ref> Releases 0.1.0 to 0.7.1 were primarily dedicated to [[Color depth|low-bitdepth]] [[Single instruction, multiple data|SIMD]] optimizations, aimed at enhancing decoding efficiency on x86 and ARM.<ref>{{Cite web |title=dav1d 0.7.1 - Jean-Baptiste Kempf's Website |url=https://jbkempf.com/blog/dav1d-0.7.1/ |access-date=2024-04-29 |website=jbkempf.com}}</ref> In 2019, [[Benchmark (computing)|benchmarks]] showed that dav1d 0.5 was the fastest AV1 decoder in comparison to libgav1 and libaom.<ref>{{Cite web |last=Hoeven |first=Ewout ter |date=2019-10-10 |title=AV1 is ready for prime time Part 2: Decoding performance |url=https://medium.com/@ewoutterhoeven/av1-is-ready-for-prime-time-part-2-decoding-performance-d3428221313 |access-date=2024-04-29 |website=Medium |language=en}}</ref> Subsequent releases, from 0.7.1 to 1.0, shifted focus to high-bitdepth SIMD optimizations.<ref>{{Cite web |title=dav1d 0.9.1: a ton of asm - Jean-Baptiste Kempf's Website |url=https://jbkempf.com/blog/2021/dav1d-0.9.1-a-ton-of-asm/ |access-date=2024-04-29 |website=jbkempf.com}}</ref>


From the beginning, dav1d was designed to be multithreaded, allowing for a combination of both frame-level [[Parallelism (computing)|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<ref>{{Cite AV media |url=https://www.youtube.com/watch?v=a4uretCJh_4 |title=Ronald S. Bultje - Low-level wizardry in dav1d |language=en |access-date=2024-05-03 |via=www.youtube.com}}</ref>. 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.
From the beginning, dav1d was designed to be multithreaded, allowing for a combination of both frame-level [[Parallelism (computing)|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<ref>{{Cite AV media |url=https://www.youtube.com/watch?v=a4uretCJh_4 |title=Ronald S. Bultje - Low-level wizardry in dav1d |language=en |access-date=2024-05-03 |via=www.youtube.com}}</ref>. 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.

Revision as of 18:28, 3 May 2024

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

In October 2018, Ronald Bultje and Jean-Baptiste Kempf announced dav1d at the VideoLAN Developer Days 2018 conference.[4] 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, it was released in December 2018.[5] 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.[6] In 2019, benchmarks showed that dav1d 0.5 was the fastest AV1 decoder in comparison to libgav1 and libaom.[7] Subsequent releases, from 0.7.1 to 1.0, shifted focus to high-bitdepth SIMD optimizations.[8]

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[9]. 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. ^ Video Dev Days 2018: Dav1d: a fast new AV1 decoder. Retrieved 2024-04-29 – via www.youtube.com.
  5. ^ "First release of dav1d, the AV1 decoder - Jean-Baptiste Kempf's Website". jbkempf.com. Retrieved 2024-04-29.
  6. ^ "dav1d 0.7.1 - Jean-Baptiste Kempf's Website". jbkempf.com. Retrieved 2024-04-29.
  7. ^ Hoeven, Ewout ter (2019-10-10). "AV1 is ready for prime time Part 2: Decoding performance". Medium. Retrieved 2024-04-29.
  8. ^ "dav1d 0.9.1: a ton of asm - Jean-Baptiste Kempf's Website". jbkempf.com. Retrieved 2024-04-29.
  9. ^ Ronald S. Bultje - Low-level wizardry in dav1d. Retrieved 2024-05-03 – via www.youtube.com.

External links