Veröffentlichung des SVT-AV1 2.0-Encoders und des dav1d 1.4-Decoders für das AV1-Videoformat

Die Veröffentlichung der SVT-AV1 2.0 (Scalable Video Technology AV1)-Bibliothek mit Implementierungen des Encoders und Decoders des AV1-Videokodierungsformats wurde veröffentlicht. Das Projekt wurde von Intel in Zusammenarbeit mit Netflix ins Leben gerufen, um ein Leistungsniveau zu erreichen, das für die spontane Videotranskodierung und den Einsatz in Video-on-Demand-Diensten (VOD) geeignet ist. Derzeit erfolgt die Entwicklung unter der Schirmherrschaft der Open Media Alliance (AOMedia), die die Entwicklung des AV1-Videokodierungsformats überwacht. Zuvor wurde das Projekt im Rahmen des OpenVisualCloud-Projekts entwickelt, das auch SVT-HEVC- und SVT-VP9-Encoder entwickelt. Der Code wird unter der BSD-Lizenz vertrieben.

SVT-AV1 kann für Systeme kompiliert werden, die auf jeder Architektur basieren, für die es einen Compiler gibt, der den C99-Standard unterstützt. Die beste Leistung wird jedoch auf x86_64-Systemen erreicht, die Assembleroptimierungen basierend auf SIMD-Anweisungen verwenden (AVX2-Unterstützung in der CPU ist wünschenswert, aber SS2 ist mindestens ausreichend). Der Speicherverbrauch hängt von der Anzahl der an der Kodierung beteiligten Prozessorkerne ab, die durch die Option „--lp“ gesteuert wird. Aufgrund der Komplexität der in AV1 verwendeten Algorithmen erfordert die Kodierung dieses Formats erheblich mehr Ressourcen als andere Formate, was die Verwendung des Standard-AV1-Encoders für die Echtzeit-Transkodierung nicht zulässt. Beispielsweise erfordert der Standard-Encoder aus dem AV1-Projekt 5721, 5869 und 658 Mal mehr Berechnungen im Vergleich zu den Encodern x264 (Profil „main“), x264 (Profil „high“) und libvpx-vp9.

Zu den Änderungen in der neuen SVT-AV1-Version gehören:

  • Es wurde auf eine neue Versionsnummerierung umgestellt, wonach sich die erste Ziffer der Version bei jeder API/ABI-Änderung ändert.
  • An der API wurden Änderungen im Zusammenhang mit dem Übergang zur Stream-Ende-Anzeige (EOS – End Of Stream) im letzten Frame vorgenommen, anstatt einen leeren Frame zu verwenden, wodurch die Verzögerung beim Warten auf einen zusätzlichen Frame beseitigt wurde. Die API-Änderung spiegelt sich bereits in der FFmpeg-Codebasis wider.
  • Der 3-Pass-Modus mit variabler Bitrate (XNUMX-Pass-VBR) wurde entfernt und durch einen Multi-Pass-VBR-Mechanismus ersetzt. Der Multi-Pass-VBR-Modus wurde auf zwei Durchgänge reduziert, um die Integration mit FFmpeg zu ermöglichen.
  • Der Encoder wurde durch Optimierungen verbessert, die die Komprimierungseffizienz für die Voreinstellungen M9–M13 um 1–4 % erhöhten und den Speicherverbrauch in der Voreinstellung M5 im LP 20-Modus um 35–8 % und in anderen Modi um 1–5 % reduzierten. Der Speicherverbrauch in anderen Voreinstellungen wurde um 1–5 % reduziert.
  • Optimierte Kompromisse zwischen Qualität und Geschwindigkeit für Voreinstellungen, die hohe Qualitätsstufen festlegen. Das MR-Preset, das Referenzqualität bietet, wurde um 100 % beschleunigt.
  • Den reinen C-Funktionen wurden ARM-spezifische Optimierungen hinzugefügt.

Darüber hinaus ist die Veröffentlichung des Projekts dav1d 1.4.1 erwähnenswert, in dessen Rahmen die VideoLAN- und FFmpeg-Communitys eine Bibliothek mit der Implementierung eines alternativen kostenlosen Decoders für das AV1-Videokodierungsformat entwickeln. Die dav1d-Bibliothek unterstützt alle AV1-Funktionen, einschließlich erweiterter Unterabtastung und aller angegebenen Optionen zur Farbtiefensteuerung (8, 10 und 12 Bit). Das Hauptmerkmal von dav1d ist sein Fokus auf das Erreichen der höchstmöglichen Dekodierungsleistung und die Gewährleistung eines qualitativ hochwertigen Betriebs im Multithread-Modus. Der Projektcode ist in C (C99) mit Assembler-Einfügungen (NASM/GAS) geschrieben und wird unter der BSD-Lizenz vertrieben. Unterstützung für die Architekturen x86, x86_64, ARMv7 und ARMv8 sowie die Betriebssysteme FreeBSD, Linux, Windows, macOS, Android und iOS wurde implementiert.

dav1d 1.4 zeichnet sich durch seine Unterstützung der neuen Loongarch- und RISC-V-Architekturen sowie zusätzliche Optimierungen auf Basis von AVX-512-Anweisungen, Beschleunigung von 6Tap-Filtern auf ARM-Systemen, erhöhte Effizienz des Multithreading und reduzierte Binärdatengröße auf ARM64-, ARM32- und RISC-V-Systemen aus. Die Sicherheitslücke CVE-2024-1580 wurde behoben, die aufgrund eines Ganzzahlüberlaufs bei der Verarbeitung sehr großer Frames zu einem Schreiben außerhalb der Grenzen führte.

Source: opennet.ru

Kommentar hinzufügen