mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
modules: virtual sink/sources need driver
Virtual sinks and sources implemented with streams need to be grouped with a driver node to be able to schedule. We don't have a way to let it use a default driver so add it to the pipewire.dummy driver. This fixes stalled pipe and other streams streams. Fixes #1407
This commit is contained in:
parent
16faacec92
commit
62fa0823ec
5 changed files with 18 additions and 2 deletions
|
|
@ -296,6 +296,10 @@ 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_VIRTUAL) == NULL)
|
||||
pw_properties_set(capture_props, PW_KEY_NODE_VIRTUAL, "true");
|
||||
pw_properties_set(capture_props, PW_KEY_MEDIA_CLASS, "Audio/Sink");
|
||||
|
||||
module = module_new(impl, &module_pipesink_methods, sizeof(*d));
|
||||
|
|
|
|||
|
|
@ -353,6 +353,10 @@ 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_VIRTUAL) == NULL)
|
||||
pw_properties_set(playback_props, PW_KEY_NODE_VIRTUAL, "true");
|
||||
pw_properties_set(playback_props, PW_KEY_MEDIA_CLASS, "Audio/Source");
|
||||
|
||||
module = module_new(impl, &module_pipesource_methods, sizeof(*d) + stride);
|
||||
|
|
|
|||
|
|
@ -376,7 +376,7 @@ static int create_streams(struct impl *impl, struct client *client)
|
|||
|
||||
if (impl->capture) {
|
||||
props = pw_properties_new(
|
||||
PW_KEY_NODE_GROUP, client->name,
|
||||
PW_KEY_NODE_GROUP, "pipewire.dummy",
|
||||
PW_KEY_NODE_LATENCY, DEFAULT_LATENCY,
|
||||
PW_KEY_NODE_TARGET, pw_properties_get(impl->props, "capture.node"),
|
||||
NULL);
|
||||
|
|
@ -396,7 +396,7 @@ static int create_streams(struct impl *impl, struct client *client)
|
|||
}
|
||||
if (impl->playback) {
|
||||
props = pw_properties_new(
|
||||
PW_KEY_NODE_GROUP, client->name,
|
||||
PW_KEY_NODE_GROUP, "pipewire.dummy",
|
||||
PW_KEY_NODE_LATENCY, DEFAULT_LATENCY,
|
||||
PW_KEY_NODE_TARGET, pw_properties_get(impl->props, "playback.node"),
|
||||
NULL);
|
||||
|
|
|
|||
|
|
@ -415,6 +415,10 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
pw_properties_set(props, "sink.name", NULL);
|
||||
}
|
||||
|
||||
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_VIRTUAL) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
||||
if ((str = pw_properties_get(props, PW_KEY_MEDIA_CLASS)) == NULL)
|
||||
pw_properties_set(props, PW_KEY_MEDIA_CLASS, "Audio/Sink");
|
||||
|
||||
|
|
|
|||
|
|
@ -460,6 +460,10 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
|||
pw_properties_set(props, "source.name", NULL);
|
||||
}
|
||||
|
||||
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_VIRTUAL) == NULL)
|
||||
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
||||
if ((str = pw_properties_get(props, PW_KEY_MEDIA_CLASS)) == NULL)
|
||||
pw_properties_set(props, PW_KEY_MEDIA_CLASS, "Audio/Source");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue