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
