mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
make NODE_WANT_DRIVER=true the default
So that all nodes attach to some driver to be scheduled. For the virtual sink/sources this is a normal thing and we can remove the custom settings. For normal stream, this now makes it possible to link pw-play directly to pw-record and have it transport data. Fixes #1761
This commit is contained in:
parent
9a5fbd26df
commit
d1207422e0
11 changed files with 9 additions and 22 deletions
|
|
@ -401,8 +401,6 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
impl->context = context;
|
impl->context = context;
|
||||||
impl->work = pw_context_get_work_queue(context);
|
impl->work = pw_context_get_work_queue(context);
|
||||||
|
|
||||||
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)
|
if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL)
|
||||||
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
||||||
|
|
||||||
|
|
@ -424,7 +422,6 @@ 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_NAME);
|
||||||
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
||||||
copy_props(impl, props, PW_KEY_NODE_GROUP);
|
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_LATENCY);
|
||||||
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
||||||
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
||||||
|
|
|
||||||
|
|
@ -407,8 +407,6 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
impl->context = context;
|
impl->context = context;
|
||||||
impl->work = pw_context_get_work_queue(context);
|
impl->work = pw_context_get_work_queue(context);
|
||||||
|
|
||||||
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)
|
if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL)
|
||||||
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
||||||
|
|
||||||
|
|
@ -430,7 +428,6 @@ 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_NAME);
|
||||||
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
||||||
copy_props(impl, props, PW_KEY_NODE_GROUP);
|
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_LATENCY);
|
||||||
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
||||||
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
||||||
|
|
|
||||||
|
|
@ -298,8 +298,6 @@ struct module *create_module_pipe_sink(struct impl *impl, const char *argument)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
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_NODE_VIRTUAL, "true");
|
||||||
pw_properties_set(capture_props, PW_KEY_MEDIA_CLASS, "Audio/Sink");
|
pw_properties_set(capture_props, PW_KEY_MEDIA_CLASS, "Audio/Sink");
|
||||||
|
|
|
||||||
|
|
@ -357,8 +357,6 @@ struct module *create_module_pipe_source(struct impl *impl, const char *argument
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
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_NODE_VIRTUAL, "true");
|
||||||
pw_properties_set(playback_props, PW_KEY_MEDIA_CLASS, "Audio/Source");
|
pw_properties_set(playback_props, PW_KEY_MEDIA_CLASS, "Audio/Source");
|
||||||
|
|
|
||||||
|
|
@ -378,7 +378,6 @@ static int create_streams(struct impl *impl, struct client *client)
|
||||||
|
|
||||||
if (impl->capture) {
|
if (impl->capture) {
|
||||||
props = pw_properties_new(
|
props = pw_properties_new(
|
||||||
PW_KEY_NODE_WANT_DRIVER, "true",
|
|
||||||
PW_KEY_NODE_LATENCY, latency,
|
PW_KEY_NODE_LATENCY, latency,
|
||||||
PW_KEY_NODE_RATE, pw_properties_get(impl->props, PW_KEY_NODE_RATE),
|
PW_KEY_NODE_RATE, pw_properties_get(impl->props, PW_KEY_NODE_RATE),
|
||||||
PW_KEY_NODE_TARGET, pw_properties_get(impl->props, "capture.node"),
|
PW_KEY_NODE_TARGET, pw_properties_get(impl->props, "capture.node"),
|
||||||
|
|
@ -402,7 +401,6 @@ static int create_streams(struct impl *impl, struct client *client)
|
||||||
}
|
}
|
||||||
if (impl->playback) {
|
if (impl->playback) {
|
||||||
props = pw_properties_new(
|
props = pw_properties_new(
|
||||||
PW_KEY_NODE_WANT_DRIVER, "true",
|
|
||||||
PW_KEY_NODE_LATENCY, latency,
|
PW_KEY_NODE_LATENCY, latency,
|
||||||
PW_KEY_NODE_RATE, pw_properties_get(impl->props, PW_KEY_NODE_RATE),
|
PW_KEY_NODE_RATE, pw_properties_get(impl->props, PW_KEY_NODE_RATE),
|
||||||
PW_KEY_NODE_TARGET, pw_properties_get(impl->props, "playback.node"),
|
PW_KEY_NODE_TARGET, pw_properties_get(impl->props, "playback.node"),
|
||||||
|
|
|
||||||
|
|
@ -889,8 +889,6 @@ 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);
|
impl->latency_msec = pw_properties_get_uint32(props, "pulse.latency", DEFAULT_LATENCY_MSEC);
|
||||||
|
|
||||||
|
|
||||||
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)
|
if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL)
|
||||||
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
||||||
if (pw_properties_get(props, PW_KEY_NODE_NETWORK) == NULL)
|
if (pw_properties_get(props, PW_KEY_NODE_NETWORK) == NULL)
|
||||||
|
|
@ -911,7 +909,6 @@ 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_NAME);
|
||||||
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
||||||
copy_props(impl, props, PW_KEY_NODE_GROUP);
|
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_LATENCY);
|
||||||
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
||||||
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
||||||
|
|
|
||||||
|
|
@ -1579,8 +1579,6 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
impl->context = context;
|
impl->context = context;
|
||||||
impl->loop = pw_context_get_main_loop(context);
|
impl->loop = pw_context_get_main_loop(context);
|
||||||
|
|
||||||
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)
|
if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL)
|
||||||
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
|
||||||
|
|
||||||
|
|
@ -1605,7 +1603,6 @@ 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_NAME);
|
||||||
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
copy_props(impl, props, PW_KEY_NODE_DESCRIPTION);
|
||||||
copy_props(impl, props, PW_KEY_NODE_GROUP);
|
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_LATENCY);
|
||||||
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
copy_props(impl, props, PW_KEY_NODE_VIRTUAL);
|
||||||
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
copy_props(impl, props, PW_KEY_MEDIA_CLASS);
|
||||||
|
|
|
||||||
|
|
@ -410,8 +410,6 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
pw_properties_set(capture_props, PW_KEY_NODE_NAME, "roc-sink");
|
pw_properties_set(capture_props, PW_KEY_NODE_NAME, "roc-sink");
|
||||||
if (pw_properties_get(capture_props, PW_KEY_NODE_DESCRIPTION) == NULL)
|
if (pw_properties_get(capture_props, PW_KEY_NODE_DESCRIPTION) == NULL)
|
||||||
pw_properties_set(capture_props, PW_KEY_NODE_DESCRIPTION, "ROC Sink");
|
pw_properties_set(capture_props, PW_KEY_NODE_DESCRIPTION, "ROC Sink");
|
||||||
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)
|
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_NODE_VIRTUAL, "true");
|
||||||
if (pw_properties_get(capture_props, PW_KEY_NODE_NETWORK) == NULL)
|
if (pw_properties_get(capture_props, PW_KEY_NODE_NETWORK) == NULL)
|
||||||
|
|
|
||||||
|
|
@ -455,8 +455,6 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
pw_properties_set(playback_props, PW_KEY_NODE_NAME, "roc-source");
|
pw_properties_set(playback_props, PW_KEY_NODE_NAME, "roc-source");
|
||||||
if (pw_properties_get(playback_props, PW_KEY_NODE_DESCRIPTION) == NULL)
|
if (pw_properties_get(playback_props, PW_KEY_NODE_DESCRIPTION) == NULL)
|
||||||
pw_properties_set(playback_props, PW_KEY_NODE_DESCRIPTION, "ROC Source");
|
pw_properties_set(playback_props, PW_KEY_NODE_DESCRIPTION, "ROC Source");
|
||||||
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)
|
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_NODE_VIRTUAL, "true");
|
||||||
if (pw_properties_get(playback_props, PW_KEY_NODE_NETWORK) == NULL)
|
if (pw_properties_get(playback_props, PW_KEY_NODE_NETWORK) == NULL)
|
||||||
|
|
|
||||||
|
|
@ -1513,6 +1513,11 @@ pw_filter_connect(struct pw_filter *filter,
|
||||||
impl->disconnecting = false;
|
impl->disconnecting = false;
|
||||||
filter_set_state(filter, PW_FILTER_STATE_CONNECTING, NULL);
|
filter_set_state(filter, PW_FILTER_STATE_CONNECTING, NULL);
|
||||||
|
|
||||||
|
if (flags & PW_FILTER_FLAG_DRIVER)
|
||||||
|
pw_properties_set(filter->properties, PW_KEY_NODE_DRIVER, "true");
|
||||||
|
if ((pw_properties_get(filter->properties, PW_KEY_NODE_WANT_DRIVER) == NULL))
|
||||||
|
pw_properties_set(filter->properties, PW_KEY_NODE_WANT_DRIVER, "true");
|
||||||
|
|
||||||
if (filter->core == NULL) {
|
if (filter->core == NULL) {
|
||||||
filter->core = pw_context_connect(impl->context,
|
filter->core = pw_context_connect(impl->context,
|
||||||
pw_properties_copy(filter->properties), 0);
|
pw_properties_copy(filter->properties), 0);
|
||||||
|
|
|
||||||
|
|
@ -1834,6 +1834,9 @@ pw_stream_connect(struct pw_stream *stream,
|
||||||
}
|
}
|
||||||
if (flags & PW_STREAM_FLAG_DRIVER)
|
if (flags & PW_STREAM_FLAG_DRIVER)
|
||||||
pw_properties_set(stream->properties, PW_KEY_NODE_DRIVER, "true");
|
pw_properties_set(stream->properties, PW_KEY_NODE_DRIVER, "true");
|
||||||
|
if ((pw_properties_get(stream->properties, PW_KEY_NODE_WANT_DRIVER) == NULL))
|
||||||
|
pw_properties_set(stream->properties, PW_KEY_NODE_WANT_DRIVER, "true");
|
||||||
|
|
||||||
if (flags & PW_STREAM_FLAG_EXCLUSIVE)
|
if (flags & PW_STREAM_FLAG_EXCLUSIVE)
|
||||||
pw_properties_set(stream->properties, PW_KEY_NODE_EXCLUSIVE, "true");
|
pw_properties_set(stream->properties, PW_KEY_NODE_EXCLUSIVE, "true");
|
||||||
if (flags & PW_STREAM_FLAG_DONT_RECONNECT)
|
if (flags & PW_STREAM_FLAG_DONT_RECONNECT)
|
||||||
|
|
@ -1852,6 +1855,7 @@ pw_stream_connect(struct pw_stream *stream,
|
||||||
direction == PW_DIRECTION_INPUT ? "Input" : "Output",
|
direction == PW_DIRECTION_INPUT ? "Input" : "Output",
|
||||||
media_type ? media_type : get_media_class(impl));
|
media_type ? media_type : get_media_class(impl));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((str = pw_properties_get(stream->properties, PW_KEY_FORMAT_DSP)) != NULL)
|
if ((str = pw_properties_get(stream->properties, PW_KEY_FORMAT_DSP)) != NULL)
|
||||||
pw_properties_set(impl->port_props, PW_KEY_FORMAT_DSP, str);
|
pw_properties_set(impl->port_props, PW_KEY_FORMAT_DSP, str);
|
||||||
else if (impl->media_type == SPA_MEDIA_TYPE_application &&
|
else if (impl->media_type == SPA_MEDIA_TYPE_application &&
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue