From 8c346ab3a7cb3c609a03f19f419feef4c1ebbaa7 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 14 Oct 2021 13:45:58 +0200 Subject: [PATCH] pulse-server: list NETWORK flag on devices Mark network sinks and sources with node.network. --- src/modules/module-protocol-pulse/pulse-server.c | 4 ++++ src/modules/module-protocol-simple.c | 2 ++ src/modules/module-pulse-tunnel.c | 2 ++ src/modules/module-roc-sink.c | 2 ++ src/modules/module-roc-source.c | 2 ++ src/pipewire/keys.h | 1 + 6 files changed, 13 insertions(+) diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c index 085b73173..9e6f83253 100644 --- a/src/modules/module-protocol-pulse/pulse-server.c +++ b/src/modules/module-protocol-pulse/pulse-server.c @@ -3493,6 +3493,8 @@ static int fill_sink_info(struct client *client, struct message *m, flags = SINK_LATENCY | SINK_DYNAMIC_LATENCY | SINK_DECIBEL_VOLUME; if ((str = spa_dict_lookup(info->props, PW_KEY_DEVICE_API)) != NULL) flags |= SINK_HARDWARE; + if ((str = spa_dict_lookup(info->props, PW_KEY_NODE_NETWORK)) != NULL) + flags |= SINK_NETWORK; if (SPA_FLAG_IS_SET(dev_info.volume_info.flags, VOLUME_HW_VOLUME)) flags |= SINK_HW_VOLUME_CTRL; if (SPA_FLAG_IS_SET(dev_info.volume_info.flags, VOLUME_HW_MUTE)) @@ -3675,6 +3677,8 @@ static int fill_source_info(struct client *client, struct message *m, flags = SOURCE_LATENCY | SOURCE_DYNAMIC_LATENCY | SOURCE_DECIBEL_VOLUME; if ((str = spa_dict_lookup(info->props, PW_KEY_DEVICE_API)) != NULL) flags |= SOURCE_HARDWARE; + if ((str = spa_dict_lookup(info->props, PW_KEY_NODE_NETWORK)) != NULL) + flags |= SOURCE_NETWORK; if (SPA_FLAG_IS_SET(dev_info.volume_info.flags, VOLUME_HW_VOLUME)) flags |= SOURCE_HW_VOLUME_CTRL; if (SPA_FLAG_IS_SET(dev_info.volume_info.flags, VOLUME_HW_MUTE)) diff --git a/src/modules/module-protocol-simple.c b/src/modules/module-protocol-simple.c index f8aed39e1..a3cefd0e6 100644 --- a/src/modules/module-protocol-simple.c +++ b/src/modules/module-protocol-simple.c @@ -388,6 +388,7 @@ static int create_streams(struct impl *impl, struct client *client) PW_KEY_NODE_GROUP, "pipewire.dummy", PW_KEY_NODE_LATENCY, DEFAULT_LATENCY, PW_KEY_NODE_TARGET, pw_properties_get(impl->props, "capture.node"), + PW_KEY_NODE_NETWORK, "true", NULL); if (props == NULL) return -errno; @@ -408,6 +409,7 @@ static int create_streams(struct impl *impl, struct client *client) PW_KEY_NODE_GROUP, "pipewire.dummy", PW_KEY_NODE_LATENCY, DEFAULT_LATENCY, PW_KEY_NODE_TARGET, pw_properties_get(impl->props, "playback.node"), + PW_KEY_NODE_NETWORK, "true", NULL); if (props == NULL) return -errno; diff --git a/src/modules/module-pulse-tunnel.c b/src/modules/module-pulse-tunnel.c index ad165dfab..8e3035aef 100644 --- a/src/modules/module-pulse-tunnel.c +++ b/src/modules/module-pulse-tunnel.c @@ -807,6 +807,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) pw_properties_set(props, PW_KEY_NODE_GROUP, "pipewire.dummy"); if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL) pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true"); + if (pw_properties_get(props, PW_KEY_NODE_NETWORK) == NULL) + pw_properties_set(props, PW_KEY_NODE_NETWORK, "true"); if (pw_properties_get(props, PW_KEY_MEDIA_CLASS) == NULL) pw_properties_set(props, PW_KEY_MEDIA_CLASS, diff --git a/src/modules/module-roc-sink.c b/src/modules/module-roc-sink.c index 5d664145c..30bf4f7d0 100644 --- a/src/modules/module-roc-sink.c +++ b/src/modules/module-roc-sink.c @@ -439,6 +439,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) pw_properties_set(capture_props, PW_KEY_NODE_GROUP, "pipewire.dummy"); if (pw_properties_get(capture_props, PW_KEY_NODE_VIRTUAL) == NULL) pw_properties_set(capture_props, PW_KEY_NODE_VIRTUAL, "true"); + if (pw_properties_get(capture_props, PW_KEY_NODE_NETWORK) == NULL) + pw_properties_set(capture_props, PW_KEY_NODE_NETWORK, "true"); if (pw_properties_get(capture_props, PW_KEY_NODE_PASSIVE) == NULL) pw_properties_set(capture_props, PW_KEY_NODE_PASSIVE, "true"); if ((str = pw_properties_get(capture_props, PW_KEY_MEDIA_CLASS)) == NULL) diff --git a/src/modules/module-roc-source.c b/src/modules/module-roc-source.c index ed79f733b..a220d9160 100644 --- a/src/modules/module-roc-source.c +++ b/src/modules/module-roc-source.c @@ -484,6 +484,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) pw_properties_set(playback_props, PW_KEY_NODE_GROUP, "pipewire.dummy"); if (pw_properties_get(playback_props, PW_KEY_NODE_VIRTUAL) == NULL) pw_properties_set(playback_props, PW_KEY_NODE_VIRTUAL, "true"); + if (pw_properties_get(playback_props, PW_KEY_NODE_NETWORK) == NULL) + pw_properties_set(playback_props, PW_KEY_NODE_NETWORK, "true"); if (pw_properties_get(playback_props, PW_KEY_NODE_PASSIVE) == NULL) pw_properties_set(playback_props, PW_KEY_NODE_PASSIVE, "true"); if ((str = pw_properties_get(playback_props, PW_KEY_MEDIA_CLASS)) == NULL) diff --git a/src/pipewire/keys.h b/src/pipewire/keys.h index d541b9b3f..24cbf4e55 100644 --- a/src/pipewire/keys.h +++ b/src/pipewire/keys.h @@ -178,6 +178,7 @@ extern "C" { * "out"/"in"/"true" respectively */ #define PW_KEY_NODE_LINK_GROUP "node.link-group" /**< the node is internally linked to * nodes with the same link-group */ +#define PW_KEY_NODE_NETWORK "node.network" /**< the node is on a network */ /** Port keys */ #define PW_KEY_PORT_ID "port.id" /**< port id */