Sortie de l'encodeur SVT-AV1 2.0 et du décodeur dav1d 1.4 pour le format vidéo AV1

La version de la bibliothèque SVT-AV1 2.0 (Scalable Video Technology AV1) a été publiée avec des implémentations de l'encodeur et du décodeur du format d'encodage vidéo AV1, pour l'accélération desquelles les moyens de calcul parallèle matériel présents dans les processeurs Intel modernes sont utilisés. Le projet a été créé par Intel en partenariat avec Netflix dans le but d'atteindre un niveau de performances adapté au transcodage vidéo à la volée et à l'utilisation dans les services de vidéo à la demande (VOD). Actuellement, le développement est réalisé sous les auspices de l'Open Media Alliance (AOMedia), qui supervise le développement du format d'encodage vidéo AV1. Auparavant, le projet a été développé dans le cadre du projet OpenVisualCloud, qui développe également les encodeurs SVT-HEVC et SVT-VP9. Le code est distribué sous licence BSD.

SVT-AV1 peut être assemblé pour des systèmes basés sur n'importe quelle architecture pour laquelle il existe un compilateur prenant en charge la norme C99, mais les meilleures performances sont obtenues sur les systèmes x86_64, pour lesquels des optimisations d'assemblage basées sur les instructions SIMD sont utilisées (il est souhaitable d'avoir Prise en charge d'AVX2 dans le CPU, mais comme minimum, SS2 est suffisant. La consommation de mémoire dépend du nombre de cœurs de processeur utilisés lors de l'encodage, régulé par l'option « -lp ». En raison de la complexité des algorithmes utilisés dans AV1, l'encodage de ce format nécessite beaucoup plus de ressources que les autres formats, ce qui ne permet pas l'utilisation de l'encodeur AV1 standard pour le transcodage en temps réel. Par exemple, l'encodeur stock du projet AV1 nécessite 5721, 5869 et 658 fois plus de calculs par rapport aux encodeurs x264 (profil "principal"), x264 (profil "haut") et libvpx-vp9.

Parmi les changements de la nouvelle version SVT-AV1 :

  • Une transition a été effectuée vers une nouvelle numérotation de version, selon laquelle le premier chiffre de la version changera à chaque changement d'API/ABI.
  • Des modifications ont été apportées à l'API liées au passage à l'indication de fin de flux (EOS - End Of Stream) dans la dernière trame au lieu d'utiliser une trame vide, ce qui a éliminé le délai d'attente d'une trame supplémentaire. Le changement d'API est déjà reflété dans la base de code FFmpeg.
  • Le mode de débit variable à trois passes (VBR 3 passes) a été supprimé et est désormais remplacé par un mécanisme VBR multi-passes. Le mode multi-passes VBR a été réduit à deux passes pour garantir l'intégration avec FFmpeg.
  • Des optimisations ont été ajoutées à l'encodeur, ce qui a permis d'augmenter l'efficacité de compression des préréglages M9-M13 de 1 à 4 % et la consommation de mémoire du préréglage M5 a diminué de 20 à 35 % en mode LP 8 et de 1 à 5 % dans les autres modes. La consommation de mémoire dans les autres préréglages a diminué de 1 à 5 %.
  • Une optimisation des compromis qualité/vitesse a été réalisée pour les presets qui fixent un haut niveau de qualité. Le préréglage MR de qualité de référence a été accéléré de 100 %.
  • Des optimisations spécifiques à ARM ont été ajoutées aux fonctions C uniquement.

De plus, on peut noter la sortie du projet dav1d 1.4.1, au sein duquel les communautés VideoLAN et FFmpeg développent une bibliothèque avec la mise en œuvre d'un décodeur gratuit alternatif pour le format d'encodage vidéo AV1. La bibliothèque dav1d prend en charge toutes les fonctionnalités d'AV1, y compris les types avancés de sous-échantillonnage et tous les paramètres de contrôle de profondeur de couleur indiqués dans la spécification (8, 10 et 12 bits). La principale caractéristique de dav1d est de se concentrer sur l'obtention des performances de décodage les plus élevées possibles et de garantir un travail de haute qualité en mode multithread. Le code du projet est écrit en C (C99) avec des inserts d'assemblage (NASM/GAS) et est distribué sous licence BSD. La prise en charge des architectures x86, x86_64, ARMv7 et ARMv8 et des systèmes d'exploitation FreeBSD, Linux, Windows, macOS, Android et iOS a été implémentée.

La version dav1d 1.4 se distingue par la prise en charge des nouvelles architectures Loongarch et RISC-V, ainsi que par l'introduction d'optimisations supplémentaires basées sur les instructions AVX-512, accélérant le fonctionnement des filtres 6tap sur les systèmes ARM, augmentant l'efficacité du travail multithread et réduisant le taille des données binaires sur les systèmes ARM64, ARM32 et RISC V. Correction de la vulnérabilité CVE-2024-1580, qui provoquait une écriture hors limites en raison d'un dépassement d'entier lors du traitement de très grandes tailles de trame.

Source: opennet.ru

Ajouter un commentaire