PipeWire
0.3.85
|
page_overview | PipeWire is a new low-level multimedia framework designed from scratch that aims to provide: |
▼page_pipewire | |
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 | |
▼page_tools | Manual pages: |
pipewire | Manual page for pipewire |
pipewire-pulse | Manual page for pipewire-pulse |
pipewire.conf | Manual page for pipewire.conf |
pw-cat | Manual page for pw-cat |
pw-cli | Manual page for pw-cli |
pw-config | Manual page for pw-config |
pw-dot | Manual page for pw-dot |
pw-link | Manual page for pw-link |
pw-metadata | Manual page for pw-metadata |
pw-mididump | Manual page for pw-mididump |
pw-mon | Manual page for pw-mon |
pw-profiler | Manual page for pw-profiler |
pw-top | Manual page for pw-top |
pw-jack | Manual page for pw-jack |
▼page_pipewire_modules | A PipeWire module is effectively a PipeWire client in an .so file that shares the Context with the loading entity |
PipeWire Module: Access | The access module performs access checks on clients |
PipeWire Module: Adapter | |
PipeWire Module: AVB | |
PipeWire Module: Client Device | |
PipeWire Module: Client Node | |
PipeWire Module: Combine Stream | The combine stream can make: |
PipeWire Module: Echo Cancel | The echo-cancel module performs echo cancellation |
PipeWire Module: Example Filter | The example filter is a good starting point for writing a custom filter |
PipeWire Module: Example Sink | The example sink is a good starting point for writing a custom sink |
PipeWire Module: Example Source | The example source is a good starting point for writing a custom source |
PipeWire Module: Fallback Sink | Fallback sink, which appear dynamically when no other sinks are present |
PipeWire Module: 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 |
PipeWire Module: Filter-Chain | The filter-chain allows you to create an arbitrary processing graph from LADSPA, LV2 and builtin filters |
PipeWire Module: JACK DBus detect | Automaticall creates a sink/source when a jackdbus server is started and connect to JACK |
PipeWire Module: JACK Tunnel | The jack-tunnel module provides a source or sink that tunnels all audio to a JACK server |
PipeWire Module: Link Factory | |
PipeWire Module: Loopback | The loopback module passes the output of a capture stream unmodified to a playback stream |
PipeWire Module: Metadata | |
PipeWire Module: Netjack2 driver | The netjack2-driver module provides a source or sink that is following a netjack2 driver |
PipeWire Module: Netjack2 manager | The netjack2 manager module listens for new netjack2 driver messages and will start a communication channel with them |
PipeWire Module: Unix Pipe Tunnel | The pipe-tunnel module provides a source or sink that tunnels all audio to or from a unix pipe respectively |
PipeWire Module: Portal | The portal module performs access control management for clients started inside an XDG portal |
PipeWire Module: Profiler | The profiler module provides a Profiler interface for applications that can be used to receive profiling information |
PipeWire Module: Protocol Native | The native protocol module implements the PipeWire communication between a client and a server using unix local sockets |
PipeWire Module: Protocol Pulse | This module implements a complete PulseAudio server on top of PipeWire |
PipeWire Module: Protocol Simple | The simple protocol provides a bidirectional audio stream on a network socket |
PipeWire Module: Pulse Tunnel | The pulse-tunnel module provides a source or sink that tunnels all audio to a remote PulseAudio connection |
PipeWire Module: AirPlay Sink | Creates a new Sink to stream to an Airplay device |
PipeWire Module: RAOP Discover | Automatically creates RAOP (Airplay) sink devices based on zeroconf information |
PipeWire Module: ROC sink | The roc-sink module creates a PipeWire sink that sends samples to a preconfigured receiver address |
PipeWire Module: 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 |
PipeWire Module: SAP Announce and create RTP streams | The rtp-sap module announces RTP streams that match the rules with the announce-stream action |
PipeWire Module: RTP sink | The rtp-sink module creates a PipeWire sink that sends audio RTP packets |
PipeWire Module: RTP source | The rtp-source module creates a PipeWire source that receives audio and midi RTP packets |
PipeWire Module: RTP session | The rtp-session module creates a media session that is announced with avahi/mDNS/Bonjour |
PipeWire Module: RT | The rt modules can give real-time priorities to processing threads |
PipeWire Module: Session Manager | This module implements some usefull objects for implementing a session manager |
PipeWire Module: VBAN receiver | The vban-recv module creates a PipeWire source that receives audio and midi VBAN packets |
PipeWire Module: VBAN sender | The vban-send module creates a PipeWire sink that sends audio and midi VBAN packets |
PipeWire Module: X11 Bell | The x11-bell module intercept the X11 bell events and uses libcanberra to play a sound |
PipeWire Module: Zeroconf Discover | Use zeroconf to detect and load module-pulse-tunnel with the right parameters |
▼page_api | The PipeWire API consists of several parts: |
Client Implementation | |
Proxy | |
Streams | |
Thread Loop | |
▼page_spa | 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 |
▼page_tutorial | Welcome to the PipeWire 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 |