1 pontos por GN⁺ 3 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • 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
  • 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

 
GN⁺ 3 시간 전
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

    • Parece que veio tráfego demais do HN
      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 dia
  • A 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

    • As Arc dGPU da Intel eram bem atraentes para codificação e decodificação dedicadas de AV1, especialmente pelo formato compacto de algumas placas
      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
    • Até existir hardware amplamente disponível e barato que acompanhe um codec de 2018, os novos codecs da família AV provavelmente vão continuar sendo algo mais de nicho
    • Vai ser interessante acompanhar isso
  • 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

    • Serviços modernos de vídeo já codificam em vários codecs, bitrates e tamanhos de tela, e entregam ao dispositivo cliente o formato mais adequado que ele consegue decodificar
      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
    • Se você hospeda um vídeo com quase 17 bilhões de visualizações, vai querer transmiti-lo com o menor bitrate possível:
      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 nome veio de dav1d, mas mesmo assim parece uma colisão de nomes bem infeliz
  • 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?

  • 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

    • Eu entendi como uma compressão 25% melhor
      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
    • O AV2 economiza 25% de largura de banda ao custo de aumentar em 5 vezes a complexidade de decodificação
    • O arquivo fica menor, mas decodificar fica mais difícil
  • Post relacionado: The AV2 Video Standard Has Released (Final v1.0 Specification)
    https://news.ycombinator.com/item?id=48340910