Dav2d
(jbkempf.com)- dav2d é um decodificador de alta velocidade para AV2 desenvolvido pela comunidade VideoLAN, com o objetivo de oferecer uma implementação pronta para uso direto em apps, navegadores e sistemas operacionais
- AV2 é o sucessor livre de royalties do AV1, com cerca de 25% de ganho de eficiência observado, mas com complexidade de decodificação em torno de 5 vezes maior que a do AV1
- Assim como o dav1d cumpriu o papel de decodificador de software rápido no início da adoção do AV1, o dav2d também está sendo preparado desde cedo como um decodificador de qualidade de produção
- Atualmente, a árvore do projeto já concluiu funcionalmente o decodificador AVM v15 e oferece suporte a 8 bits e 10 bits, com foco em correção, conformidade e otimização
- Com otimizações por arquitetura via x86 AVX2, ARM NEON, trabalhos iniciais em RISC-V e validação com checkasm, o projeto avança de forma rápida e segura
Objetivo e contexto do dav2d
- dav2d é um novo decodificador de alta velocidade para o codec AV2, desenvolvido por membros da comunidade VideoLAN
- O repositório foi aberto há algumas semanas, e o objetivo e o estado do projeto foram divulgados em sincronia com a primeira liberação oficial da especificação do AV2
- O dav2d é uma continuação natural do dav1d, decodificador de AV1
- O objetivo é fornecer um decodificador pequeno, rápido, portável e preciso que possa ser usado em aplicações reais, players de mídia, navegadores, ferramentas de teste e sistemas operacionais
- Partindo da visão de que “um codec não existe de fato até que todos possam decodificá-lo”, não basta ter só a especificação: também importa haver uma implementação que possa ser compilada, testada, medida e integrada
AV2 e a dificuldade de decodificação
- AV2 é o mais novo codec de vídeo livre de royalties da Alliance for Open Media e sucessor do AV1
- A especificação do AV2 está disponível publicamente
- O AV1 foi finalizado em 2018 e se tornou um codec de vídeo amplamente distribuído em navegadores, dispositivos móveis, sistemas operacionais, TVs, serviços de streaming e aplicações de vídeo
- O AV2 continua melhorando a eficiência de compressão ao introduzir novas ferramentas de codificação em predição, transformações, codificação por entropia, filtragem e processamento de croma
- Embora varie conforme as condições de teste, costuma-se observar uma melhora de cerca de 25% em relação ao AV1, e algumas avaliações apontam ganhos ainda maiores
- A decodificação do AV2 é aproximadamente 5 vezes mais complexa que a do AV1, então, para obter decodificação em tempo real por software no hardware atual, são necessárias otimizações específicas por arquitetura
- Por causa dessa complexidade, o desenvolvimento do dav2d começou cedo, sem esperar a estabilização completa da especificação
Do dav1d ao dav2d
- O ponto de partida do dav2d vem da experiência inicial com o dav1d
- Quando o AV1 foi finalizado, havia um risco real de que a decodificação dedicada por hardware não chegasse rápido o bastante nem a dispositivos suficientes, o que criou a necessidade de um decodificador de software veloz
- Na época, parte da comunidade AOM considerava suficientes as implementações em hardware e o decodificador de referência, mas navegadores, players de mídia, sistemas operacionais e dispositivos móveis precisavam de um decodificador de qualidade de produção antes da ampla disseminação do hardware dedicado
- Depois, a própria AOM passou a apoiar parte do desenvolvimento inicial, e alguns membros da Alliance também se juntaram ao trabalho, o que levou à criação do dav1d
- A necessidade de um decodificador de software rápido acabou sendo maior do que o esperado, e hoje o dav1d é o decodificador de software AV1 mais amplamente distribuído
- O dav1d é usado em VLC, FFmpeg, mpv, Firefox, Chrome, Safari, Android, Windows, Linux e várias outras aplicações e plataformas
- O dav1d também é usado como implementação de referência de decodificador AV1 por muitos desenvolvedores que trabalham com distribuição, testes e otimização de AV1
- O histórico do dav1d está resumido em Introducing dav1d, the road to the first release, First release, dav1d 1.2, 1.5 “Sonic”
- No AV2, a ideia é cumprir esse mesmo papel desde um estágio ainda mais inicial
Estado atual da implementação
- A árvore atual do dav2d já concluiu funcionalmente o decodificador AVM v15 e oferece suporte a decodificação em 8 bits e 10 bits
- A maior parte dos principais componentes do codec já foi implementada, e o projeto entrou na fase de otimização
- parsing do bitstream
- cabeçalhos de frame e de sequência
- decodificação por entropia e processamento de CDF
- predição intra
- predição inter e vetores de movimento de referência
- transformações
- CCTX e CfL
- deblocking
- CDEF
- filtragem Wiener
- síntese de film grain
- Embora o ecossistema AV2 ainda esteja em estágio inicial, o dav2d já é um decodificador funcional e vai além de um repositório vazio feito só para anúncio
- Grande parte do trabalho atual está concentrada em correção, conformidade, otimização e suporte a plataformas
- O avanço rápido do dav2d se apoia na experiência acumulada com o dav1d em threading, organização de SIMD, testes, portabilidade e design de API
- O AV2 exige uma quantidade considerável de novo código de decodificador, mas boa parte da experiência adquirida durante o desenvolvimento do dav1d se aplica diretamente ao dav2d
Otimização de desempenho e validação
- Em x86, já foi adicionado código AVX2 para vários tamanhos de transformada inversa, e seguem em andamento trabalhos nos caminhos relacionados a CCTX, deblock, intra prediction e CfL
- Em ARM, o trabalho com NEON em AArch64 está sendo aplicado a decodificação por entropia, SAD, predição intra, predição por paleta, preditor DC, preditor smooth e funções relacionadas a movimento
- O trabalho para arm32 também já começou parcialmente
- O trabalho em RISC-V ainda está em estágio inicial e segue na direção de reativar e ajustar o assembly existente para predição intra e compensação de movimento
- O fluxo de otimização é semelhante ao do dav1d
- primeiro, cria-se uma implementação em C limpa
- depois, constrói-se a infraestrutura de validação
- por fim, adiciona-se código de otimização específico por arquitetura nos hot paths mais importantes
- O checkasm, criado durante o desenvolvimento do dav1d, é um framework que valida e mede implementações otimizadas comparando-as com as implementações em C
- O dav2d aproveita essa infraestrutura desde o primeiro dia, o que permite avançar mais rápido do que o dav1d em estágio equivalente
- A árvore atual já inclui cobertura de checkasm para código de transformada inversa, compensação de movimento, film grain, CfL e vetores de movimento de referência
Modelo de desenvolvimento open source e próximos passos
- Assim como o dav1d, o dav2d é desenvolvido como um projeto open source
- O decodificador é distribuído sob a mesma licença em estilo BSD do dav1d, o que facilita a integração tanto em aplicações open source quanto proprietárias
- Como ocorre na maioria dos projetos VideoLAN, o desenvolvimento é feito publicamente desde o primeiro dia
- 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
- Uma implementação pública oferece interoperabilidade, validação independente da especificação, experimentação mais fácil e uma base comum para o ecossistema
- Daqui para frente, ainda será necessário acompanhar a especificação do AV2, melhorar a conformidade, expandir a cobertura de testes, adicionar mais otimizações para x86 e ARM e avançar no trabalho para RISC-V
- Também restam melhorias de desempenho para maior profundidade de bits, melhorias de threading, redução do uso de memória e preparação para lançamentos futuros
- Assim como o dav1d tornou o AV1 prático antes de o suporte por hardware se tornar universal, o dav2d busca cumprir o mesmo papel para o AV2
1 comentários
Comentários do Hacker News
Too Many Requests
Dá para ver uma cópia arquivada aqui:
https://web.archive.org/web/20260531130034/https://jbkempf.com/blog/2026/dav2d/
https://archive.md/ln5UE
Aparece
Too Many Requests, junto com a mensagem de que o proprietário do arquivo excedeu o limite de banda de curto prazo e que passou do limite de 160000 ações por diaA decodificação por software de AV1 já é bem pesada, então os benchmarks de decodificação de AV2 provavelmente vão ser a próxima coisa realmente interessante ou assustadora de ver
Também dava para usar como placa auxiliar em um PC para gravação e codificação no OBS
Seria bom ver opções parecidas na próxima linha com suporte a AV2, e isso parece ainda mais necessário agora que produção de vídeo e streaming ficaram tão populares
Uma especificação de codec só pode ser considerada concluída quando existe pelo menos um decodificador implementado no mundo real. Ou seja, é preciso implementação de referência + 1 implementação, e muitas vezes a implementação real acaba virando a especificação de fato
Quando eu era criança nos anos 90, ler a especificação do MPEG1 me abriu os olhos para como definir sistemas complexos
Em padrões de codificação de mídia, a maior parte do tempo é gasta definindo como interpretar os bytes codificados, e isso sempre me pareceu genial
A decodificação pode ser definida de forma descritiva, e a codificação não precisa ser presa de forma normativa
A criatividade pode aparecer no lado da codificação, mas é indispensável fornecer um meio de entender em conjunto os bytes codificados
Parece que rolou o HN hug of death
Não sei se reduzir o tamanho em 25% vale a pena a ponto de tornar praticamente obsoleto todo dispositivo com decodificador de hardware AV1. A decodificação de AV2 vai ser pesada demais para esses aparelhos
O YouTube tem centenas de variantes de formato:
https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa
Dispositivos com decodificação de hardware AV1 são raros, mas não vão ficar obsoletos tão cedo
https://www.youtube.com/watch?v=XqZsoesa55w
Esses 25% extras passam a valer a pena
Nada fica obsoleto. AV1 vai continuar por muito tempo, e o YouTube ainda oferece codificações em H.264 para manter suporte a dispositivos antigos
Parece que veio outro HN hug of death, com erro 429
Achei que fosse sobre o Dave2D
Parece que o blog sofreu o HN hug of death
Está aparecendo
Actioning this file would cause "jbkempf.com//blog/2026/dav2d/" to exceed the per-day file actions limit of 160000 actions, try again later; alguém tem alguma cópia?https://web.archive.org/web/20260531115337/https://jbkempf.com/blog/2026/dav2d/
Não entendo muito bem o que querem dizer, respectivamente, com a melhora de cerca de 25% em relação ao AV1 e com o fato de a decodificação de AV2 ser aproximadamente 5 vezes mais complexa que a de AV1, nem se isso é comparável entre si
Ou seja, a qualidade que no AV1 você obtém a 10 Mbps, no AV2 conseguiria a 8 Mbps
Só que, para obter esse ganho de 25%, é preciso cerca de 5 vezes mais capacidade computacional
Post relacionado: The AV2 Video Standard Has Released (Final v1.0 Specification)
https://news.ycombinator.com/item?id=48340910