Nach fast einem Jahr Entwicklung wurde die Veröffentlichung von GStreamer 1.28 präsentiert, einem plattformübergreifenden Komponenten-Set zur Erstellung einer breiten Palette von Multimedia-Anwendungen, von Mediaplayern und Audio-/Video-Konvertern bis hin zu VoIP-Anwendungen und Streaming-Systemen. Der GStreamer-Code wird unter der LGPLv2.1 weitergegeben. Separat werden Updates für die Plugins gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly sowie für das Wrapper-Plugin gst-libav und den Streaming-Server gst-rtsp-server entwickelt. Auf API- und ABI-Ebene ist die neue Version abwärtskompatibel zur 1.0-Serie. Binäre Builds werden bald für Android, iOS, macOS und Windows bereitgestellt (unter Linux wird empfohlen, die Pakete aus der Distribution zu verwenden).
Wesentliche Verbesserungen in GStreamer 1.28:
- Es wurde ein neues Plugin HIP (Heterogeneous-computing Interface for Portability) hinzugefügt, das die von AMD entwickelte Programmierschnittstelle für heterogene Berechnungen unterstützt, bei denen neben der CPU auch GPU-Ressourcen für parallele Berechnungen verwendet werden. HIP vereinfacht die Implementierung der Unterstützung unterschiedlicher GPUs in einer Codebasis (zum Einsatz auf AMD-GPUs wird der ROCm-Stack genutzt, während für NVIDIA-GPUs eine Übersetzungsschicht für CUDA bereitgestellt wird). Das Plugin bietet Komponenten, die mit HIP implementiert wurden, um Operationen wie das Mischen von Videos, die Umwandlung zwischen verschiedenen Farbräumen, die Größenänderung von Videos und den Datenaustausch zwischen dem Systemspeicher und dem Videospeicher durchzuführen. Darüber hinaus wurde eine Bibliothek zur Integration der Unterstützung von HIP in Anwendungen vorbereitet.
- Die Unterstützung für den Video-Codierungsstandard LCEVC (Low Complexity Enhancement Video Coding) wurde hinzugefügt, der eine zusätzliche Schicht mit Metadaten zur Verbesserung der Videoqualität über die Standard-Codecs H.265 und H.266 implementiert. Die Implementierung des LCEVC-Encoders und -Decoders basiert auf Bibliotheken aus dem SDK V-Nova.
- Die Unterstützung für die Funktionen der Grafik-API Vulkan wurde hinzugefügt, um die Dekodierung von Videos in den Formaten AV1 und VP9 sowie die Kodierung von Videos im H.264-Format zu beschleunigen. Im auf Vulkan basierenden H.265-Video-Decoder wurde die Unterstützung für eine Farbtiefe von 10 Bit pro Kanal hinzugefügt.
- Im Element gtkwaylandsink, das für das Rendering mit GTK4 und Wayland vorgesehen ist, wurden die Möglichkeiten zur Farbverarbeitung erweitert, unter anderem wurde die Unterstützung für das Parsen und Setzen von HDR10-Metadaten hinzugefügt.
- Ein neues Element zur Trennung von Audioquellen (z. B. Trennung von Sprache und Hintergrundmusik) wurde hinzugefügt, basierend auf der Bibliothek charon-audio, die die Methode Demucs in Rust implementiert. Außerdem wurde ein Deepgram-Plugin zur Spracherkennung, geschrieben in Rust, integriert.
- Die Analyse- und Objekterkennungsmöglichkeiten wurden erweitert. Elemente zum Zusammenführen und Trennen von Analysen wurden hinzugefügt. Es wurden ein Tensor-Decoder-Klassifikator, ein Gesichtserkennungsdetektor (facedetector), ein Objekterkennungsdetektor (YOLOv8), ein Element zur Ausführung sowie ein Decoder für das Objekterkennungsmodell (YOLOX) implementiert. Ein tensordecodebin-Element für die automatische Verbindung von Decodern und ein Element zur Ausführung von KI-Modellen mit LiteRT (als Ersatz für TensorFlow Lite) wurden ebenfalls hinzugefügt.
- Ein neues Element zum Dekodieren von GIF-Bildern wurde hinzugefügt, das in Rust geschrieben ist und eine Schleifenanimation unterstützt.
- Im Element input-selector wurde ein zweiphasiger Mechanismus zur Umschaltung zwischen Eingabeströmen (sinkpad) implementiert, der Wettlaufbedingungen beim Umschalten ausschließt.
- Das Element webrtcsink unterstützt nun die hardwarebasierte Codierungsbeschleunigung über VA-API und die Möglichkeit zur erneuten Aushandlung von Verbindungen.
- Es wurden Elemente zum Kombinieren und Extrahieren von Streams im Broadcast-Standardformat ST-2038 hinzugefügt.
- Das Element fallbacksrc unterstützt nun kodierte Streams.
- Im Multimedia-Container FLV, der für RTMP-Übertragungen verwendet wird, wurde die Unterstützung für H.265-Video verbessert, und mehrkanaliger Ton wurde hinzugefügt.
- Im Element glupload wurde die Unterstützung für einen UDMABuf-basierten Uploader hinzugefügt, der die gemeinsame Nutzung von Puffern zwischen Software-Decodern/Quellen und GPU, Display-Engines (Wayland) sowie anderen Geräten ermöglicht.
- Das Element qml6 wurde für die Darstellung mit Qt6 QML hinzugefügt.
- In die Bibliothek zur Videoverarbeitung wurden Funktionen zum Zuschneiden, Skalieren, Drehen und Verschieben hinzugefügt.
- Ein GstContext-Objekt wurde hinzugefügt, das die gemeinsame Nutzung von Thread-Pools bei der Ausführung von Elementen ermöglicht, um die Leistung solcher Operationen wie Compositing und Video-Transformation zu steigern.
- Ein icecastsink-Element wurde hinzugefügt, um Streams von IceCast zu empfangen, das AAC-Format unterstützt und in Rust geschrieben ist.
- Ein neues Element zur Stimmklonierung von ElevenLabs wurde hinzugefügt.
- In den Sprachsynthesizer wurde ein Modus zur Beschleunigung der Wiedergabe bei gleichbleibender Tonhöhe hinzugefügt.
- Das vmaf-Element wurde hinzugefügt, um die Qualität der Videoerfahrung mit dem VMAF-Framework von Netflix zu bewerten.
- Ein neuer MPEG-H Audio-Dekoder-Plugin wurde hinzugefügt, basierend auf dem Fraunhofer MPEG-H Dekoder und unterstützt das Entpacken von MP4-Mediencontainern.
- Die Unterstützung für versteckte Untertitel (CC – Closed Captions) und Textverarbeitung wurde erweitert.
Quelle: opennet.ru
