diff options
Diffstat (limited to 'doc/pipewire-modules.dox')
-rw-r--r-- | doc/pipewire-modules.dox | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/doc/pipewire-modules.dox b/doc/pipewire-modules.dox new file mode 100644 index 0000000..322d258 --- /dev/null +++ b/doc/pipewire-modules.dox @@ -0,0 +1,84 @@ +/** \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 } + ... +] +``` +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_avb +- \subpage page_module_client_device +- \subpage page_module_client_node +- \subpage page_module_combine_stream +- \subpage page_module_echo_cancel +- \subpage page_module_example_sink +- \subpage page_module_example_source +- \subpage page_module_fallback_sink +- \subpage page_module_filter_chain +- \subpage page_module_link_factory +- \subpage page_module_loopback +- \subpage page_module_metadata +- \subpage page_module_pipe_tunnel +- \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_raop_sink +- \subpage page_module_raop_discover +- \subpage page_module_roc_sink +- \subpage page_module_roc_source +- \subpage page_module_rtp_sink +- \subpage page_module_rtp_source +- \subpage page_module_rt +- \subpage page_module_session_manager +- \subpage page_module_x11_bell +- \subpage page_module_zeroconf_discover + +*/ |