Die Bibliothek SVT-AV1 2.0 (Scalable Video Technology AV1) wurde veröffentlicht, einschließlich Implementierungen eines Encoders und Decoders für das AV1 Video Coding Format. Diese Implementierungen nutzen die in modernen Intel-CPUs vorhandenen Hardwaremittel zur Parallelisierung von Berechnungen, um die Geschwindigkeit zu erhöhen. Das Projekt wurde von Intel in Partnerschaft mit Netflix ins Leben gerufen, um eine Leistungsstufe zu erreichen, die für das Echtzeit-Encoding von Videos und die Anwendung in Video-on-Demand-Diensten (VOD) geeignet ist. Derzeit wird die Entwicklung unter dem Dach des Open Media Alliances (AOMedia) geleitet, welches die Weiterentwicklung des AV1 Video Coding Formats überwacht. Zuvor wurde das Projekt im Rahmen von OpenVisualCloud entwickelt, das auch Encoder für 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, die einen Compiler mit C99-Unterstützung bieten, konfiguriert werden. Die optimale Leistung wird jedoch auf x86_64-Systemen erreicht, bei denen assemblerspezifische Optimierungen auf Basis von SIMD-Instruktionen Anwendung finden (idealerweise sollte die CPU AVX2 unterstützen, aber als Minimum reicht auch SS2 aus). Der Speicherverbrauch hängt von der Anzahl der beim Codieren verwendeten Prozessorkerne ab, die über die Option „—lp“ geregelt werden. Aufgrund der Komplexität der in AV1 verwendeten Algorithmen erfordert die Codierung dieses Formats erheblich mehr Ressourcen als bei anderen Formaten, was es unmöglich macht, den standardmäßigen AV1-Codierer für die Echtzeittranskodierung zu verwenden. Beispielsweise erfordert der standardmäßige Codierer aus dem AV1-Projekt 5721, 5869 und 658 Mal mehr Berechnungen im Vergleich zu den Codierern x264 (Profil „main“), x264 (Profil „high“) und libvpx-vp9.
Zu den Neuerungen in der aktuellen Version von SVT-AV1 gehören:
- Es wurde auf ein neues Versionsnummerierungssystem umgestellt, bei dem sich die erste Ziffer bei jeder Änderung von API/ABI ändert.
- Es wurden Änderungen an der API vorgenommen, die mit der Umstellung auf die Anzeige des End Of Stream (EOS) im letzten Frame anstelle der Verwendung eines leeren Frames verbunden sind. Dies hat die Verzögerung beim Warten auf einen überflüssigen Frame beseitigt. Die API-Änderung ist bereits im Code von FFmpeg berücksichtigt.
- Der dreipassige Modus für variable Bitrate (3-pass VBR) wurde entfernt, stattdessen kommt jetzt ein Mechanismus für mehrpassige VBR zum Einsatz. Der mehrpassige VBR-Modus wurde auf die Ausführung von zwei Durchgängen reduziert, um die Integration mit FFmpeg zu gewährleisten.
- Im Encoder wurden Optimierungen hinzugefügt, die die Kompressionseffizienz der Presets M9-M13 um 1-4% verbessert haben, während der Speicherverbrauch im Preset M5 im LP 8-Modus um 20-35% und in anderen Modi um 1-5% gesenkt wurde. Der Speicherverbrauch in den übrigen Presets reduzierte sich um 1-5%.
- Die Kompromisse zwischen Qualität und Geschwindigkeit für Presets mit hohem Qualitätsniveau wurden optimiert. Die Verarbeitung des MR-Presets, das Referenzqualität bietet, wurde um 100% beschleunigt.
- Optimierungen, die speziell für die ARM-Architektur entwickelt wurden, wurden in Funktionen implementiert, die ausschließlich in C geschrieben sind.
Zusätzlich möchten wir die Veröffentlichung des Projekts dav1d 1.4.1 hervorheben, bei dem die Gemeinschaften VideoLAN und FFmpeg eine Bibliothek zur Implementierung eines alternativen, freien Decoders für das AV1-Videocodierungsformat entwickeln. Die dav1d-Bibliothek unterstützt alle Funktionen von AV1, einschließlich erweiterter Subsampling-Methoden und aller in der Spezifikation angegebenen Parameter zur Farbvertiefung (8, 10 und 12 Bit). Ein zentrales Merkmal von dav1d ist die Ausrichtung auf maximal mögliche Decodierungsleistung und die Gewährleistung einer qualitativ hochwertigen Leistung im Multithreading-Modus. Der Projektcode ist in C (C99) mit Assembler-Einfügungen (NASM/GAS) geschrieben und wird unter der BSD-Lizenz veröffentlicht. Es wird Unterstützung für die Architekturen x86, x86_64, ARMv7 und ARMv8 sowie für die Betriebssysteme FreeBSD, Linux, Windows, macOS, Android und iOS angeboten.
Die Version dav1d 1.4 zeichnet sich durch die Unterstützung neuer Architekturen wie Loongarch und RISC-V aus. Zudem wurden zusätzliche Optimierungen auf Basis der AVX-512-Befehle implementiert, die Leistung von 6tap-Filtern auf ARM-Systemen verbessert sowie die Effizienz der Multithread-Verarbeitung erhöht. Abgesehen davon wurde die Größe der Binärdateien auf ARM64, ARM32 und RISC-V-Systemen reduziert. Ein Sicherheitsschwachstelle (CVE-2024-1580), die durch ein ganzzahliges Überlaufproblem beim Verarbeiten von sehr großen Frames zu einem Schreiben außerhalb der Puffergrenzen führte, wurde behoben.
Quelle: opennet.ru
