Foi lançado o SVT-AV1 2.0 (Scalable Video Technology AV1) com implementações do codificador e decodificador do formato AV1, visando acelerar o processamento através de recursos de paralelização de hardware disponíveis nas CPUs Intel modernas. O projeto foi criado pela Intel em parceria com a Netflix com o objetivo de alcançar um nível de desempenho adequado para a transcodificação de vídeo em tempo real e aplicação em serviços de vídeo sob demanda (VOD). Atualmente, o desenvolvimento está sob a égide da Aliança Open Media (AOMedia), que supervisiona a evolução do formato AV1. Anteriormente, o projeto foi desenvolvido no âmbito do OpenVisualCloud, que também desenvolve os codificadores SVT-HEVC e SVT-VP9. O código é distribuído sob a licença BSD.
O SVT-AV1 pode ser compilado para sistemas baseados em qualquer arquitetura que tenha um compilador suportando o padrão C99, mas a melhor performance é alcançada em sistemas x86_64, onde são aplicadas otimizações em assembly baseadas em instruções SIMD (sendo desejável que o CPU suporte AVX2, mas SS2 é suficiente como mínimo). O consumo de memória depende do número de núcleos do processador utilizados na codificação, que é controlado pela opção "--lp". Devido à complexidade dos algoritmos aplicados no AV1, a codificação desse formato requer significativamente mais recursos do que outros formatos, o que torna impossível o uso do codificador padrão AV1 para transcodificação em tempo real. Por exemplo, o codificador padrão do projeto AV1 requer 5721, 5869 e 658 vezes mais cálculos em comparação com os codificadores x264 (perfil "main"), x264 (perfil "high") e libvpx-vp9.
Entre as mudanças na nova versão do SVT-AV1:
- Foi realizada a transição para uma nova numeração de versões, segundo a qual o primeiro dígito na versão mudará a cada alteração no API/ABI.
- Foram feitas modificações na API relacionadas à transição para a indicação de término de fluxo (EOS - End Of Stream) no último quadro ao invés da utilização de um quadro vazio, o que eliminou a latência de espera por um quadro extra. A alteração da API já está refletida na base de código do FFmpeg.
- O modo de taxa de bits variável de três passagens (3-pass VBR) foi removido, sendo substituído pelo mecanismo de VBR de múltiplas passagens. O modo VBR de múltiplas passagens agora é reduzido a dois passes para garantir a integração com o FFmpeg.
- O codificador recebeu otimizações que resultaram em um aumento de 1-4% na eficiência de compressão dos presets M9-M13, enquanto o consumo de memória no preset M5 foi reduzido em 20-35% no modo LP 8 e em 1-5% em outros modos. O consumo de memória nos demais presets foi diminuído em 1-5%.
- Foram realizadas otimizações nos compromissos qualidade/velocidade para presets que proporcionam um alto nível de qualidade. O funcionamento do preset MR, que oferece qualidade de referência, foi acelerado em 100%.
- Na função escrita apenas em C, foram adicionadas otimizações específicas para a arquitetura ARM.
Além disso, destaca-se o lançamento do projeto dav1d 1.4.1, no qual as comunidades VideoLAN e FFmpeg estão desenvolvendo uma biblioteca com a implementação de um decodificador livre alternativo para o formato de codificação de vídeo AV1. A biblioteca dav1d suporta todas as capacidades do AV1, incluindo tipos avançados de subsampling e todos os parâmetros de controle de profundidade de cor especificados (8, 10 e 12 bits). A característica principal do dav1d é a orientação para alcançar o máximo desempenho de decodificação e garantir um desempenho eficaz em modo multithread. O código do projeto é escrito em C (C99) com inserções em assembly (NASM/GAS) e é distribuído sob a licença BSD. O suporte para as arquiteturas x86, x86_64, ARMv7 e ARMv8, bem como para os sistemas operacionais FreeBSD, Linux, Windows, macOS, Android e iOS, foi implementado.
A versão dav1d 1.4 é notável pelo suporte a novas arquiteturas Loongarch e RISC-V, além da utilização de otimizações adicionais baseadas em instruções AVX-512, aceleração do funcionamento dos filtros 6tap em sistemas ARM, aumento da eficiência do trabalho multithread e redução do tamanho dos dados binários em sistemas ARM64, ARM32 e RISC-V. A vulnerabilidade CVE-2024-1580, que levava a gravações em áreas fora dos limites do buffer devido a um estouro inteiro ao processar quadros de tamanho muito grande, foi corrigida.
Fonte: opennet.ru
