| 
									
										
										
										
											2021-06-24 14:06:30 +10:00
										 |  |  | /** | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \page page_pipewire_modules PipeWire Modules | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-30 15:05:57 +10:00
										 |  |  | A PipeWire module is effectively a PipeWire client in an `.so` file that | 
					
						
							| 
									
										
										
										
											2021-06-24 14:06:30 +10:00
										 |  |  | shares the \ref pw_context with the loading entity. Usually modules are | 
					
						
							| 
									
										
										
										
											2021-07-30 15:05:57 +10:00
										 |  |  | 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 | 
					
						
							|  |  |  | ... | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2021-06-24 14:06:30 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-30 15:05:57 +10:00
										 |  |  | See the \ref page_module_example_sink and \ref page_module_example_source | 
					
						
							|  |  |  | modules for a general oveview of how modules look like. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-24 14:06:30 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2021-07-05 15:30:59 +10:00
										 |  |  | - \subpage page_module_example_sink | 
					
						
							|  |  |  | - \subpage page_module_example_source | 
					
						
							| 
									
										
										
										
											2021-06-24 14:06:30 +10:00
										 |  |  | - \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 | 
					
						
							| 
									
										
										
										
											2021-11-12 16:39:09 +01:00
										 |  |  | - \subpage page_module_raop_sink | 
					
						
							| 
									
										
										
										
											2021-12-14 10:47:41 +01:00
										 |  |  | - \subpage page_module_raop_discover | 
					
						
							| 
									
										
										
										
											2021-07-05 15:30:59 +10:00
										 |  |  | - \subpage page_module_roc_sink | 
					
						
							|  |  |  | - \subpage page_module_roc_source | 
					
						
							| 
									
										
										
										
											2022-01-15 20:54:15 +01:00
										 |  |  | - \subpage page_module_rt | 
					
						
							| 
									
										
										
										
											2021-06-24 14:06:30 +10:00
										 |  |  | - \subpage page_module_session_manager | 
					
						
							|  |  |  | - \subpage page_module_zeroconf_discover | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | */ |