PipeWire 1.1.0
|
Overview | PipeWire is a new low-level multimedia framework designed from scratch that aims to provide: |
►Programs | |
pipewire | |
pipewire.conf | |
pipewire-pulse | |
pipewire-pulse.conf | |
pipewire-pulse-modules | |
pw-cat | |
pw-cli | |
pw-config | |
pw-dot | |
pw-dump | |
pw-jack | |
pw-link | |
pw-loopback | |
pw-metadata | |
pw-mididump | |
pw-mon | |
pw-profiler | |
pw-reserve | |
pw-top | |
pw-v4l2 | |
spa-acp-tool | |
spa-inspect | |
spa-json-dump | |
spa-monitor | |
spa-resample | |
libpipewire-modules | |
►Modules | A PipeWire module is effectively a PipeWire client in an .so file that shares the Context with the loading entity |
Access | The access module performs access checks on clients |
Adapter | |
AVB | |
Client Device | |
Client Node | |
Combine Stream | The combine stream can make: |
Echo Cancel | The echo-cancel module performs echo cancellation |
Example Filter | The example filter is a good starting point for writing a custom filter |
Example Sink | The example sink is a good starting point for writing a custom sink |
Example Source | The example source is a good starting point for writing a custom source |
Fallback Sink | Fallback sink, which appear dynamically when no other sinks are present |
FFADO firewire audio driver | The ffado-driver module provides a source or sink using the libffado library for reading and writing to firewire audio devices |
Filter-Chain | The filter-chain allows you to create an arbitrary processing graph from LADSPA, LV2 and builtin filters |
JACK DBus detect | Automaticall creates a sink/source when a jackdbus server is started and connect to JACK |
JACK Tunnel | The jack-tunnel module provides a source or sink that tunnels all audio to a JACK server |
Link Factory | |
Loopback | The loopback module passes the output of a capture stream unmodified to a playback stream |
Metadata | |
Netjack2 driver | The netjack2-driver module provides a source or sink that is following a netjack2 manager |
Netjack2 manager | The netjack2 manager module listens for new netjack2 driver messages and will start a communication channel with them |
Unix Pipe Tunnel | The pipe-tunnel module provides a source or sink that tunnels all audio to or from a unix pipe respectively |
Portal | The portal module performs access control management for clients started inside an XDG portal |
Profiler | The profiler module provides a Profiler interface for applications that can be used to receive profiling information |
Protocol Native | The native protocol module implements the PipeWire communication between a client and a server using unix local sockets |
Protocol Pulse | This module implements a complete PulseAudio server on top of PipeWire |
Protocol Simple | The simple protocol provides a bidirectional audio stream on a network socket |
Pulse Tunnel | The pulse-tunnel module provides a source or sink that tunnels all audio to a remote PulseAudio connection |
AirPlay Sink | Creates a new Sink to stream to an Airplay device |
RAOP Discover | Automatically creates RAOP (Airplay) sink devices based on zeroconf information |
ROC sink | The roc-sink module creates a PipeWire sink that sends samples to a preconfigured receiver address |
ROC source | The roc-source module creates a PipeWire source that receives samples from ROC sender and passes them to the sink it is connected to |
SAP Announce and create RTP streams | The rtp-sap module announces RTP streams that match the rules with the announce-stream action |
RTP sink | The rtp-sink module creates a PipeWire sink that sends audio RTP packets |
RTP source | The rtp-source module creates a PipeWire source that receives audio and midi RTP packets |
RTP session | The rtp-session module creates a media session that is announced with avahi/mDNS/Bonjour |
RT | The rt modules can give real-time priorities to processing threads |
Session Manager | This module implements some usefull objects for implementing a session manager |
VBAN receiver | The vban-recv module creates a PipeWire source that receives audio and midi VBAN packets |
VBAN sender | The vban-send module creates a PipeWire sink that sends audio and midi VBAN packets |
X11 Bell | The x11-bell module intercept the X11 bell events and uses libcanberra to play a sound |
Zeroconf Discover | Use zeroconf to detect and load module-pulse-tunnel with the right parameters |
►Pulseaudio Modules | |
ALSA Sink | |
ALSA Source | |
Always Sink | |
Combine Sink | |
Echo Cancel | |
GSettings | |
JackDBus Detect | |
LADSPA Sink | |
LADSPA Source | |
Loopback | |
Pulseaudio TCP Protocol | |
Null Sink | |
Pipe Sink | |
Pipe Source | |
RAOP Discover | |
Remap Sink | |
Remap Source | |
ROC Sink | |
ROC Sink Input | |
ROC Source | |
RTP Receiver | |
RTP Sender | |
Simple TCP Protocol | |
Switch on Connect | |
Tunnel Sink | |
Tunnel Source | |
Virtual Sink | |
Virtual Source | |
X11 Bell | |
Zeroconf Discover | |
Zeroconf Publish | |
►Internals | |
Design | A short overview of PipeWire's design |
Audio | This document explains how Audio is implemented |
Access Control | This document explains how access control is designed and implemented |
Portal Access Control | This document explains how clients from the portal are handled |
MIDI Support | This document explains how MIDI is implemented |
Objects Design | This document is a design reference on the various objects that exist in the PipeWire media and session management graphs |
PipeWire Library | There are two main components that make up the PipeWire library: |
DMA-BUF Sharing | PipeWire supports sharing Direct Memory Access buffers (DMA-BUFs) between clients via the SPA_DATA_DmaBuf data type |
Graph Scheduling | This document tries to explain how the PipeWire graph is scheduled |
►Native Protocol | PipeWire has a pluggable client/server IPC protocol |
PipeWire Daemon | The PipeWire daemon is the central process that manages data exchange between devices and clients |
PipeWire Session Manager | The PipeWire Daemon is primarily a framework that allows devices and applications to exchange data |
PulseAudio Compatibility | |
►PipeWire API | The PipeWire API consists of several parts: |
►SPA (Simple Plugin API) | SPA (Simple Plugin API) is an extensible API to implement all kinds of plugins |
SPA Design | |
SPA Plugins | SPA plugins are dynamically loadable objects that contain objects and interfaces that can be introspected and used at runtime in any application |
SPA POD | POD (plain old data) is a sort of data container |
SPA Buffers |
A SPA Buffer contains metadata and data |
►Client Implementation | |
►Proxy | |
►Streams | |
►Thread Loop | |
►Tutorial | Welcome to the PipeWire API tutorial |
Tutorial - Part 1: Getting Started | Index | Tutorial - Part 2: Enumerating Objects |
Tutorial - Part 2: Enumerating Objects | Tutorial - Part 1: Getting Started | Index | Tutorial - Part 3: Forcing A Roundtrip |
Tutorial - Part 3: Forcing A Roundtrip | Tutorial - Part 2: Enumerating Objects | Index | Tutorial - Part 4: Playing A Tone |
Tutorial - Part 4: Playing A Tone | Tutorial - Part 3: Forcing A Roundtrip | Index | Tutorial - Part 5: Capturing Video Frames |
Tutorial - Part 5: Capturing Video Frames | Tutorial - Part 4: Playing A Tone | Index | Tutorial - Part 6: Binding Objects |
Tutorial - Part 6: Binding Objects | Tutorial - Part 5: Capturing Video Frames | Index |
List of example programs |