mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -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