Die Veröffentlichung des Multimedia-Servers PipeWire 1.0.0 wurde bekannt gegeben, der als erste stabile Version gilt und die Reife des Projekts markiert. Auf API- und ABI-Ebene ist die Version 1.0 abwärtskompatibel mit der Branch 0.3. PipeWire wird als Server positioniert, der den Audioserver PulseAudio ersetzt und sich durch die Integration von Funktionen zur Arbeit mit Video-Streams auszeichnet, die Möglichkeit bietet, Audio mit minimalen Latenzen zu verarbeiten, und ein neues Sicherheitsmodell zur Verwaltung des Zugriffs auf der Ebene einzelner Geräte und Streams einführt. Das Projekt wird in GNOME unterstützt und ist standardmäßig in Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE und vielen anderen Linux-Distributionen implementiert. Der Code des Projekts ist in C geschrieben und wird unter der LGPLv2.1-Lizenz vertrieben.
PipeWire bietet umfassende Möglichkeiten zur Verarbeitung aller multimodalen Streams. Es kann Streams von Video mischen und umleiten und wird zur Verwaltung von Videoquellen eingesetzt, wie z. B. Videocapture-Geräten, Webkameras oder von Anwendungen ausgegebenem Bildschirminhalt. Zum Beispiel ermöglicht PipeWire die gleichzeitige Nutzung mehrerer Anwendungen mit einer Webcam und löst Probleme beim sicheren Erfassen von Bildschirminhalten sowie beim Remotezugriff auf den Bildschirm in einer Wayland-Umgebung.
PipeWire kann auch als Audio- Server, das minimale Latenzen gewährleistet und eine Funktionalität bietet, die die Möglichkeiten von PulseAudio und JACK kombiniert, einschließlich der Berücksichtigung der Bedürfnisse professioneller Audiobearbeitung, die PulseAudio nicht erfüllen konnte. Darüber hinaus bietet PipeWire ein erweitertes Sicherheitsmodell, das eine Verwaltung des Zugriffs auf der Ebene einzelner Geräte und spezifischer Streams ermöglicht und das Routing von Audio und Video aus isolierten Containern vereinfacht. Eines der Hauptziele ist die Unterstützung von eigenständigen Anwendungen im Flatpak-Format und die Ausführung im Grafik-Stack basierend auf Wayland.
Hauptfunktionen:
- Erfassung und Wiedergabe von Audio und Video mit minimalen Latenzen;
- Werkzeuge für die Echtzeitverarbeitung von Video und Audio;
- Multiprozessor-Architektur, die den gemeinsamen Zugriff auf Inhalte mehrerer Anwendungen ermöglicht;
- Modell zur Verarbeitung multimediabasierten Knotengraphen mit Unterstützung für Feedback-Schleifen und atomare Graphaktualisierungen. Verbindungsoptionen für sowohl interne Server- als auch externe Plugin-Handler sind verfügbar;
- Effiziente Zugriffsoberfläche für Videostreams über die Übertragung von Dateideskriptoren und Zugriff auf Audio über gemeinsam genutzte Ringpuffer;
- Fähigkeit zur Verarbeitung von Mediendaten aus beliebigen Prozessen;
- Verfügbarkeit eines GStreamer-Plugins zur Vereinfachung der Integration mit bestehenden Anwendungen;
- Unterstützung von isolierten Umgebungen und Flatpak;
- Unterstützung von Plugins im SPA-Format (Simple Plugin API) und die Möglichkeit zur Erstellung von Plugins, die im strengen Echtzeitsbetrieb arbeiten;
- Flexible Systeme zur Abstimmung der verwendeten Multimediaformate und Pufferzuweisung;
- Einsatz eines einzigen Hintergrundprozesses zur Routen von Audio und Video. Möglichkeit, als Audio-Server zu agieren, Hub für die Bereitstellung von Videoanwendungen (zum Beispiel für die gnome-shell screencast API) und Server zur Verwaltung des Zugriffs auf Hardware-Geräte zur Videoaufnahme.
Die Änderungen im Vergleich zu Branch 0.3 umfassen die standardmäßige Aktivierung der Unterstützung von jackdbus, die die Verwendung von PipeWire als vollwertigen Client des JACK-Audiosystems ermöglicht. Für ALSA wird ein IRQ-basiertes Scheduling im Pro-Audio-Profil verwendet, das Latenzen auf JACK-Niveau erreicht. Die Unterstützung für sowohl die alte als auch die neue Version der webrtc-audio-processing wurde hinzugefügt. In pw-cat wurde die Unterstützung für DFF DSD-Dateien hinzugefügt. Außerdem wurde die Unterstützung für die GNU/Hurd-Plattform ergänzt.
Quelle: opennet.ru
