diff --git a/src/modules/module-protocol-pulse/modules/module-zeroconf-discover.c b/src/modules/module-protocol-pulse/modules/module-zeroconf-discover.c index 4affa7fae..79f14e853 100644 --- a/src/modules/module-protocol-pulse/modules/module-zeroconf-discover.c +++ b/src/modules/module-protocol-pulse/modules/module-zeroconf-discover.c @@ -40,6 +40,8 @@ struct module_zeroconf_discover_data { struct spa_hook mod_listener; struct pw_impl_module *mod; + + uint32_t latency_msec; }; static void module_destroy(void *data) @@ -58,10 +60,25 @@ static const struct pw_impl_module_events module_events = { static int module_zeroconf_discover_load(struct client *client, struct module *module) { struct module_zeroconf_discover_data *data = module->user_data; + FILE *f; + char *args; + size_t size; + + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + + fprintf(f, "{"); + if (data->latency_msec > 0) + fprintf(f, " pulse.latency = %u ", data->latency_msec); + fprintf(f, "}"); + fclose(f); data->mod = pw_context_load_module(module->impl->context, "libpipewire-module-zeroconf-discover", - NULL, NULL); + args, NULL); + + free(args); + if (data->mod == NULL) return -errno; @@ -88,7 +105,8 @@ static int module_zeroconf_discover_unload(struct module *module) static const struct spa_dict_item module_zeroconf_discover_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "mDNS/DNS-SD Service Discovery" }, - { PW_KEY_MODULE_USAGE, "" }, + { PW_KEY_MODULE_USAGE, + "latency_msec= " }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; @@ -96,9 +114,12 @@ static int module_zeroconf_discover_prepare(struct module * const module) { PW_LOG_TOPIC_INIT(mod_topic); + struct pw_properties * const props = module->props; struct module_zeroconf_discover_data * const data = module->user_data; data->module = module; + pw_properties_fetch_uint32(props, "latency_msec", &data->latency_msec); + return 0; } diff --git a/src/modules/module-zeroconf-discover.c b/src/modules/module-zeroconf-discover.c index 2cf451430..cc4c04235 100644 --- a/src/modules/module-zeroconf-discover.c +++ b/src/modules/module-zeroconf-discover.c @@ -54,7 +54,10 @@ * audio to/from remote PulseAudio servers. It also works with * module-protocol-pulse. * - * This module has no options. + * ## Module Options + * + * - `pulse.latency`: the latency to end-to-end latency in milliseconds to + * maintain (Default 200ms). * * ## Example configuration * @@ -72,7 +75,7 @@ PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); #define PW_LOG_TOPIC_DEFAULT mod_topic -#define MODULE_USAGE " " +#define MODULE_USAGE "pulse.latency= " static const struct spa_dict_item module_props[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, @@ -348,6 +351,9 @@ static void resolver_cb(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiPr _("%s on %s"), desc, fqdn); } + if ((str = pw_properties_get(impl->properties, "pulse.latency")) != NULL) + pw_properties_set(props, "pulse.latency", str); + if ((f = open_memstream(&args, &size)) == NULL) { pw_log_error("Can't open memstream: %m"); goto done;