Dav2d
(jbkempf.com)- dav2d es un decodificador de alta velocidad para AV2 desarrollado por la comunidad de VideoLAN, con el objetivo de ofrecer una implementación lista para usarse directamente en apps, navegadores y sistemas operativos
- AV2 es el códec libre de regalías sucesor de AV1, con una mejora de eficiencia observada de alrededor del 25%, aunque su complejidad de decodificación llega a cerca de 5 veces la de AV1
- Así como dav1d cumplió el papel de decodificador de software rápido en la etapa inicial de adopción de AV1, dav2d también se está preparando desde temprano como un decodificador con calidad de producción
- El árbol actual ya completa funcionalmente el decodificador AVM v15 y soporta 8 bits y 10 bits, con enfoque en exactitud, conformidad y optimización
- Mediante optimizaciones por arquitectura para x86 AVX2, ARM NEON y trabajo inicial en RISC-V, además de validación con checkasm, el proyecto avanza de forma rápida y segura
Objetivo y contexto de dav2d
- dav2d es un nuevo decodificador de alta velocidad para el códec AV2, desarrollado por integrantes de la comunidad de VideoLAN
- El repositorio se hizo público hace unas semanas, y con la primera liberación oficial de la especificación de AV2 también se dieron a conocer el propósito y estado del proyecto
- dav2d es una continuación de dav1d, el decodificador de AV1
- El objetivo es ofrecer un decodificador pequeño, rápido, portable y preciso que pueda usarse en aplicaciones reales, reproductores multimedia, navegadores, herramientas de prueba y sistemas operativos
- Desde la idea de que “un códec no existe realmente hasta que todos pueden decodificarlo”, se vuelve importante no solo la especificación, sino también una implementación que pueda compilarse, probarse, medirse e integrarse
AV2 y la dificultad de decodificación
- AV2 es el más reciente códec de video libre de regalías de la Alliance for Open Media y sucesor de AV1
- La especificación de AV2 ya está publicada
- AV1 se cerró en 2018 y se convirtió en un códec de video ampliamente desplegado en navegadores, dispositivos móviles, sistemas operativos, televisores, servicios de streaming y aplicaciones de video
- AV2 sigue mejorando la eficiencia de compresión con nuevas herramientas de codificación en predicción, transformaciones, codificación entrópica, filtrado y procesamiento de croma
- Aunque varía según las condiciones de prueba, comúnmente se observa una mejora de alrededor de 25% frente a AV1, y en algunas evaluaciones el aumento es incluso mayor
- La decodificación de AV2 es aproximadamente 5 veces más compleja que la de AV1, por lo que para lograr decodificación en tiempo real solo por software sobre hardware actual se requieren optimizaciones específicas por arquitectura
- Por esta complejidad, el desarrollo de dav2d comenzó temprano, sin esperar a que la especificación se estabilizara por completo
La transición de dav1d a dav2d
- El punto de partida de dav2d está en la experiencia inicial de dav1d
- Cuando AV1 quedó definido, era muy probable que la decodificación por hardware dedicado no llegara lo bastante rápido ni a suficientes dispositivos, así que hacía falta un decodificador de software de alto rendimiento
- En ese momento, parte de la comunidad de AOM pensaba que las implementaciones en hardware y el decodificador de referencia eran suficientes, pero navegadores, reproductores multimedia, sistemas operativos y dispositivos móviles necesitaban un decodificador con calidad de producción incluso antes de la adopción masiva del hardware dedicado
- Después, la propia AOM apoyó parte del desarrollo inicial y algunos integrantes de la Alliance se sumaron al trabajo, lo que llevó a la creación de dav1d
- La necesidad de un decodificador de software rápido resultó ser mayor de lo esperado, y hoy dav1d es el decodificador de software AV1 más ampliamente distribuido
- dav1d se usa en VLC, FFmpeg, mpv, Firefox, Chrome, Safari, Android, Windows, Linux y varias aplicaciones y plataformas más
- dav1d también sirve como implementación de referencia de decodificador AV1 para muchos desarrolladores que trabajan en despliegue, pruebas y optimización de AV1
- Su trayectoria está resumida en Introducing dav1d, the road to the first release, First release, dav1d 1.2, 1.5 “Sonic”
- Para AV2, se está preparando ese mismo rol desde una etapa aún más temprana
Estado actual de la implementación
- El árbol actual de dav2d ya completa funcionalmente el decodificador AVM v15 y soporta tanto decodificación de 8 bits como de 10 bits
- La mayoría de los componentes principales del códec ya están implementados y el proyecto entró en fase de optimización
- análisis del bitstream
- encabezados de frame y de secuencia
- decodificación entrópica y manejo de CDF
- predicción intra
- predicción inter y vectores de movimiento de referencia
- transformaciones
- CCTX y CfL
- deblocking
- CDEF
- filtrado Wiener
- síntesis de film grain
- Aunque el ecosistema de AV2 todavía está en una etapa inicial, dav2d ya es un decodificador funcional y va mucho más allá de un repositorio vacío para fines de anuncio
- Gran parte del trabajo actual está concentrado en exactitud, conformidad, optimización y soporte de plataformas
- Una razón del rápido avance de dav2d es la experiencia acumulada en dav1d sobre threading, configuración SIMD, pruebas, portabilidad y diseño de API
- AV2 requiere una cantidad importante de código nuevo para el decodificador, pero buena parte de la experiencia obtenida durante el desarrollo de dav1d se aplica directamente a dav2d
Optimización de rendimiento y validación
- En x86 ya se incluyó código AVX2 para varios tamaños de transformada inversa, y también está avanzando el trabajo en rutas relacionadas con CCTX, deblock, intra prediction y CfL
- En ARM, el trabajo en AArch64 NEON se está aplicando a decodificación entrópica, SAD, predicción intra, predicción por paleta, predictor DC, predictor smooth y funciones relacionadas con movimiento
- También ya comenzó parte del trabajo para arm32
- El trabajo en RISC-V está en una etapa inicial y avanza reactivando y ajustando ensamblador existente para predicción intra y compensación de movimiento
- El flujo de optimización es similar al de dav1d
- primero se crea una implementación limpia en C
- luego se construye la infraestructura de validación
- después se agrega código optimizado por arquitectura en los hot paths más importantes
- checkasm, creado durante el desarrollo de dav1d, es un framework para validar y medir implementaciones optimizadas comparándolas con la implementación en C
- dav2d aprovecha esta infraestructura desde el primer día, lo que le permite avanzar más rápido que dav1d en una etapa comparable
- El árbol actual ya incluye cobertura de checkasm para transformadas inversas, compensación de movimiento, film grain, CfL y código de vectores de movimiento de referencia
Desarrollo open source y siguientes pasos
- Igual que dav1d, dav2d se desarrolla como un proyecto open source
- El decodificador se distribuye con una licencia estilo BSD, igual que dav1d, lo que facilita su integración tanto en aplicaciones open source como propietarias
- Como ocurre con la mayoría de los proyectos de VideoLAN, el desarrollo se realiza públicamente desde el primer día
- 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
- Una implementación pública aporta interoperabilidad, verificación independiente de la especificación, experimentación más sencilla y una base común para el ecosistema
- Hacia adelante todavía hace falta seguir la evolución de la especificación de AV2, mejorar la conformidad, ampliar la cobertura de pruebas, sumar más optimizaciones para x86 y ARM, y continuar el trabajo en RISC-V
- También quedan pendientes mejoras de rendimiento en mayores profundidades de bits, mejoras de threading, reducción del uso de memoria y preparación para futuras versiones
- Así como dav1d hizo práctico AV1 antes de que el soporte por hardware fuera generalizado, dav2d apunta a cumplir ese mismo papel para AV2
1 comentarios
Comentarios de Hacker News
Too Many Requests
Se puede ver una copia archivada aquí:
https://web.archive.org/web/20260531130034/https://jbkempf.com/blog/2026/dav2d/
https://archive.md/ln5UE
Sale
Too Many Requests, junto con un mensaje que dice que el propietario del archivo excedió el límite de ancho de banda a corto plazo y que se superó el límite diario de 160000 accionesLa decodificación por software de AV1 ya es bastante pesada, así que los benchmarks de decodificación de AV2 probablemente serán lo próximo realmente interesante o aterrador de ver
Incluso se podían usar como tarjeta secundaria en una PC para grabación y codificación con OBS
Ojalá que en la próxima generación compatible con AV2 haya opciones parecidas, y hoy hace todavía más falta porque la producción de video y el streaming ya son muy masivos
Una especificación de códec no puede considerarse terminada hasta que exista al menos un decodificador desarrollado en el mundo real. Es decir, se necesita una implementación de referencia + 1 implementación adicional, y muchas veces la implementación real termina siendo la especificación de facto
De niño en los 90, leer la especificación de MPEG1 me abrió los ojos a cómo se define un sistema complejo
En los estándares de codificación multimedia, casi todo el tiempo se dedica a cómo interpretar los bytes codificados, y eso me parecía genial
La decodificación se puede definir de forma descriptiva, y no hace falta atar la codificación de forma prescriptiva
La creatividad puede desplegarse del lado de la codificación, pero sí o sí hay que proporcionar una manera de entender en conjunto los bytes codificados
Parece que le pegó el HN hug of death
No estoy seguro de que reducir el tamaño en 25% valga tanto la pena como para volver prácticamente obsoleto a todo dispositivo que tenga decodificador por hardware de AV1. La decodificación de AV2 seguramente les quedará pesada
YouTube tiene cientos de variantes de formato:
https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa
Aunque los dispositivos con decodificación por hardware de AV1 son poco comunes, no se van a volver obsoletos pronto
https://www.youtube.com/watch?v=XqZsoesa55w
Ahí ese 25% extra sí vale la pena
Nada se vuelve obsoleto. AV1 va a seguir existiendo por mucho tiempo, y YouTube todavía ofrece codificación H.264 para seguir soportando dispositivos viejos
Parece que llegó otra vez el HN hug of death, y está devolviendo error 429
Pensé que era sobre Dave2D
Parece que el blog recibió el HN hug of death
Sale
Actioning this file would cause "jbkempf.com//blog/2026/dav2d/" to exceed the per-day file actions limit of 160000 actions, try again later, ¿hay alguna copia en otro lado?https://web.archive.org/web/20260531115337/https://jbkempf.com/blog/2026/dav2d/
No me queda claro qué significa exactamente eso de una mejora de ~25% frente a AV1, y que la decodificación de AV2 sea aproximadamente 5 veces más compleja que la de AV1, ni si ambas cosas son comparables entre sí
Es decir, la calidad que en AV1 obtienes con 10 Mbps, en AV2 la obtienes con 8 Mbps
Solo que para lograr esa ganancia del 25% hace falta 5 veces más capacidad de cómputo
Publicación relacionada: The AV2 Video Standard Has Released (Final v1.0 Specification)
https://news.ycombinator.com/item?id=48340910