From f06ee28140c101fbb06ac020cdee1ea2b86c396e Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 11 Mar 2022 09:57:37 +0100 Subject: [PATCH] pulse-server: add sink/source_properties Support setting extra properties on the sink and source with the sink/source_properties. Fix construction of the module arguments, the sink/source.props needs to be inside the object.. Fixes #2201 --- .../module-protocol-pulse/modules/module-roc-sink.c | 7 ++++++- .../module-protocol-pulse/modules/module-roc-source.c | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/modules/module-protocol-pulse/modules/module-roc-sink.c b/src/modules/module-protocol-pulse/modules/module-roc-sink.c index cb4c2bfb5..7901300b7 100644 --- a/src/modules/module-protocol-pulse/modules/module-roc-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-roc-sink.c @@ -78,7 +78,7 @@ static int module_roc_sink_load(struct client *client, struct module *module) fprintf(f, "{"); pw_properties_serialize_dict(f, &data->roc_props->dict, 0); - fprintf(f, " } sink.props = {"); + fprintf(f, " sink.props = {"); pw_properties_serialize_dict(f, &data->sink_props->dict, 0); fprintf(f, " } }"); fclose(f); @@ -125,6 +125,7 @@ static const struct spa_dict_item module_roc_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Sanchayan Maity " }, { PW_KEY_MODULE_DESCRIPTION, "roc sink" }, { PW_KEY_MODULE_USAGE, "sink_name= " + "sink_properties= " "local_ip= " "remote_ip= " "remote_source_port= " @@ -156,6 +157,10 @@ struct module *create_module_roc_sink(struct impl *impl, const char *argument) pw_properties_set(sink_props, PW_KEY_NODE_NAME, str); pw_properties_set(props, "sink_name", NULL); } + if ((str = pw_properties_get(props, "sink_properties")) != NULL) { + module_args_add_props(sink_props, str); + pw_properties_set(props, "sink_properties", NULL); + } if ((str = pw_properties_get(props, PW_KEY_MEDIA_CLASS)) == NULL) { pw_properties_set(props, PW_KEY_MEDIA_CLASS, "Audio/Sink"); diff --git a/src/modules/module-protocol-pulse/modules/module-roc-source.c b/src/modules/module-protocol-pulse/modules/module-roc-source.c index 7ab083eaa..cae2d9fc6 100644 --- a/src/modules/module-protocol-pulse/modules/module-roc-source.c +++ b/src/modules/module-protocol-pulse/modules/module-roc-source.c @@ -78,7 +78,7 @@ static int module_roc_source_load(struct client *client, struct module *module) fprintf(f, "{"); pw_properties_serialize_dict(f, &data->roc_props->dict, 0); - fprintf(f, " } source.props = {"); + fprintf(f, " source.props = {"); pw_properties_serialize_dict(f, &data->source_props->dict, 0); fprintf(f, " } }"); fclose(f); @@ -125,6 +125,7 @@ static const struct spa_dict_item module_roc_source_info[] = { { PW_KEY_MODULE_AUTHOR, "Sanchayan Maity " }, { PW_KEY_MODULE_DESCRIPTION, "roc source" }, { PW_KEY_MODULE_USAGE, "source_name= " + "source_properties= " "resampler_profile=|disable|high|medium|low " "sess_latency_msec= " "local_ip= " @@ -158,6 +159,10 @@ struct module *create_module_roc_source(struct impl *impl, const char *argument) pw_properties_set(source_props, PW_KEY_NODE_NAME, str); pw_properties_set(props, "source_name", NULL); } + if ((str = pw_properties_get(props, "source_properties")) != NULL) { + module_args_add_props(source_props, str); + pw_properties_set(props, "source_properties", NULL); + } if ((str = pw_properties_get(props, PW_KEY_MEDIA_CLASS)) == NULL) { pw_properties_set(props, PW_KEY_MEDIA_CLASS, "Audio/Source");