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:
Wim Taymans 2022-04-21 10:14:53 +02:00
parent 9a5fbd26df
commit d1207422e0
11 changed files with 9 additions and 22 deletions

View file

@ -401,8 +401,6 @@ 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_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");
@ -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_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);

View file

@ -407,8 +407,6 @@ 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_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");
@ -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_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);

View file

@ -298,8 +298,6 @@ struct module *create_module_pipe_sink(struct impl *impl, const char *argument)
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)
pw_properties_set(capture_props, PW_KEY_NODE_VIRTUAL, "true");
pw_properties_set(capture_props, PW_KEY_MEDIA_CLASS, "Audio/Sink");

View file

@ -357,8 +357,6 @@ struct module *create_module_pipe_source(struct impl *impl, const char *argument
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)
pw_properties_set(playback_props, PW_KEY_NODE_VIRTUAL, "true");
pw_properties_set(playback_props, PW_KEY_MEDIA_CLASS, "Audio/Source");

View file

@ -378,7 +378,6 @@ static int create_streams(struct impl *impl, struct client *client)
if (impl->capture) {
props = pw_properties_new(
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 +401,6 @@ static int create_streams(struct impl *impl, struct client *client)
}
if (impl->playback) {
props = pw_properties_new(
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"),

View file

@ -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);
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)
@ -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_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);

View file

@ -1579,8 +1579,6 @@ 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_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");
@ -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_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);

View file

@ -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");
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_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)

View file

@ -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");
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_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)

View file

@ -1513,6 +1513,11 @@ pw_filter_connect(struct pw_filter *filter,
impl->disconnecting = false;
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) {
filter->core = pw_context_connect(impl->context,
pw_properties_copy(filter->properties), 0);

View file

@ -1834,6 +1834,9 @@ pw_stream_connect(struct pw_stream *stream,
}
if (flags & PW_STREAM_FLAG_DRIVER)
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)
pw_properties_set(stream->properties, PW_KEY_NODE_EXCLUSIVE, "true");
if (flags & PW_STREAM_FLAG_DONT_RECONNECT)
@ -1852,6 +1855,7 @@ pw_stream_connect(struct pw_stream *stream,
direction == PW_DIRECTION_INPUT ? "Input" : "Output",
media_type ? media_type : get_media_class(impl));
}
if ((str = pw_properties_get(stream->properties, PW_KEY_FORMAT_DSP)) != NULL)
pw_properties_set(impl->port_props, PW_KEY_FORMAT_DSP, str);
else if (impl->media_type == SPA_MEDIA_TYPE_application &&