mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
modules: use NODE_WANT_DRIVER=true instead of NODE_GROUP
For the modules that require a driver, don't add ourselves to the pipewire.dummy group but instead just use the NODE_WANT_DRIVER property to be assigned to a driver. This makes it possible for the nodes to move to another driver than the dummy driver (which has very high priority) and it avoids resampling in cases where the nodes are linked to an audio source or sink.
This commit is contained in:
parent
01b4c4fa64
commit
4ae94a6ca6
9 changed files with 22 additions and 18 deletions
|
|
@ -400,8 +400,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
impl->context = context;
|
||||
impl->work = pw_context_get_work_queue(context);
|
||||
|
||||
if (pw_properties_get(props, PW_KEY_NODE_GROUP) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_GROUP, "pipewire.dummy");
|
||||
if (pw_properties_get(props, PW_KEY_NODE_WANT_DRIVER) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_WANT_DRIVER, "true");
|
||||
if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
||||
|
||||
|
|
@ -423,6 +423,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
copy_props(impl, props, PW_KEY_NODE_NAME);
|
||||
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
||||
copy_props(impl, props, PW_KEY_NODE_GROUP);
|
||||
copy_props(impl, props, PW_KEY_NODE_WANT_DRIVER);
|
||||
copy_props(impl, props, PW_KEY_NODE_LATENCY);
|
||||
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
||||
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
||||
|
|
|
|||
|
|
@ -406,8 +406,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
impl->context = context;
|
||||
impl->work = pw_context_get_work_queue(context);
|
||||
|
||||
if (pw_properties_get(props, PW_KEY_NODE_GROUP) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_GROUP, "pipewire.dummy");
|
||||
if (pw_properties_get(props, PW_KEY_NODE_WANT_DRIVER) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_WANT_DRIVER, "true");
|
||||
if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
||||
|
||||
|
|
@ -429,6 +429,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
copy_props(impl, props, PW_KEY_NODE_NAME);
|
||||
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
||||
copy_props(impl, props, PW_KEY_NODE_GROUP);
|
||||
copy_props(impl, props, PW_KEY_NODE_WANT_DRIVER);
|
||||
copy_props(impl, props, PW_KEY_NODE_LATENCY);
|
||||
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
||||
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
||||
|
|
|
|||
|
|
@ -305,8 +305,8 @@ struct module *create_module_pipe_sink(struct impl *impl, const char *argument)
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (pw_properties_get(capture_props, PW_KEY_NODE_GROUP) == NULL)
|
||||
pw_properties_set(capture_props, PW_KEY_NODE_GROUP, "pipewire.dummy");
|
||||
if (pw_properties_get(capture_props, PW_KEY_NODE_WANT_DRIVER) == NULL)
|
||||
pw_properties_set(capture_props, PW_KEY_NODE_WANT_DRIVER, "true");
|
||||
if (pw_properties_get(capture_props, PW_KEY_NODE_VIRTUAL) == NULL)
|
||||
pw_properties_set(capture_props, PW_KEY_NODE_VIRTUAL, "true");
|
||||
pw_properties_set(capture_props, PW_KEY_MEDIA_CLASS, "Audio/Sink");
|
||||
|
|
|
|||
|
|
@ -364,8 +364,8 @@ struct module *create_module_pipe_source(struct impl *impl, const char *argument
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (pw_properties_get(playback_props, PW_KEY_NODE_GROUP) == NULL)
|
||||
pw_properties_set(playback_props, PW_KEY_NODE_GROUP, "pipewire.dummy");
|
||||
if (pw_properties_get(playback_props, PW_KEY_NODE_WANT_DRIVER) == NULL)
|
||||
pw_properties_set(playback_props, PW_KEY_NODE_WANT_DRIVER, "true");
|
||||
if (pw_properties_get(playback_props, PW_KEY_NODE_VIRTUAL) == NULL)
|
||||
pw_properties_set(playback_props, PW_KEY_NODE_VIRTUAL, "true");
|
||||
pw_properties_set(playback_props, PW_KEY_MEDIA_CLASS, "Audio/Source");
|
||||
|
|
|
|||
|
|
@ -378,7 +378,7 @@ static int create_streams(struct impl *impl, struct client *client)
|
|||
|
||||
if (impl->capture) {
|
||||
props = pw_properties_new(
|
||||
PW_KEY_NODE_GROUP, "pipewire.dummy",
|
||||
PW_KEY_NODE_WANT_DRIVER, "true",
|
||||
PW_KEY_NODE_LATENCY, latency,
|
||||
PW_KEY_NODE_RATE, pw_properties_get(impl->props, PW_KEY_NODE_RATE),
|
||||
PW_KEY_NODE_TARGET, pw_properties_get(impl->props, "capture.node"),
|
||||
|
|
@ -402,7 +402,7 @@ static int create_streams(struct impl *impl, struct client *client)
|
|||
}
|
||||
if (impl->playback) {
|
||||
props = pw_properties_new(
|
||||
PW_KEY_NODE_GROUP, "pipewire.dummy",
|
||||
PW_KEY_NODE_WANT_DRIVER, "true",
|
||||
PW_KEY_NODE_LATENCY, latency,
|
||||
PW_KEY_NODE_RATE, pw_properties_get(impl->props, PW_KEY_NODE_RATE),
|
||||
PW_KEY_NODE_TARGET, pw_properties_get(impl->props, "playback.node"),
|
||||
|
|
|
|||
|
|
@ -779,8 +779,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
|
||||
impl->latency_msec = pw_properties_get_uint32(props, "pulse.latency", DEFAULT_LATENCY_MSEC);
|
||||
|
||||
if (pw_properties_get(props, PW_KEY_NODE_GROUP) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_GROUP, "pipewire.dummy");
|
||||
if (pw_properties_get(props, PW_KEY_NODE_WANT_DRIVER) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_WANT_DRIVER, "true");
|
||||
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)
|
||||
|
|
@ -801,6 +801,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
copy_props(impl, props, PW_KEY_NODE_NAME);
|
||||
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
||||
copy_props(impl, props, PW_KEY_NODE_GROUP);
|
||||
copy_props(impl, props, PW_KEY_NODE_WANT_DRIVER);
|
||||
copy_props(impl, props, PW_KEY_NODE_LATENCY);
|
||||
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
||||
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
||||
|
|
|
|||
|
|
@ -1578,8 +1578,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
impl->context = context;
|
||||
impl->loop = pw_context_get_main_loop(context);
|
||||
|
||||
if (pw_properties_get(props, PW_KEY_NODE_GROUP) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_GROUP, "pipewire.dummy");
|
||||
if (pw_properties_get(props, PW_KEY_NODE_WANT_DRIVER) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_WANT_DRIVER, "true");
|
||||
if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
||||
|
||||
|
|
@ -1604,6 +1604,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
copy_props(impl, props, PW_KEY_NODE_NAME);
|
||||
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
||||
copy_props(impl, props, PW_KEY_NODE_GROUP);
|
||||
copy_props(impl, props, PW_KEY_NODE_WANT_DRIVER);
|
||||
copy_props(impl, props, PW_KEY_NODE_LATENCY);
|
||||
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
||||
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
||||
|
|
|
|||
|
|
@ -410,8 +410,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
pw_properties_set(capture_props, PW_KEY_NODE_NAME, "roc-sink");
|
||||
if (pw_properties_get(capture_props, PW_KEY_NODE_DESCRIPTION) == NULL)
|
||||
pw_properties_set(capture_props, PW_KEY_NODE_DESCRIPTION, "ROC Sink");
|
||||
if (pw_properties_get(capture_props, PW_KEY_NODE_GROUP) == NULL)
|
||||
pw_properties_set(capture_props, PW_KEY_NODE_GROUP, "pipewire.dummy");
|
||||
if (pw_properties_get(capture_props, PW_KEY_NODE_WANT_DRIVER) == NULL)
|
||||
pw_properties_set(capture_props, PW_KEY_NODE_WANT_DRIVER, "true");
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -455,8 +455,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
pw_properties_set(playback_props, PW_KEY_NODE_NAME, "roc-source");
|
||||
if (pw_properties_get(playback_props, PW_KEY_NODE_DESCRIPTION) == NULL)
|
||||
pw_properties_set(playback_props, PW_KEY_NODE_DESCRIPTION, "ROC Source");
|
||||
if (pw_properties_get(playback_props, PW_KEY_NODE_GROUP) == NULL)
|
||||
pw_properties_set(playback_props, PW_KEY_NODE_GROUP, "pipewire.dummy");
|
||||
if (pw_properties_get(playback_props, PW_KEY_NODE_WANT_DRIVER) == NULL)
|
||||
pw_properties_set(playback_props, PW_KEY_NODE_WANT_DRIVER, "true");
|
||||
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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue