Dav2d
(jbkempf.com)- dav2d ist ein schneller Decoder für AV2, der von der VideoLAN-Community entwickelt wird und als Implementierung gedacht ist, die direkt in Apps, Browsern und Betriebssystemen eingesetzt werden kann
- AV2 ist der nachfolgende lizenzgebührenfreie Codec von AV1; es wurden Effizienzverbesserungen von rund 25 % beobachtet, allerdings ist die Decodierkomplexität etwa 5-mal so hoch wie bei AV1
- So wie dav1d in der frühen Verbreitungsphase von AV1 als schneller Software-Decoder diente, wird auch dav2d schon früh in der Spezifikation als Decoder in Produktionsqualität vorbereitet
- Der aktuelle Tree ist als AVM-v15-Decoder funktional vollständig, unterstützt 8-Bit und 10-Bit und konzentriert sich auf Korrektheit, Konformität und Optimierung
- Über x86 AVX2, ARM NEON, erste RISC-V-Arbeiten und checkasm-Validierung werden architekturspezifische Optimierungen schnell und sicher vorangetrieben
Ziel und Hintergrund von dav2d
- dav2d ist ein neuer Hochleistungs-Decoder für den AV2-Codec, entwickelt von Mitgliedern der VideoLAN-Community
- Das Repository wurde vor einigen Wochen veröffentlicht, und zeitgleich mit der ersten offiziellen Spezifikationsveröffentlichung von AV2 wurden Zweck und Status des Projekts offengelegt
- dav2d steht in direkter Linie zum AV1-Decoder dav1d
- Ziel ist es, einen kleinen, schnellen, portablen und präzisen Decoder bereitzustellen, der in realen Anwendungen, Media-Playern, Browsern, Testwerkzeugen und Betriebssystemen genutzt werden kann
- Aus der Perspektive, dass „ein Codec erst dann wirklich existiert, wenn ihn alle decodieren können“, wird nicht nur die Spezifikation wichtig, sondern auch eine Implementierung, die sich bauen, testen, benchmarken und integrieren lässt
AV2 und die Schwierigkeit der Decodierung
- AV2 ist der neueste lizenzgebührenfreie Video-Codec der Alliance for Open Media und der Nachfolger von AV1
- Die AV2-Spezifikation ist öffentlich verfügbar
- AV1 wurde 2018 finalisiert und hat sich zu einem breit eingesetzten Video-Codec in Browsern, Mobilgeräten, Betriebssystemen, Fernsehern, Streaming-Diensten und Videoanwendungen entwickelt
- AV2 führt neue Coding-Tools für Vorhersage, Transformation, Entropie-Codierung, Filterung und Chroma-Verarbeitung ein und verbessert damit die Kompressionseffizienz weiter
- Je nach Testbedingungen gibt es Unterschiede, aber im Vergleich zu AV1 werden häufig etwa 25 % Verbesserung beobachtet; in manchen Bewertungen sogar mehr
- Das Decodieren von AV2 ist ungefähr 5-mal komplexer als bei AV1, weshalb für Echtzeit-Decodierung ausschließlich in Software auf heutiger Hardware architekturspezifische Optimierungen nötig sind
- Wegen dieser Komplexität wurde die Entwicklung von dav2d früh begonnen, ohne die Stabilisierung der Spezifikation abzuwarten
Von dav1d zu dav2d: die Entwicklungslinie
- Der Ausgangspunkt von dav2d liegt in den frühen Erfahrungen mit dav1d
- Als AV1 finalisiert wurde, war absehbar, dass dedizierte Hardware-Decodierung nicht schnell genug und nicht auf genügend Geräten verfügbar sein würde, weshalb ein schneller Software-Decoder benötigt wurde
- Teile der AOM-Community hielten damals Hardware-Implementierungen und den Referenz-Decoder für ausreichend, doch Browser, Media-Player, Betriebssysteme und Mobilgeräte brauchten schon vor der breiten Verfügbarkeit dedizierter Hardware einen Decoder in Produktionsqualität
- Später unterstützte auch AOM selbst einen Teil der frühen Entwicklung, und einige Mitglieder der Alliance schlossen sich der Arbeit an, woraus dav1d entstand
- Der Bedarf an einem schnellen Software-Decoder war noch größer als erwartet, und dav1d ist heute der am weitesten verbreitete AV1-Software-Decoder
- dav1d wird in VLC, FFmpeg, mpv, Firefox, Chrome, Safari, Android, Windows, Linux sowie in zahlreichen Anwendungen und Plattformen eingesetzt
- Für viele Entwickler, die AV1 bereitstellen, testen und optimieren, dient dav1d auch als Referenzimplementierung eines AV1-Decoders
- Die Geschichte von dav1d ist in Introducing dav1d, the road to the first release, First release, dav1d 1.2, 1.5 “Sonic” zusammengefasst
- Für AV2 wird dieselbe Rolle von einem noch früheren Zeitpunkt an vorbereitet
Aktueller Implementierungsstand
- Der aktuelle dav2d-Tree ist als AVM-v15-Decoder funktional vollständig und unterstützt sowohl 8-Bit- als auch 10-Bit-Decodierung
- Die meisten zentralen Codec-Bausteine sind bereits implementiert, und die Arbeit ist in die Optimierungsphase eingetreten
- Bitstream-Parsing
- Frame- und Sequence-Header
- Entropie-Decodierung und CDF-Verarbeitung
- Intra Prediction
- Inter Prediction und Referenz-Bewegungsvektoren
- Transformationen
- CCTX und CfL
- Deblocking
- CDEF
- Wiener-Filterung
- Film-Grain-Synthese
- Das AV2-Ökosystem befindet sich noch in einer frühen Phase, doch dav2d ist bereits ein funktionierender Decoder und geht deutlich über ein leeres Ankündigungs-Repository hinaus
- Ein großer Teil der aktuellen Arbeit konzentriert sich auf Korrektheit, Konformität, Optimierung und Plattformunterstützung
- Dass dav2d so schnell vorangekommen ist, beruht auf den mit dav1d gesammelten Erfahrungen bei Threading, SIMD-Struktur, Tests, Portabilität und API-Design
- Für AV2 ist zwar eine erhebliche Menge neuer Decoder-Code nötig, doch viele Erfahrungen aus der Entwicklung von dav1d lassen sich direkt auf dav2d übertragen
Performance-Optimierung und Validierung
- Auf x86 wurden bereits AVX2-Codepfade für mehrere inverse Transformationsgrößen integriert; zudem laufen Arbeiten an Pfaden für CCTX, deblock, intra prediction und CfL
- Auf ARM wird AArch64-NEON-Arbeit auf Entropie-Decodierung, SAD, Intra Prediction, Palettenvorhersage, DC-Prädiktoren, Smooth-Prädiktoren und bewegungsbezogene Funktionen angewendet
- Erste Arbeiten an arm32 haben ebenfalls begonnen
- Die RISC-V-Arbeit befindet sich in einem frühen Stadium und konzentriert sich darauf, bestehende Assemblerroutinen für Intra Prediction und Motion Compensation wieder zu aktivieren und anzupassen
- Der Optimierungsablauf ähnelt dem von dav1d
- Zuerst wird eine saubere C-Implementierung erstellt
- Dann wird eine Validierungsinfrastruktur aufgebaut
- Anschließend wird für wichtige Hot Paths architekturspezifisch optimierter Code hinzugefügt
- Das während der dav1d-Entwicklung entstandene checkasm ist ein Framework, das optimierte Implementierungen gegen die C-Implementierung validiert und benchmarkt
- dav2d nutzt diese Infrastruktur von Anfang an und kommt dadurch schneller voran als dav1d in einer vergleichbaren Phase
- Der aktuelle Tree enthält bereits checkasm-Abdeckung für inverse Transformationen, Motion Compensation, Film Grain, CfL und Code für Referenz-Bewegungsvektoren
Open-Source-Entwicklungsmodell und nächste Schritte
- Wie dav1d wird auch dav2d als Open-Source-Projekt entwickelt
- Der Decoder wird unter derselben BSD-ähnlichen Lizenz wie dav1d veröffentlicht und lässt sich dadurch leicht sowohl in Open-Source- als auch in proprietäre Anwendungen integrieren
- Wie bei den meisten VideoLAN-Projekten erfolgt die Entwicklung von Anfang an öffentlich
- Repository: https://code.videolan.org/videolan/dav2d
- Issues: https://code.videolan.org/videolan/dav2d/-/issues
- Merge Requests: https://code.videolan.org/videolan/dav2d/-/merge_requests
- Eine öffentliche Implementierung bietet Interoperabilität, unabhängige Validierung der Spezifikation, einfachere Experimente und eine gemeinsame Grundlage für das Ökosystem
- Als Nächstes bleiben die Nachverfolgung der AV2-Spezifikation, Verbesserungen der Konformität, der Ausbau der Testabdeckung, zusätzliche Optimierungen für x86 und ARM sowie weitere RISC-V-Arbeit erforderlich
- Auch Verbesserungen der Performance bei hohen Bittiefen, besseres Threading, geringerer Speicherverbrauch und die Vorbereitung künftiger Releases stehen noch aus
- So wie dav1d AV1 praktisch nutzbar machte, bevor Hardware-Unterstützung allgegenwärtig wurde, soll dav2d dieselbe Rolle für AV2 übernehmen
1 Kommentare
Hacker-News-Kommentare
Too Many Requests
Das Archiv ist hier einsehbar:
https://web.archive.org/web/20260531130034/https://jbkempf.com/blog/2026/dav2d/
https://archive.md/ln5UE
Es erscheint
Too Many Requestszusammen mit der Meldung, dass der Dateieigentümer das kurzfristige Bandbreitenlimit überschritten habe und das tägliche Aktionslimit von 160000 Aufrufen überschritten werdeAV1-Software-Decoding ist bereits sehr schwergewichtig, daher dürften AV2-Decoding-Benchmarks als Nächstes entweder wirklich interessant oder beängstigend werden
Man konnte sie auch als Zusatzkarte in einen PC für OBS-Aufnahmen und Encoding-Aufgaben stecken
Es wäre gut, wenn es in der nächsten Generation mit AV2-Unterstützung ähnliche Optionen gäbe, und bei der heutigen Popularität von Videoproduktion und Streaming scheint das umso nötiger
Eine Codec-Spezifikation kann erst dann als fertig gelten, wenn es mindestens einen Decoder aus der Praxis gibt. Man braucht also Referenzimplementierung + 1 weitere Implementierung, und oft wird die Feldimplementierung zur faktischen Spezifikation
Als Kind in den 90ern habe ich beim Lesen der MPEG1-Spezifikation gelernt, wie man komplexe Systeme definiert
Bei Mediencodierungsstandards geht es die meiste Zeit darum, wie die kodierten Bytes interpretiert werden sollen, und das fand ich genial
Das Decoding kann deskriptiv definiert werden, das Encoding muss nicht normativ festgezurrt sein
Kreativität kann sich auf der Encoding-Seite entfalten, aber es muss auf jeden Fall eine Möglichkeit geben, die kodierten Bytes gemeinsam zu verstehen
Scheint ein HN Hug of Death zu sein
Ich bin nicht sicher, ob eine 25% kleinere Größe es wert ist, praktisch jedes Gerät mit AV1-Hardwaredecoder veralten zu lassen. AV2-Decoding dürfte für diese Geräte zu viel sein
YouTube hat Hunderte von Formatvarianten:
https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa
Geräte mit AV1-Hardware-Decoding sind zwar selten, werden aber nicht so schnell veralten
https://www.youtube.com/watch?v=XqZsoesa55w
Dann werden diese zusätzlichen 25% wertvoll
Nichts wird dadurch veraltet. AV1 wird noch lange bleiben, und YouTube bietet weiterhin H.264-Encodes an, um ältere Geräte zu unterstützen
Schon wieder ein HN Hug of Death, offenbar mit Fehler 429
Ich dachte, es ginge um Dave2D
Der Blog scheint vom HN Hug of Death getroffen worden zu sein
Es erscheint
Actioning this file would cause "jbkempf.com//blog/2026/dav2d/" to exceed the per-day file actions limit of 160000 actions, try again later— gibt es irgendwo eine Kopie?https://web.archive.org/web/20260531115337/https://jbkempf.com/blog/2026/dav2d/
Ich bin mir nicht sicher, was genau gemeint ist mit etwa 25% Verbesserung gegenüber AV1 und damit, dass AV2-Decoding ungefähr 5-mal komplexer sei, oder ob diese Angaben überhaupt vergleichbar sind
Die Qualität, für die man bei AV1 10 Mbit/s braucht, bekommt man bei AV2 mit 8 Mbit/s
Für diesen Gewinn von 25% braucht man allerdings 5-mal so viel Rechenleistung
Verwandter Beitrag: The AV2 Video Standard Has Released (Final v1.0 Specification)
https://news.ycombinator.com/item?id=48340910