mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	doc: document module-link-factory
This commit is contained in:
		
							parent
							
								
									19d78ef195
								
							
						
					
					
						commit
						5d35986329
					
				
					 2 changed files with 80 additions and 0 deletions
				
			
		| 
						 | 
					@ -200,7 +200,11 @@ context.modules = [
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Makes a factory for creating links between ports.
 | 
					    # Makes a factory for creating links between ports.
 | 
				
			||||||
 | 
					    # use module.link-factory.args = { ... } to override the arguments.
 | 
				
			||||||
    { name = libpipewire-module-link-factory
 | 
					    { name = libpipewire-module-link-factory
 | 
				
			||||||
 | 
					        args = {
 | 
				
			||||||
 | 
					            #allow.link.passive = false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
        condition = [ { module.link-factory = !false } ]
 | 
					        condition = [ { module.link-factory = !false } ]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,10 +15,84 @@
 | 
				
			||||||
#include <pipewire/impl.h>
 | 
					#include <pipewire/impl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** \page page_module_link_factory Link Factory
 | 
					/** \page page_module_link_factory Link Factory
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Allows clients to create links between ports.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This module creates a new factory. Clients that can see the factory
 | 
				
			||||||
 | 
					 * can use the factory name (`link-factory`) to create new link
 | 
				
			||||||
 | 
					 * objects with \ref pw_core_create_object().
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Object of the \ref PW_TYPE_INTERFACE_Link will be created and a proxy
 | 
				
			||||||
 | 
					 * to it will be returned.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * As an argument to the create_object call, a set of properties will
 | 
				
			||||||
 | 
					 * control what ports will be linked.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * ## Module Name
 | 
					 * ## Module Name
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * `libpipewire-module-link-factory`
 | 
					 * `libpipewire-module-link-factory`
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * ## Module Options
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - `allow.link.passive`: if the `link.passive` property is allowed. Default false.
 | 
				
			||||||
 | 
					 *                        By default, the core will decide when a link is passive
 | 
				
			||||||
 | 
					 *                        based on the properties of the node and ports.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * ## Properties for the create_object call
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * `link.output.node`: The output node to use. This can be the node id, node.name,
 | 
				
			||||||
 | 
					 *                     node.nick, node.description or object.path of a node. When the
 | 
				
			||||||
 | 
					 *                     property is not given or NULL, the output port should be
 | 
				
			||||||
 | 
					 *                     specified.
 | 
				
			||||||
 | 
					 * `link.output.port`: The output port to link. This can be a port id, port.name,
 | 
				
			||||||
 | 
					 *                     port.alias or object.path. If an output node is specified, the
 | 
				
			||||||
 | 
					 *                     port must belong to the node. If no output port is given, an
 | 
				
			||||||
 | 
					 *                     output node must be specified and a random (unlinked) port will
 | 
				
			||||||
 | 
					 *                     be used from the node.
 | 
				
			||||||
 | 
					 * `link.input.node`: The input node to use. This can be the node id, node.name,
 | 
				
			||||||
 | 
					 *                     node.nick, node.description or object.path of a node. When the
 | 
				
			||||||
 | 
					 *                     property is not given or NULL, the input port should be
 | 
				
			||||||
 | 
					 *                     specified.
 | 
				
			||||||
 | 
					 * `link.input.port`: The input port to link. This can be a port id, port.name,
 | 
				
			||||||
 | 
					 *                     port.alias or object.path. If an input node is specified, the
 | 
				
			||||||
 | 
					 *                     port must belong to the node. If no input port is given, an
 | 
				
			||||||
 | 
					 *                     input node must be specified and a random (unlinked) port will
 | 
				
			||||||
 | 
					 *                     be used from the node.
 | 
				
			||||||
 | 
					 * `object.linger`: Keep the link around even when the client that created it is gone.
 | 
				
			||||||
 | 
					 * `link.passive`: The link is passive, meaning that it will not keep nodes busy.
 | 
				
			||||||
 | 
					 *                 By default this property is ignored and the node and port properties
 | 
				
			||||||
 | 
					 *                 are used to determine the passive state of the link.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * ## Example configuration
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The module is usually added to the config file of the main pipewire daemon.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *\code{.unparsed}
 | 
				
			||||||
 | 
					 * context.modules = [
 | 
				
			||||||
 | 
					 * { name = libpipewire-link-factory
 | 
				
			||||||
 | 
					 *   args = {
 | 
				
			||||||
 | 
					 *       #allow.link.passive = false
 | 
				
			||||||
 | 
					 *   }
 | 
				
			||||||
 | 
					 * }
 | 
				
			||||||
 | 
					 * ]
 | 
				
			||||||
 | 
					 *\endcode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 * ## Config override
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * A `module.link-factory.args` config section can be added
 | 
				
			||||||
 | 
					 * to override the module arguments.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *\code{.unparsed}
 | 
				
			||||||
 | 
					 * # ~/.config/pipewire/pipewire.conf.d/my-link-factory-args.conf
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * module.link-factory.args = {
 | 
				
			||||||
 | 
					 *     #allow.link.passive = false
 | 
				
			||||||
 | 
					 * }
 | 
				
			||||||
 | 
					 *\endcode
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * ## See also
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - `pw-link`: a tool to manage port links
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NAME "link-factory"
 | 
					#define NAME "link-factory"
 | 
				
			||||||
| 
						 | 
					@ -543,6 +617,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
 | 
				
			||||||
	data->props = args ? pw_properties_new_string(args) : NULL;
 | 
						data->props = args ? pw_properties_new_string(args) : NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (data->props) {
 | 
						if (data->props) {
 | 
				
			||||||
 | 
							pw_context_conf_update_props(context, "module."NAME".args", data->props);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		data->allow_passive = pw_properties_get_bool(data->props,
 | 
							data->allow_passive = pw_properties_get_bool(data->props,
 | 
				
			||||||
				"allow.link.passive", false);
 | 
									"allow.link.passive", false);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue