mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	adapter: support node.channel-names
				
					
				
			Allow customizing channel names for nodes
This commit is contained in:
		
							parent
							
								
									4f458b5d9a
								
							
						
					
					
						commit
						6fb543a514
					
				
					 2 changed files with 21 additions and 1 deletions
				
			
		| 
						 | 
					@ -93,7 +93,7 @@ static void node_port_init(void *data, struct pw_impl_port *port)
 | 
				
			||||||
	const struct pw_properties *old;
 | 
						const struct pw_properties *old;
 | 
				
			||||||
	enum pw_direction direction;
 | 
						enum pw_direction direction;
 | 
				
			||||||
	struct pw_properties *new;
 | 
						struct pw_properties *new;
 | 
				
			||||||
	const char *str, *path, *desc, *nick, *name, *node_name, *media_class;
 | 
						const char *str, *path, *desc, *nick, *name, *node_name, *media_class, *prop_port_names;
 | 
				
			||||||
	char position[8], *prefix;
 | 
						char position[8], *prefix;
 | 
				
			||||||
	bool is_monitor, is_device, is_duplex, is_virtual, is_control = false;
 | 
						bool is_monitor, is_device, is_duplex, is_virtual, is_control = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -178,6 +178,24 @@ static void node_port_init(void *data, struct pw_impl_port *port)
 | 
				
			||||||
		pw_properties_setf(new, PW_KEY_PORT_ALIAS, "%s:%s_%s",
 | 
							pw_properties_setf(new, PW_KEY_PORT_ALIAS, "%s:%s_%s",
 | 
				
			||||||
			node_name, prefix, str);
 | 
								node_name, prefix, str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						prop_port_names = pw_properties_get(n->props, PW_KEY_NODE_CHANNELNAMES);
 | 
				
			||||||
 | 
						if (prop_port_names) {
 | 
				
			||||||
 | 
							struct spa_json it[2];
 | 
				
			||||||
 | 
							char v[256];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							spa_json_init(&it[0], prop_port_names, strlen(prop_port_names));
 | 
				
			||||||
 | 
							if (spa_json_enter_array(&it[0], &it[1]) <= 0)
 | 
				
			||||||
 | 
								spa_json_init(&it[1], prop_port_names, strlen(prop_port_names));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							uint32_t i;
 | 
				
			||||||
 | 
							for (i = 0; i < pw_impl_port_get_id(port) + 1; i++)
 | 
				
			||||||
 | 
								if (spa_json_get_string(&it[1], v, sizeof(v)) <= 0)
 | 
				
			||||||
 | 
									break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (i == pw_impl_port_get_id(port) + 1)
 | 
				
			||||||
 | 
								pw_properties_setf(new, PW_KEY_PORT_NAME, "%s_%s", prefix, v);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pw_impl_port_update_properties(port, &new->dict);
 | 
						pw_impl_port_update_properties(port, &new->dict);
 | 
				
			||||||
	pw_properties_free(new);
 | 
						pw_properties_free(new);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -197,6 +197,8 @@ extern "C" {
 | 
				
			||||||
#define PW_KEY_NODE_TRIGGER		"node.trigger"		/**< the node is not scheduled automatically
 | 
					#define PW_KEY_NODE_TRIGGER		"node.trigger"		/**< the node is not scheduled automatically
 | 
				
			||||||
								  *   based on the dependencies in the graph
 | 
													  *   based on the dependencies in the graph
 | 
				
			||||||
								  *   but it will be triggered explicitly. */
 | 
													  *   but it will be triggered explicitly. */
 | 
				
			||||||
 | 
					#define PW_KEY_NODE_CHANNELNAMES		"node.channel-names"		/**< names of node's
 | 
				
			||||||
 | 
														*   channels (unrelated to positions) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Port keys */
 | 
					/** Port keys */
 | 
				
			||||||
#define PW_KEY_PORT_ID			"port.id"		/**< port id */
 | 
					#define PW_KEY_PORT_ID			"port.id"		/**< port id */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue