PipeWire
0.3.43
|
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, explaining what these objects are, how they are meant to be used and how they relate to other kinds of objects and concepts that exist in subsystems or other libraries |
PipeWire Library | There are 2 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 |
PipeWire Daemon | The PipeWire daemon is the central process that manages data exchange between devices and clients |
PipeWire Tools | |
PipeWire Session Manager | The PipeWire Daemon is primarily a framework that allows devices and applications to exchange data |
PulseAudio compatibility | |
▼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: Client Device | |
PipeWire Module: Client Node | |
PipeWire Module: Echo Cancel | The echo-cancel module performs echo cancellation |
PipeWire Module: Example Sink | |
PipeWire Module: Example Source | |
PipeWire Module: Filter-Chain | |
PipeWire Module: Link Factory | |
PipeWire Module: Loopback | |
PipeWire Module: Metadata | |
PipeWire Module: Portal | The portal module performs access control management for clients started inside an XDG portal |
PipeWire Module: Profiler | |
PipeWire Module: Protocol Native | |
PipeWire Module: Protocol Pulse | |
PipeWire Module: Protocol Simple | |
PipeWire Module: Pulse Tunnel | |
PipeWire Module: RAOP Discover | |
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: RT | |
PipeWire Module: RTKit | |
PipeWire Module: Session Manager | |
PipeWire Module: Zeroconf Discover | |
▼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 | |
▼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 |