Fedora developers released recently what for the next version of Fedora 34, a major change is scheduled for all audio streams from PulseAudio and JACK sound servers to PipeWire.
Using PipeWire allows you to offer professional audio processing capabilities In a typical desktop edition, eliminate fragmentation and unify your audio infrastructure for different applications.
Currently, Fedora Workstation uses the PulseAudio background process for audio processing, and applications use the client library to interact with this process, mix and manage audio streams. Professional audio processing uses the JACK sound server and associated client library.
Instead of PulseAudio and JACK it is proposed to use PipeWire media server Next-generation with an interoperability layer that will keep all existing PulseAudio and JACK clients and applications up and running delivered in Flatpak format.
For older customers using the ALSA low level API, an ALSA plugin will be installed that routes audio streams directly to PipeWire. All PulseAudio and JACK based applications will be able to run on PipeWire, without having to install PulseAudio and JACK.
This proposal is to replace the PulseAudio daemon with a functional compatible PipeWire-based implementation. This means that all existing clients using the PulseAudio Client Library will continue to work as before, as well as applications shipped as Flatpak.
All PRO audio is handled by the JACK client library, which talks to the JACK server. This proposal will install a JACK client library replacement that speaks directly to PipeWire. All existing PRO audio jack applications will then work over PipeWire.
As a reminder, PipeWire Expands PulseAudio Capabilities with streaming video, low latency audio processing, and a new security model for transmission and device access control.
Pipe Wire also provides capabilities to control video sources such as video capture devices, webcams or application output screen content. The project is GNOME-compliant and is already widely used in Fedora Linux for screencasting and screen sharing in Wayland-based environments.
Pipe Wire can also act as a low latency sound server with functionality that combines the capabilities of PulseAudio and JACK, even for the needs of professional sound processing systems that PulseAudio couldn't claim.
Also, PipeWire offers an improved security model It enables device-specific and stream-specific access control and facilitates routing of audio and video to and from isolated containers.
- Capture and playback audio and video with minimal lag.
- Real-time video and audio processing tools.
- A multi-threaded architecture that allows content to be shared between multiple applications. The management and processing of multimedia graphics is done in different processes.
- A graphics-based processing model of multimedia nodes with support for feedback loops and atomic graphics updates.
- It is allowed to connect drivers both within the server and external plugins.
- Efficient interface to access video streams by transferring file descriptors and accessing sound through shared buffers.
- The ability to process multimedia data from any process.
- The presence of a plugin for GStreamer to simplify integration with existing applications.
- Support for sandbox and Flatpak environments.
- Support for plugins in SPA (Simple Plugin API) format and the ability to create plugins that work in real time.
- Flexible system for coordinating the multimedia formats used and allocating buffers.
Using a single background process to route audio and video. Ability to work as a sound server, a hub to provide video to applications (for example, for the gnome-shell screencast API), and a server to control access to hardware video capture devices.
Finally change has not yet been reviewed by the Fedora Engineering Steering Committee (FESCo), which is responsible for the technical development of the Fedora distribution.