Nach sieben Monaten Entwicklung wurde der neue stabile Branch des Multimedia-Servers PipeWire 1.2.0 veröffentlicht, der den Audio-Server PulseAudio ersetzt und sich durch die Integration von Funktionen zur Videoverarbeitung, die Möglichkeit zur Audioverarbeitung mit minimalen Latenzen und ein neues Sicherheitsmodell zur Verwaltung des Zugriffs auf einzelne Geräte und Streams auszeichnet. Das Projekt wird von GNOME unterstützt und standardmäßig in Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE und vielen anderen Linux-Distributionen verwendet. Der Code des Projekts ist in C geschrieben und wird unter der LGPLv2.1-Lizenz veröffentlicht.
PipeWire basiert auf einer Multi-Prozess-Architektur, die den gemeinsamen Zugriff auf Inhalte mehrerer Anwendungen ermöglicht.
Es werden Möglichkeiten zur Verarbeitung beliebiger Multimedia-Streams, zur Mischung und Umleitung von Video-Streams sowie zur Verwaltung von Videoquellen wie Videoaufnahmegeräte, Webkameras oder von Anwendungen ausgegebenen Bildschirminhalten bereitgestellt. Beispielsweise ermöglicht PipeWire, die Zusammenarbeit mehrerer Anwendungen mit der Webcam zu organisieren und löst Probleme beim sicheren Erfassen von Bildschirminhalten sowie beim Remote-Zugriff auf den Bildschirm in einer Wayland-Umgebung.
Wenn PipeWire als Audio-Server verwendet wird, kann es minimale Latenzen gewährleisten und Funktionen bereitstellen, die die Möglichkeiten von PulseAudio und JACK kombinieren. Dies berücksichtigt auch die Anforderungen von professionellen Audioverarbeitungssystemen, die PulseAudio nicht erfüllen konnte. Darüber hinaus bietet PipeWire ein erweitertes Sicherheitsmodell, das den Zugriff auf einzelne Geräte und spezifische Streams steuert und das Routing von Audio- und Videoübertragungen aus und in isolierte Container erleichtert. Ein Hauptziel ist die Unterstützung von eigenständigen Anwendungen im Flatpak-Format und die Funktion im grafischen Stack auf Basis von Wayland.
In der neuen Version:
- Das Modell zur Verarbeitung von Datenströmen basierend auf einem Knoten-Grafen hat Unterstützung für asynchrone Verarbeitung erhalten. Dabei wird der Knoten-Graf nicht blockiert, wenn ein bestimmter Knoten keine Ausgaben erzeugt, sondern arbeitet weiter, indem er Daten von einem Knoten verwendet, die im vorherigen Zyklus empfangen wurden. Auf diese Weise kann man, bei einer Verzögerung von einem Zyklus, vermeiden, dass ein Knoten die Arbeit der anderen Knoten im Grafen blockiert.
- Das Konzept von synchronisierten Knotengruppen (node.sync-group) wurde umgesetzt, das es ermöglicht, Gruppen von Knoten gleichzeitig durch den Scheduler zu aktivieren. Diese Funktion kann genutzt werden, um die gleichzeitige Planung der Aktivierung von Knoten beim Start des JACK-Transports zu ermöglichen.
- Die Fehlerausgaben in der Konfigurationsdatei wurden verbessert, und es wurde hinzugefügt, wo der Fehler in den Einstellungen aufgetreten ist (Zeilennummer und Position in der Zeile).
- Die Unterstützung der Technologie Explicit Sync wurde hinzugefügt, die es Anwendungen ermöglicht, den Kompositionsmanager auf Basis des Wayland-Protokolls über die Bereitschaft zur Anzeige eines Frames zu informieren, was zu geringeren Latenzen führt und Artefakte bei der Grafikausgabe eliminiert. Insbesondere löst Explicit Sync Probleme mit der Darstellungsverzögerung und Hängern auf Systemen mit NVIDIA GPU und aktivierter Wayland-Unterstützung.
- Die Möglichkeit zur Festlegung obligatorischer Metadaten bei der Aushandlung von Pufferparametern wurde implementiert, die zur Unterstützung von „Explicit Sync“ verwendet werden.
- Die Unterstützung für die Erstellung und Nutzung mehrerer Datenverarbeitungsschleifen (data-loop) im Client wurde hinzugefügt. Server. In den Datenverarbeitungsschleifen wurden Funktionen zur Zuordnung zu bestimmten CPU-Kernen und zur Festlegung von Prioritäten hinzugefügt.
- Die Möglichkeit zur Änderung der Debugging-Ebenen, die die Protokollausgabe steuern, wurde ohne Neustart über Metadaten bereitgestellt.
- Die Logik zur Vernetzung von Peers (Knoten im Datenstromgraphen, die externe Datenquellen oder -empfänger definieren) wurde überarbeitet.
- Patches zur Verarbeitung von Geräten, die über ALSA UCM (Use Case Manager) als konfliktbehaftet gekennzeichnet sind, wurden akzeptiert.
- Das Modul snapcast-discover wurde hinzugefügt, um Inhalte in Server SnapCast zu streamen.
Quelle: opennet.ru
