PipeWire: Modules

PipeWire 1.6.5

Loading...
Searching...
No Matches
Modules

A PipeWire module is effectively a PipeWire client in an .so file that shares the Context with the loading entity.

Usually modules are loaded when they are listed in the configuration files. For example the default configuration file loads several modules:

context.modules = [
...
# The native communication protocol.
{ name = libpipewire-module-protocol-native }
# The profile module. Allows application to access profiler
# and performance data. It provides an interface that is used
# by pw-top and pw-profiler.
{ name = libpipewire-module-profiler }
# Allows applications to create metadata objects. It creates
# a factory for Metadata objects.
{ name = libpipewire-module-metadata }
# Creates a factory for making devices that run in the
# context of the PipeWire server.
{ name = libpipewire-module-spa-device-factory }
...
]

The matching libraries are:

$ ls -1 /usr/lib64/pipewire-0.3/libpipewire-module*
...
/usr/lib64/pipewire-0.3/libpipewire-module-metadata.so
/usr/lib64/pipewire-0.3/libpipewire-module-profiler.so
/usr/lib64/pipewire-0.3/libpipewire-module-protocol-native.so
/usr/lib64/pipewire-0.3/libpipewire-module-spa-device-factory.so
...

A module's entry point is the pipewire__module_init function, see PIPEWIRE_SYMBOL_MODULE_INIT.

int pipewire__module_init(struct pw_impl_module *module, const char *args).`
args
uint32_t int int const char va_list args
Definition core.h:434
pw_impl_module

See the Example Sink and Example Source modules for a general oveview of how modules look like.

List of known modules:

- Access
- Adapter
- AVB
- Client Device
- Client Node
- Combine Stream
- Echo Cancel
- Example Filter
- Example Sink
- Example Source
- Fallback Sink
- FFADO firewire audio driver
- Filter-Chain
- JACK DBus detect
- JACK Tunnel
- Link Factory
- Loopback
- Metadata
- Netjack2 driver
- Netjack2 manager
- Parametric-Equalizer
- Unix Pipe Tunnel
- Portal
- Profiler
- Protocol Native
- Protocol Pulse
- Protocol Simple
- Pulse Tunnel
- AirPlay Sink
- RAOP Discover
- ROC sink
- ROC source
- SAP Announce and create RTP streams
- RTP sink
- RTP source
- RTP session
- RT
- SPA Node
- SPA Node factory
- SPA Device
- SPA Device factory
- Session Manager
- Snapcast Discover
- VBAN receiver
- VBAN sender
- X11 Bell
- Zeroconf Discover