DR
- AV1 é um codec de vídeo que está ganhando força entre os serviços de streaming online porque é livre de royalties e oferece boa qualidade de vídeo sem precisar de muita largura de banda.
- No entanto, muitos dispositivos não possuem aceleradores de hardware para reproduzir vídeos codificados em AV1, o que significa que precisam usar um decodificador de software executado na CPU.
- O Android atualmente vem com o decodificador de software libgav1 AV1 do Google, mas uma atualização futura mudará isso para o libdav1d da VideoLAN, que oferece desempenho significativamente melhor.
Há exatos sete anos, o YouTube compartilhou uma estatística surpreendente com o mundo: as pessoas estão assistindo a um bilhão horas de conteúdo na plataforma todo dia. O cenário da mídia digital só cresceu desde então graças à ascensão do TikTok e à guerra contínua de streaming online entre a Netflix e as grandes empresas de mídia. Com a grande quantidade de conteúdo de vídeo que esses serviços on-line têm de fornecer diariamente, é imperativo que as empresas utilizem a melhor tecnologia de compressão disponível para economizar largura de banda sem comprometer significativamente a qualidade. É por isso que o codec AV1 da Alliance for Open Media vem ganhando força entre os serviços de streaming online.
AV1 é um codec de vídeo que oferece eficiência de compactação superior em comparação com codecs mais antigos, como h.264, h265 ou VP9, o que significa que os vídeos codificados em AV1 podem fornecer qualidade de vídeo semelhante com taxas de bits muito mais baixas. Isso reduz os requisitos de largura de banda tanto para o serviço de streaming quanto para o usuário final, sem comprometer a qualidade. No entanto, o melhor desempenho não é a única razão pela qual a indústria de streaming adora o AV1. AV1 também é livre de royalties, o que o torna uma opção atraente para serviços de streaming que desejam reduzir custos.
No entanto, os serviços de streaming demoraram a adotar o AV1 para seu conteúdo. Embora serviços como YouTube, Netflix, Instagram e Vimeo já codifiquem grande parte de seu conteúdo em AV1, eles ainda veiculam esse conteúdo em outros codecs para a grande maioria dos dispositivos de consumo. A razão é que muitos dispositivos de consumo ainda não possuem suporte de hardware para reproduzir vídeos AV1, o que significa que eles teriam que usar um decodificador de software executado na CPU para reproduzir um vídeo AV1.
AV1 oferece eficiência de compactação superior em comparação com codecs mais antigos como h.264, h265 ou VP9.
Os decodificadores de vídeo são essencialmente algoritmos complexos que podem ser executados na CPU (acelerado por software) ou em um bloco de hardware dedicado para processamento multimídia (acelerado por hardware). Dependendo da qualidade do vídeo e do codec usado, a decodificação de um arquivo de vídeo pode ser intensiva em termos computacionais. Idealmente, os dispositivos usariam um decodificador acelerado por hardware para reproduzir conteúdo AV1, garantindo uma reprodução mais suave e menor consumo de energia.
Infelizmente, a maioria dos dispositivos móveis não possui um decodificador AV1 acelerado por hardware, o que significa que eles teriam que processar o conteúdo AV1 na CPU usando um decodificador acelerado por software. Isso é especialmente problemático considerando que a duração da bateria é uma alta prioridade para a maioria dos usuários. Finalmente chegamos a um ponto em que todos os principais fornecedores de silício móvel – incluindo a Qualcomm começando com o Snapdragon 8 Gen 2 e a Apple com o A17 Pro – estão enviando produtos com um decodificador AV1 acelerado por hardware. Dado que a maioria das pessoas não atualiza seus telefones todos os anos ou não compra o hardware de última geração, levará alguns anos até que a maioria dos dispositivos móveis suporte a decodificação AV1 acelerada por hardware.
Mishaal Rahman / Autoridade Android
Esquerda: Lista de decodificadores AV1 disponíveis em um Samsung Galaxy S24 Ultra.
Meio: Detalhes do decodificador libgav1 AV1 acelerado por software e fornecido pelo sistema.
À direita: Detalhes do decodificador AV1 acelerado por hardware fornecido pela Qualcomm.
Enquanto isso, o Google está se preparando para atualizar o Android para que os dispositivos existentes possam reproduzir adequadamente o conteúdo AV1, mesmo que não tenham um decodificador acelerado por hardware. Desde o lançamento do Android 10, o AOSP incluiu o decodificador libgav1, um decodificador AV1 de código aberto desenvolvido pelo Google. No entanto, libgav1 não é o único decodificador AV1 disponível, pois também existe o libaom da Alliance for Open Media (o decodificador de referência), bem como o libdav1d da VideoLAN.
Assim como o libgav1, o libdav1d roda na CPU, mas é significativamente melhor na decodificação de conteúdo AV1 do que libgav1. Isso pode ser atribuído ao fato de que grandes partes do libdav1d foram escritas em assembly para chips ARMv8, reduzindo muita sobrecarga de desempenho. Na verdade, libdav1d é tão eficiente em termos computacionais que dá até mesmo ao hardware de baixo custo a capacidade de reproduzir suavemente conteúdo AV1 de alta qualidade sem consumir muita energia da CPU.
Para efeito de comparação, aqui está um gráfico que compara o desempenho entre os decodificadores libgav1 do Google e libdav1d AV1 da VideoLAN. O dispositivo que testei foi um Google Pixel 3 XL equipado com Snapdragon 845 da Qualcomm, que não possui um decodificador AV1 acelerado por hardware. Neste teste, reproduzi dois vídeos codificados em AV1: um clipe de 6:30 do Artemis I lançamento em 4K60 (8 bits, 1165 kb/s) e um clipe de 9:11 da Netflix chamado “Sparks” em 1080p25 ( 10 bits, 915 KB/s).
Mishaal Rahman / Autoridade Android
Como você pode ver no gráfico, o libdav1d superou dramaticamente o libgav1 neste experimento. Meu Pixel 3 XL teve uma média de 50fps ao reproduzir o clipe Artemis 1 usando libdav1d como decodificador. Em comparação, o dispositivo teve média inferior a 10fps ao usar libgav1. Da mesma forma, meu Pixel teve uma média de 25fps ao reproduzir o clipe Sparks com libdav1d versus menos de 10fps com libgav1.
Se você está se perguntando como consegui testar o libdav1d no meu Pixel 3 XL, é porque usei o VLC Media Player, que inclui o libdav1d. A maioria dos aplicativos reprodutores de mídia no Android usa a biblioteca ExoPlayer do Google, cujo padrão é o decodificador libgav1 fornecido pelo sistema para conteúdo AV1 quando um decodificador AV1 acelerado por hardware não está presente. Se o Google trocasse o decodificador AV1 fornecido pelo sistema de libgav1 para libdav1d, os aplicativos reprodutores de mídia que usam ExoPlayer poderiam se beneficiar significativamente de suas melhorias de desempenho. É exatamente isso que o Google vem se preparando para fazer desde o final do ano passado.
Meu dispositivo de teste teve uma média de 25fps ao reproduzir o clipe Sparks com libdav1d versus menos de 10fps com libgav1.
Desde o início de novembro, o código-fonte do AOSP inclui o decodificador libdav1d. Isso ocorre porque o Google precisava experimentar o uso de libdav1d em vez de libgav1 como decodificador AV1 fornecido pelo sistema Android. De acordo com duas fontes que desejam permanecer anônimas, o Google informou há alguns meses aos seus parceiros que pretendem substitua libgav1 por libdav1d em dispositivos existentes até março de 2024 por meio de uma próxima atualização do sistema do Google Play. Isso é possível porque os codecs de mídia fazem parte de um módulo do Project Mainline no Android.
Embora uma de minhas fontes tenha confirmado que o Google ainda está testando essa mudança, o que não está claro é se ela será implementada em todos os dispositivos que suportam o módulo principal de Media Codecs (Android 10 e superior) ou se será implementada apenas em dispositivos que executam Android. 14. É possível que o Google limite essa mudança apenas aos dispositivos que executam o Android 14, já que o Android 14 é a primeira versão em que o Google realmente o fez obrigatório para os OEMs incluírem um decodificador AV1. Isso pode parecer estranho, já que o AOSP incluiu o libgav1 desde o Android 10, mas parece que o Google não exigiu que os OEMs o incluíssem em suas compilações até o Android 14.
De qualquer forma, ficaremos atentos à próxima atualização do sistema do Google Play de março de 2024 para ver se ela realmente inclui o decodificador libdav1d AV1. Se isso acontecer, os usuários de hardware de baixo custo poderão ver uma melhoria substancial no desempenho de reprodução de vídeo AV1. No entanto, resta saber quanto tempo levará para que os serviços de streaming realmente forneçam conteúdo de vídeo AV1 a esses dispositivos.