Uitgave van SVT-AV1 2.0-encoder en dav1d 1.4-decoder voor AV1-videoformaat

De release van de SVT-AV1 2.0-bibliotheek (Scalable Video Technology AV1) met implementaties van de encoder en decoder van het AV1-videocoderingsformaat is gepubliceerd. Het project is gemaakt door Intel in samenwerking met Netflix om een ​​prestatieniveau te bereiken dat geschikt is voor on-the-fly videotranscodering en gebruik in video-on-demand (VOD)-services. Momenteel wordt de ontwikkeling uitgevoerd onder auspiciën van de Open Media Alliance (AOMedia), die toezicht houdt op de ontwikkeling van het AV1-videocoderingsformaat. Eerder werd het project ontwikkeld in het kader van het OpenVisualCloud-project, dat ook SVT-HEVC- en SVT-VP9-encoders ontwikkelt. De code wordt gedistribueerd onder de BSD-licentie.

SVT-AV1 kan worden gecompileerd voor systemen op basis van iedere architectuur waarvoor een compiler bestaat die de C99-standaard ondersteunt. De beste prestaties worden echter behaald op x86_64-systemen die assembler-optimalisaties gebruiken op basis van SIMD-instructies (AVX2-ondersteuning in de CPU is wenselijk, maar SS2 is minimaal voldoende). Het geheugenverbruik is afhankelijk van het aantal processorkernen dat betrokken is bij het coderen. Dit wordt bepaald met de optie "--lp". Vanwege de complexiteit van de algoritmen die in AV1 worden gebruikt, zijn er voor het coderen van dit formaat aanzienlijk meer bronnen nodig dan voor andere formaten. Hierdoor is het niet mogelijk om de standaard AV1-encoder te gebruiken voor realtime transcodering. De standaardencoder van het AV1-project vereist bijvoorbeeld 5721, 5869 en 658 keer meer berekeningen vergeleken met de encoders x264 (profiel "main"), x264 (profiel "high") en libvpx-vp9.

Enkele van de wijzigingen in de nieuwe SVT-AV1-release:

  • Er is een overgang gemaakt naar een nieuwe versienummering, waarbij het eerste cijfer in de versie verandert bij elke wijziging in de API/ABI.
  • Er zijn wijzigingen aangebracht in de API met betrekking tot de overgang naar de einde-stream (EOS)-indicatie in het laatste frame in plaats van een leeg frame te gebruiken. Hierdoor is er geen vertraging meer door het wachten op een extra frame. De API-wijziging is al doorgevoerd in de FFmpeg-codebase.
  • De 3-pass variabele bitsnelheidsmodus (XNUMX-pass VBR) is verwijderd en vervangen door een multi-pass VBR-mechanisme. De multi-pass VBR-modus is teruggebracht tot twee passes om integratie met FFmpeg mogelijk te maken.
  • De encoder is verbeterd met optimalisaties die de compressie-efficiëntie voor presets M9-M13 met 1-4% hebben verhoogd en het geheugengebruik in preset M5 met 20-35% hebben verlaagd in de LP 8-modus en met 1-5% in andere modi. Het geheugengebruik in andere presets is met 1-5% verminderd.
  • Geoptimaliseerde afwegingen tussen kwaliteit en snelheid voor presets die hoge kwaliteitsniveaus instellen. De MR-voorinstelling, die referentiekwaliteit biedt, is met 100% versneld.
  • ARM-architectuurspecifieke optimalisaties zijn toegevoegd aan C-only functies.

Daarnaast is de release van het dav1d 1.4.1-project de moeite waard. In het kader daarvan ontwikkelen de VideoLAN- en FFmpeg-gemeenschappen een bibliotheek met de implementatie van een alternatieve gratis decoder voor het AV1-videocoderingsformaat. De dav1d-bibliotheek ondersteunt alle AV1-functies, inclusief geavanceerde subsampling en alle opgegeven opties voor kleurdieptecontrole (8, 10 en 12 bits). De belangrijkste eigenschap van dav1d is de focus op het behalen van de hoogst mogelijke decoderingsprestaties en het garanderen van een hoogwaardige werking in multithreaded-modus. De projectcode is geschreven in C (C99) met assembler-invoegtoepassingen (NASM/GAS) en wordt gedistribueerd onder de BSD-licentie. Ondersteuning voor x86-, x86_64-, ARMv7- en ARMv8-architecturen en de besturingssystemen FreeBSD, Linux, Windows, macOS, Android en iOS is geïmplementeerd.

dav1d 1.4 valt op door de ondersteuning voor de nieuwe Loongarch- en RISC-V-architecturen, evenals extra optimalisaties op basis van AVX-512-instructies, versnelling van 6tap-filters op ARM-systemen, verhoogde efficiëntie van multithreading en een kleinere binaire gegevensgrootte op ARM64-, ARM32- en RISC-V-systemen. Kwetsbaarheid CVE-2024-1580 is opgelost, waardoor er een out-of-bounds-schrijfbewerking werd uitgevoerd vanwege een integeroverloop bij het verwerken van zeer grote frames.

Bron: opennet.ru

Voeg een reactie