Dav2d
(jbkempf.com)- dav2d est un décodeur rapide pour AV2 développé par la communauté VideoLAN, avec pour objectif une implémentation directement exploitable dans les applications, navigateurs et systèmes d’exploitation
- AV2 est le successeur libre de droits d’AV1 ; on observe environ 25 % de gain d’efficacité, mais la complexité de décodage atteint près de 5 fois celle d’AV1
- Comme dav1d a joué le rôle de décodeur logiciel rapide au début de la diffusion d’AV1, dav2d prépare lui aussi un décodeur de qualité production dès les premières phases de la spécification
- L’arbre actuel a rendu le décodeur AVM v15 fonctionnellement complet et prend en charge les flux 8 bits et 10 bits, avec un travail centré sur la justesse, la conformité et l’optimisation
- Grâce à l’optimisation par architecture via x86 AVX2, ARM NEON, les premiers travaux sur RISC-V et la validation avec checkasm, le projet avance rapidement et en toute sécurité
Objectif et contexte de dav2d
- dav2d est un nouveau décodeur rapide pour le codec AV2, développé par des membres de la communauté VideoLAN
- Le dépôt a été rendu public il y a quelques semaines, et les objectifs ainsi que l’état du projet ont été présentés au moment où AV2 a publié sa première version officielle de la spécification
- dav2d s’inscrit dans la continuité de dav1d, le décodeur AV1
- L’objectif est de fournir un décodeur petit, rapide, portable et précis, utilisable dans de vraies applications, lecteurs multimédias, navigateurs, outils de test et systèmes d’exploitation
- Selon l’idée que « un codec n’existe pas vraiment tant que tout le monde ne peut pas le décoder », une implémentation que l’on peut compiler, tester, benchmarker et intégrer est aussi importante que la spécification elle-même
AV2 et la difficulté du décodage
- AV2 est le dernier codec vidéo libre de droits de l’Alliance for Open Media et le successeur d’AV1
- La spécification d’AV2 est publique
- AV1 a été finalisé en 2018 et est devenu un codec vidéo largement déployé dans les navigateurs, appareils mobiles, systèmes d’exploitation, téléviseurs, services de streaming et applications vidéo
- AV2 poursuit l’amélioration de l’efficacité de compression en introduisant de nouveaux outils de codage pour la prédiction, les transformées, le codage entropique, le filtrage et le traitement de la chrominance
- Les résultats varient selon les conditions de test, mais un gain d’environ 25 % par rapport à AV1 est couramment observé, certaines évaluations montrant des gains encore plus importants
- Le décodage d’AV2 est environ 5 fois plus complexe que celui d’AV1, ce qui impose des optimisations par architecture pour obtenir du temps réel en logiciel sur le matériel actuel
- C’est en raison de cette complexité que le développement de dav2d a commencé tôt, sans attendre la stabilisation complète de la spécification
De dav1d à dav2d
- Le point de départ de dav2d vient de l’expérience acquise au début de dav1d
- Au moment de la finalisation d’AV1, il existait un risque important que le décodage matériel dédié ne soit pas déployé assez vite sur suffisamment d’appareils, d’où le besoin d’un décodeur logiciel rapide
- À l’époque, une partie de la communauté AOM considérait que les implémentations matérielles et le décodeur de référence suffiraient, mais les navigateurs, lecteurs multimédias, systèmes d’exploitation et appareils mobiles avaient besoin d’un décodeur de qualité production avant la généralisation du matériel dédié
- AOM a ensuite soutenu une partie du développement initial, et certains membres de l’Alliance ont rejoint l’effort, ce qui a conduit à la création de dav1d
- Le besoin d’un décodeur logiciel rapide s’est révélé plus grand que prévu, et dav1d est aujourd’hui le décodeur logiciel AV1 le plus largement déployé
- dav1d est utilisé dans VLC, FFmpeg, mpv, Firefox, Chrome, Safari, Android, Windows, Linux, ainsi que dans de nombreuses applications et plateformes
- dav1d sert aussi d’implémentation de référence du décodeur AV1 pour de nombreux développeurs qui travaillent sur le déploiement, les tests et l’optimisation d’AV1
- L’historique de dav1d est résumé dans Introducing dav1d, the road to the first release, First release, dav1d 1.2, 1.5 “Sonic”
- Pour AV2, le même rôle est préparé encore plus tôt
État actuel de l’implémentation
- L’arbre actuel de dav2d a rendu le décodeur AVM v15 fonctionnellement complet et prend en charge le décodage 8 bits comme 10 bits
- La plupart des principaux composants du codec sont implémentés, et le projet entre dans la phase d’optimisation
- analyse du bitstream
- en-têtes de trame et de séquence
- décodage entropique et traitement des CDF
- prédiction intra
- prédiction inter et vecteurs de mouvement de référence
- transformées
- CCTX et CfL
- deblocking
- CDEF
- filtrage Wiener
- synthèse du grain de film
- L’écosystème AV2 en est encore à ses débuts, mais dav2d est déjà un décodeur fonctionnel et dépasse largement le stade du dépôt vide servant d’annonce
- Une grande partie du travail actuel se concentre sur la justesse, la conformité, l’optimisation et le support des plateformes
- Si dav2d a progressé si rapidement, c’est grâce à l’expérience accumulée avec dav1d en matière de threading, de SIMD, de tests, de portabilité et de conception d’API
- AV2 nécessite une quantité importante de nouveau code de décodeur, mais une bonne partie de l’expérience acquise pendant le développement de dav1d s’applique directement à dav2d
Optimisation des performances et validation
- Sur x86, du code AVX2 a déjà été ajouté pour plusieurs tailles de transformées inverses, et des travaux sont aussi en cours sur les chemins CCTX, deblock, intra prediction et CfL
- Sur ARM, le travail NEON pour AArch64 est appliqué au décodage entropique, au SAD, à la prédiction intra, à la prédiction par palette, au prédicteur DC, au prédicteur smooth et aux fonctions liées au mouvement
- Le travail sur arm32 a également commencé en partie
- Le travail sur RISC-V en est à ses débuts et vise à réactiver puis ajuster les assemblages existants pour la prédiction intra et la compensation de mouvement
- Le processus d’optimisation est similaire à celui de dav1d
- commencer par une implémentation C propre
- construire l’infrastructure de validation
- ajouter ensuite du code optimisé spécifique à chaque architecture sur les hot paths importants
- checkasm, créé pendant le développement de dav1d, est un framework permettant de valider et benchmarker les implémentations optimisées en les comparant à l’implémentation C
- dav2d exploite cette infrastructure dès le premier jour, ce qui lui permet d’avancer plus vite que dav1d au même stade
- L’arbre actuel inclut une couverture checkasm pour les transformées inverses, la compensation de mouvement, le grain de film, CfL et le code des vecteurs de mouvement de référence
Développement open source et prochaines étapes
- Comme dav1d, dav2d est développé comme un projet open source
- Le décodeur est distribué sous la même licence de type BSD que dav1d, ce qui facilite son intégration dans des applications open source comme propriétaires
- Comme pour la plupart des projets VideoLAN, le développement est public dès le premier jour
- 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
- Une implémentation publique apporte l’interopérabilité, une validation indépendante de la spécification, des expérimentations plus simples et une base commune pour l’écosystème
- La suite du travail comprend le suivi de la spécification AV2, l’amélioration de la conformité, l’extension de la couverture de test, des optimisations supplémentaires pour x86 et ARM, ainsi que les travaux sur RISC-V
- Il reste aussi à améliorer les performances à haute profondeur de bits, le threading, la réduction de l’usage mémoire et la préparation des futures releases
- De la même façon que dav1d a rendu AV1 praticable avant la généralisation du support matériel, dav2d vise à jouer le même rôle pour AV2
1 commentaires
Commentaires sur Hacker News
Too Many Requests
Une archive est consultable ici :
https://web.archive.org/web/20260531130034/https://jbkempf.com/blog/2026/dav2d/
https://archive.md/ln5UE
Too Many Requestss’affiche, avec un message indiquant que le propriétaire du fichier a dépassé la limite de bande passante à court terme ainsi que la limite quotidienne de 160000 actionsLe décodage logiciel AV1 est déjà très lourd, donc les benchmarks de décodage AV2 risquent d’être le prochain spectacle vraiment intéressant, ou inquiétant
On pouvait aussi les ajouter comme carte secondaire dans un PC destiné à l’enregistrement et à l’encodage OBS
J’espère qu’on aura des options similaires dans la prochaine génération compatible AV2, et vu à quel point la création vidéo et le streaming sont devenus populaires, cela semble d’autant plus nécessaire
On peut considérer qu’une spécification de codec n’est terminée que lorsqu’il existe au moins un décodeur développé sur le terrain. Autrement dit, il faut une implémentation de référence + une implémentation supplémentaire, et l’implémentation réelle devient souvent la spécification de facto
Quand j’étais enfant dans les années 90, lire la spécification MPEG1 m’a ouvert les yeux sur la manière de définir des systèmes complexes
Dans les standards de codage média, l’essentiel du temps est consacré à expliquer comment interpréter les octets encodés, et j’ai trouvé cela génial
Le décodage peut être défini de manière descriptive, sans qu’il soit nécessaire de contraindre normativement l’encodage
La créativité peut s’exprimer du côté de l’encodage, mais il faut absolument fournir un moyen de comprendre ensemble les octets encodés
On dirait un hug of death de HN
Je ne sais pas si le fait de réduire la taille de 25 % vaut vraiment le coup au point de rendre de fait obsolètes tous les appareils dotés d’un décodeur matériel AV1. Le décodage AV2 sera probablement trop lourd pour eux
YouTube a des centaines de variantes de formats :
https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa
Les appareils avec décodage matériel AV1 sont encore rares, mais ils ne deviendront pas obsolètes de sitôt
https://www.youtube.com/watch?v=XqZsoesa55w
Ce gain supplémentaire de 25 % devient alors intéressant
Rien ne devient obsolète. AV1 restera là longtemps, et YouTube propose encore des encodages H.264 pour continuer à prendre en charge les anciens appareils
On dirait encore un hug of death de HN, avec une erreur 429
J’ai cru qu’il s’agissait de Dave2D
Le blog a l’air d’avoir subi le hug of death de HN
Actioning this file would cause "jbkempf.com//blog/2026/dav2d/" to exceed the per-day file actions limit of 160000 actions, try again laters’affiche ; quelqu’un aurait une copie quelque part ?https://web.archive.org/web/20260531115337/https://jbkempf.com/blog/2026/dav2d/
Je ne comprends pas très bien ce que signifient exactement l’affirmation d’une amélioration d’environ 25 % par rapport à AV1 et celle selon laquelle le décodage AV2 serait environ 5 fois plus complexe que celui d’AV1, ni si ces deux éléments sont comparables entre eux
Autrement dit, la qualité obtenue à 10 Mbps avec AV1 peut être obtenue à 8 Mbps avec AV2
En revanche, ce gain de 25 % demande 5 fois plus de puissance de calcul
Article lié : The AV2 Video Standard Has Released (Final v1.0 Specification)
https://news.ycombinator.com/item?id=48340910