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 Version 1.0 rückwärtskompatibel mit dem Branch 0.3. PipeWire wird als Server positioniert, der den Audioserver PulseAudio ersetzt und sich durch die Hinzufügung von Mitteln zur Bearbeitung von Videostreams, die Möglichkeit zur Verarbeitung von Audio mit minimalen Latenzen und ein neues Sicherheitsmodell zur Verwaltung des Zugriffs auf der Ebene einzelner Geräte und Streams unterscheidet. Das Projekt wird in GNOME unterstützt und kommt bereits standardmäßig in Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE und vielen anderen Linux-Distributionen zum Einsatz. Der Code des Projekts ist in C geschrieben und wird unter der LGPLv2.1-Lizenz veröffentlicht.
PipeWire bietet Funktionen zur Verarbeitung beliebiger Multimedia-Streams, kann Streams von Videos mischen und umleiten und kann zur Verwaltung von Videoquellen wie Videoaufnahmegeräten, Webcams oder von Anwendungen ausgegebenem Bildschirminhalt verwendet werden. Beispielsweise ermöglicht PipeWire die Zusammenarbeit mehrerer Anwendungen mit einer Webcam und löst Probleme mit der sicheren Erfassung von Bildschirminhalten und dem Remote-Zugriff 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 von professionellen Audioverarbeitungssystemen, auf die PulseAudio nicht Anspruch erheben konnte. Darüber hinaus bietet PipeWire ein erweitertes Sicherheitsmodell, das den Zugriff auf Geräte- und Stream-Ebene verwaltet und den Umgang mit Audio- und Video-Forwarding aus isolierten Containern vereinfacht. Ein Hauptziel ist die Unterstützung von eigenständigen Anwendungen im Flatpak-Format und die Arbeit im Grafik-Stack basierend auf Wayland.
Hauptfunktionen:
- Erfassung und Wiedergabe von Audio und Video mit minimalen Latenzen;
- Werkzeuge zur Echtzeitverarbeitung von Video und Audio;
- Multithread-Architektur, die eine gemeinsame Nutzung von Inhalten mehrerer Anwendungen ermöglicht;
- Verarbeitung von Multimedia-Knotengrafen mit Unterstützung für Rückkopplungsschleifen und atomare Updates des Grafen. Es ist möglich, Handler sowohl innerhalb des Servers als auch externe Plugins anzuschließen.
- Effiziente Schnittstelle zum Zugriff auf Video-Streams durch die Übertragung von Dateideskriptoren und den Zugriff auf Audio über gemeinsam genutzte Ringpuffer (shared ringbuffer).
- Fähigkeit zur Verarbeitung von Multimedia-Daten aus beliebigen Prozessen.
- Verfügbarkeit eines Plugins für GStreamer zur Vereinfachung der Integration mit bestehenden Anwendungen.
- Unterstützung für isolierte Umgebungen und Flatpak.
- Unterstützung für Plugins im SPA-Format (Simple Plugin API) und die Möglichkeit zur Erstellung von Plugins, die im Echtzeit-Betrieb arbeiten.
- Flexibles System zur Abstimmung der verwendeten Multimedia-Formate und zur Pufferzuweisung.
- Nutzung eines Hintergrundprozesses zur Routen von Audio und Video. Möglichkeit, als Audio-Server, Hub für die Bereitstellung von Videoanwendungen (z.B. für die gnome-shell screencast API) und Server zur Verwaltung des Zugriffs auf Hardwaregeräte zur Videoaufnahme zu arbeiten.
Zu den Änderungen im Vergleich zum Branch 0.3 gehört die standardmäßige Unterstützung von jackdbus, die es ermöglicht, PipeWire als vollwertigen Client des JACK-Audiosystems zu nutzen. Für ALSA wird eine IRQ-basierte Planung im Pro-Audio-Profil verwendet, wodurch Latenzen auf JACK-Niveau erreicht werden. Die Unterstützung für die sowohl alte als auch neue Version von webrtc-audio-processing wurde hinzugefügt. In pw-cat wurde die Unterstützung für DFF DSD-Dateien hinzugefügt. Unterstützung für die GNU/Hurd-Plattform wurde hinzugefügt.
Quelle: opennet.ru
