mirror of
https://gitlab.freedesktop.org/pipewire/pipewire
synced 2024-09-06 16:56:00 +00:00
![Peter Hutterer](/assets/img/avatar_default.png)
Makes it feel slightly more complete, even if the example modules are currently undocumented.
81 lines
2.4 KiB
Plaintext
81 lines
2.4 KiB
Plaintext
/**
|
|
|
|
\page page_pipewire_modules PipeWire Modules
|
|
|
|
A PipeWire module is effectively a PipeWire client in an `.so` file that
|
|
shares the \ref pw_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 }
|
|
...
|
|
]
|
|
```
|
|
And 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 \ref
|
|
PIPEWIRE_SYMBOL_MODULE_INIT.
|
|
|
|
\code
|
|
int pipewire__module_init(struct pw_impl_module *module, const char *args).`
|
|
\endcode
|
|
|
|
See the \ref page_module_example_sink and \ref page_module_example_source
|
|
modules for a general oveview of how modules look like.
|
|
|
|
|
|
List of known modules:
|
|
|
|
- \subpage page_module_access
|
|
- \subpage page_module_adapter
|
|
- \subpage page_module_client_device
|
|
- \subpage page_module_client_node
|
|
- \subpage page_module_echo_cancel
|
|
- \subpage page_module_example_sink
|
|
- \subpage page_module_example_source
|
|
- \subpage page_module_filter_chain
|
|
- \subpage page_module_link_factory
|
|
- \subpage page_module_loopback
|
|
- \subpage page_module_metadata
|
|
- \subpage page_module_portal
|
|
- \subpage page_module_profiler
|
|
- \subpage page_module_protocol_native
|
|
- \subpage page_module_protocol_pulse
|
|
- \subpage page_module_protocol_simple
|
|
- \subpage page_module_pulse_tunnel
|
|
- \subpage page_module_roc_sink
|
|
- \subpage page_module_roc_source
|
|
- \subpage page_module_rt
|
|
- \subpage page_module_rtkit
|
|
- \subpage page_module_session_manager
|
|
- \subpage page_module_zeroconf_discover
|
|
|
|
|
|
*/
|