After seven months of development formed new stable branch of multimedia server PipeWire 1.2.0which replaced the PulseAudio sound server and differs from it by adding tools for working with video streams, the ability to process audio with minimal delays, and a new security model for managing access at the level of individual devices and streams. The project is supported in GNOME and is used by default in Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE, and many other Linux distributions. The project code is written in C and distributed by under the LGPLv2.1 license.
PipeWire is based on a multi-process architecture that enables content sharing across multiple applications. It provides capabilities for handling any media streams, mixing and redirecting video streams, and managing video sources such as video capture devices, webcams, or screen content output by applications. For example, PipeWire enables multiple applications to work together with a webcam and solves the problems of secure screen capture and remote screen access in a Wayland environment.
When used as a sound server, PipeWire can provide low latency and functionality that combines the capabilities of PulseAudio And JACKincluding taking into account the needs of professional audio processing systems, which PulseAudio could not claim. In addition, PipeWire offers an advanced security model that allows you to control access at the level of individual devices and specific streams, and simplifies the organization of audio and video forwarding to and from isolated containers. One of the main goals is to support self-contained applications in the Flatpak format and work in the graphics stack based on Wayland.
IN new version:
- In the model of processing multimedia streams based on node graph Added support for asynchronous processing, where the node graph does not block when there is no output from a particular node, but continues processing using the output received in the previous cycle. Thus, at the cost of a delay of one cycle, it is possible to avoid a situation where one node blocks the work of other nodes in the graph.
- The concept of synchronized node groups (node.sync-group) has been implemented, allowing the creation of groups of nodes that are simultaneously activated by the scheduler. The feature can be used to simultaneously schedule the activation of nodes when starting the JACK transport.
- Improved display of information about errors in the configuration file, added a mention of the place where the error was made in the settings (line number and position in the line).
- Added support for technology Explicit Sync, which allows applications to inform the composite manager based on the Wayland protocol that the frame is ready to be displayed on the screen, which makes it possible to reduce delays and get rid of artifacts when displaying graphics. In particular, Explicit Sync solves problems with output violations and stutters on systems with NVIDIA GPUs and Wayland support enabled.
- Implemented the ability to define mandatory metadata when negotiating buffer parameters that are used to provide “Explicit Sync” support.
- Added support for creating and using multiple data loops in the client and server. Added capabilities to data processing cycles for binding to specific CPU cores and setting priorities.
- It is possible to change debug levels that control the output of information to the log without restarting, using metadata.
- Patches have been accepted to handle devices marked as conflicting via ALSA UCM (Use Case Manager).
- Added snapcast-discover module for streaming content to SnapCast servers.
- The logic for linking peers (nodes in the data flow graph that act as sources or receivers of data) has been reworked.
Thanks for reading: