|
PipeWire 0.3.85
|
| Overview | PipeWire is a new low-level multimedia framework designed from scratch that aims to provide: |
| ▼PipeWire Design | |
| 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 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 |
| ▼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 |
| ▼PipeWire API | The PipeWire API consists of several parts: |
| Client Implementation | |
| Proxy | |
| Streams | |
| Thread Loop | |
| ▼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 |
| ▼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 |