mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-02 09:01:50 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
/** \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_ffado_driver
 | 
						|
- \subpage page_module_filter_chain
 | 
						|
- \subpage page_module_jackdbus_detect
 | 
						|
- \subpage page_module_jack_tunnel
 | 
						|
- \subpage page_module_link_factory
 | 
						|
- \subpage page_module_loopback
 | 
						|
- \subpage page_module_metadata
 | 
						|
- \subpage page_module_netjack2_driver
 | 
						|
- \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_sap
 | 
						|
- \subpage page_module_rtp_sink
 | 
						|
- \subpage page_module_rtp_source
 | 
						|
- \subpage page_module_rtp_session
 | 
						|
- \subpage page_module_rt
 | 
						|
- \subpage page_module_session_manager
 | 
						|
- \subpage page_module_x11_bell
 | 
						|
- \subpage page_module_zeroconf_discover
 | 
						|
 | 
						|
*/
 |