Lançamento do codificador SVT-AV1 2.0 e do decodificador dav1d 1.4 para formato de vídeo AV1

Foi publicado o lançamento da biblioteca SVT-AV1 2.0 (Scalable Video Technology AV1) com implementações do codificador e decodificador do formato de codificação de vídeo AV1, para aceleração do qual são utilizados os meios de computação paralela de hardware presentes nas modernas CPUs Intel. O projeto foi criado pela Intel em parceria com a Netflix com o objetivo de atingir um nível de desempenho adequado para transcodificação de vídeo on-the-fly e uso em serviços de vídeo sob demanda (VOD). Atualmente, o desenvolvimento está sendo realizado sob os auspícios da Open Media Alliance (AOMedia), que supervisiona o desenvolvimento do formato de codificação de vídeo AV1. Anteriormente, o projeto foi desenvolvido no âmbito do projeto 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 montado para sistemas baseados em qualquer arquitetura para a qual exista um compilador que suporte o padrão C99, mas o melhor desempenho é alcançado em sistemas x86_64, para os quais são utilizadas otimizações de montagem baseadas em instruções SIMD (é desejável ter Suporte AVX2 na CPU, mas como mínimo é suficiente e SS2). O consumo de memória depende do número de núcleos do processador utilizados durante a codificação, regulado pela opção “-lp”. Devido à complexidade dos algoritmos utilizados no AV1, a codificação deste formato requer significativamente mais recursos do que outros formatos, o que não permite o uso do codificador AV1 padrão para transcodificação em tempo real. Por exemplo, o codificador de estoque do projeto AV1 requer 5721, 5869 e 658 vezes mais cálculos em comparação com os codificadores x264 (perfil "principal"), x264 (perfil "alto") e libvpx-vp9.

Entre as mudanças na nova versão do SVT-AV1:

  • Foi feita uma transição para uma nova numeração de versão, segundo a qual o primeiro dígito da versão mudará a cada alteração de API/ABI.
  • Foram realizadas alterações na API relacionadas à transição para a indicação de fim de stream (EOS - End Of Stream) no último quadro ao invés de utilizar um quadro vazio, o que eliminou o atraso na espera por um quadro extra. A mudança da API já está refletida na base de código do FFmpeg.
  • O modo de taxa de bits variável de três passagens (VBR de 3 passagens) foi removido e agora é substituído por um mecanismo VBR de múltiplas passagens. O modo multipassagem VBR foi reduzido para duas passagens para garantir a integração com o FFmpeg.
  • Otimizações foram adicionadas ao codificador, como resultado a eficiência de compressão das predefinições M9-M13 aumentou em 1-4%, e o consumo de memória da predefinição M5 diminuiu em 20-35% no modo LP 8 e em 1-5% em outros modos. O consumo de memória em outras predefinições diminuiu de 1 a 5%.
  • A otimização dos compromissos qualidade/velocidade foi realizada para predefinições que definem um alto nível de qualidade. A predefinição de RM de qualidade de referência foi acelerada em 100%.
  • Otimizações específicas do ARM foram adicionadas às funções somente C.

Além disso, podemos destacar o lançamento do projeto dav1d 1.4.1, dentro do qual as comunidades VideoLAN e FFmpeg estão desenvolvendo uma biblioteca com a implementação de um decodificador alternativo gratuito para o formato de codificação de vídeo AV1. A biblioteca dav1d suporta todos os recursos do AV1, incluindo tipos avançados de subamostragem e todos os parâmetros de controle de profundidade de cor indicados na especificação (8, 10 e 12 bits). A principal característica do dav1d é seu foco em alcançar o mais alto desempenho de decodificação possível e garantir trabalho de alta qualidade no modo multithread. O código do projeto é escrito em C (C99) com inserts de montagem (NASM/GAS) e é distribuído sob a licença BSD. Foi implementado suporte para arquiteturas x86, x86_64, ARMv7 e ARMv8 e sistemas operacionais FreeBSD, Linux, Windows, macOS, Android e iOS.

A versão dav1d 1.4 se destaca por suportar as novas arquiteturas Loongarch e RISC-V, além de introduzir otimizações adicionais baseadas em instruções AVX-512, acelerando a operação de filtros 6tap em sistemas ARM, aumentando a eficiência do trabalho multithread e reduzindo o tamanho dos dados binários nos sistemas ARM64, ARM32 e RISC V. Corrigida a vulnerabilidade CVE-2024-1580, que causava uma gravação fora dos limites devido a um estouro de número inteiro ao processar tamanhos de quadros muito grandes.

Fonte: opennet.ru

Adicionar um comentário