Die Version 4.3.0 der SVT-AV1-Bibliothek (Scalable Video Technology AV1) wurde veröffentlicht, einschließlich Implementierungen des Codierers und Dekoders des Video-Codierungsformats AV1, die durch die in x86_64- und ARM-Prozessoren vorhandenen Erweiterungen zur Hardwareparallelisierung beschleunigt werden. Das Projekt wurde von Intel in Partnerschaft mit Netflix ins Leben gerufen, um ein Leistungsniveau zu erreichen, das für die Echtzeittranskodierung von Videos und die Nutzung in Video-on-Demand-Diensten (VOD) geeignet ist. Derzeit wird die Entwicklung unter dem Banner des Open Media Alliance (AOMedia) fortgeführt, das die Entwicklung des AV1-Video-Codierungsformats überwacht. Früher wurde das Projekt im Rahmen des OpenVisualCloud-Projekts entwickelt, das auch die Codierer SVT-HEVC und SVT-VP9 entwickelt. Der Code wird unter der BSD-Lizenz veröffentlicht.
SVT-AV1 kann für Systeme auf Basis beliebiger Architekturen, für die es einen Compiler mit Unterstützung für den C99-Standard gibt, kompiliert werden, wobei die beste Leistung auf x86_64-Systemen erzielt wird, für die assembleroptimierte SIMD-Instruktionen verwendet werden (AVX2-Unterstützung in der CPU ist wünschenswert, aber mindestens ist auch SSE2 ausreichend). Der Speicherverbrauch hängt von der Anzahl der bei der Codierung verwendeten CPU-Kerne ab, die durch die Option „—lp“ geregelt werden. Aufgrund der Komplexität der in AV1 verwendeten Algorithmen erfordert die Codierung in diesem Format deutlich mehr Ressourcen als für andere Formate.
Zu den Änderungen in der neuen Version von SVT-AV1 gehören:
- Es wurden Optimierungen der Qualität/Geschwindigkeit-Kompromisse für alle Presets vorgenommen, die die CPU-Belastung um 5-8 % bei gleichzeitigem Erhalt des gleichen Qualitätsniveaus reduziert haben. Zudem wurde die Codierungszeit im Multithread-Modus um 10-11 % verkürzt. Die Durchführung von Ausschlussoperationen ineffizienter Codierungsmodi (MD — Mode Decision), die Berechnung von Bewegungsvektoren (MV — Motion Vector) und Filterparametern während der Codierung, die Berechnung der Größen von Frequenzkoeffizienten, die Suche nach Subpixelverschiebungen, das Kopieren von Blöcken und das Herausfiltern unnötiger Details mithilfe des RDOQ-Algorithmus (Rate-Distortion Optimized Quantization) wurde beschleunigt. Im Multithread-Modus wird der Algorithmus zur Bestimmung der Bildschirminhaltübertragung jetzt nur auf I-Frames angewendet, um Ressourcen zu sparen.
- Ein experimenteller Schalter „—fast-decode 3“ wurde hinzugefügt, um das Dekodieren statischer Bilder zu beschleunigen.
- Das Flag "—fgs-table" wurde hinzugefügt, um die Unterstützung von Filmkorn-Tabellen zu aktivieren, sowie die API FILM_GRAIN_EVENT, um die Kornparameter in Bezug auf die Frames festzulegen.
- Die Geschwindigkeit der verlustfreien Kodierung wurde erhöht.
- Im Niedriglatenzkodierungsmodus wurde die Parallelisierung der Blockverarbeitung (tile) implementiert.
- Die Option "max_allowed_consecutive_frames_skips" wurde hinzugefügt, um das Überspringen von Frames im Modus der konstanten Bitrate (CBR) zu konfigurieren.
- Der Parameter "max_hierarchical_levels" wurde hinzugefügt, um den Pufferpool zu steuern, der beim Ändern der Größe von Gruppen von Zwischenbildern (mini-GOP – Group of Pictures) verwendet wird.
- Die Build-Option "—mobile-build" (in CMake — MOBILE_BUILD) wurde hinzugefügt, um eine 8-Bit-Bibliothek für RTC, VOD und AVIF zu erstellen. Es wurden Optionen CONFIG_ENABLE_* hinzugefügt, um den Bau ungenutzter Kodierungswerkzeuge zu deaktivieren.
- Für x86-Systeme wurden 8-Bit-CDEF-Handler auf Basis der AVX2- und SSE4.1-Instruktionen sowie 16-Bit-Direkttransformationen auf Basis der AVX2- und AVX-512-Instruktionen implementiert. Ein mit SSE4.1-Instruktionen optimierter Code für die interframe Vorhersage, die Arbeit mit Paletten und Transformationen wurde hinzugefügt. Die Handler für Quantisierung, Blockkopierung, Verzerrungsberechnung und Bewertung der Subpixelunterschiede wurden optimiert.
- Für ARM-Systeme wurden durch die Prozessorinstruktionen Neon beschleunigte Handler-Varianten hinzugefügt.
Quelle: opennet.ru
