mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2026-01-01 11:08:36 -05:00
raop: Allow for nice sink descriptions to be set (interpolated from avahi)
This commit is contained in:
parent
8fc9b19cb3
commit
d293f08442
2 changed files with 29 additions and 7 deletions
|
|
@ -152,11 +152,18 @@ static void resolver_cb(
|
||||||
if (event != AVAHI_RESOLVER_FOUND)
|
if (event != AVAHI_RESOLVER_FOUND)
|
||||||
pa_log("Resolving of '%s' failed: %s", name, avahi_strerror(avahi_client_errno(u->client)));
|
pa_log("Resolving of '%s' failed: %s", name, avahi_strerror(avahi_client_errno(u->client)));
|
||||||
else {
|
else {
|
||||||
char *device = NULL, *dname, *vname, *args;
|
char *device = NULL, *nicename, *dname, *vname, *args;
|
||||||
char at[AVAHI_ADDRESS_STR_MAX];
|
char at[AVAHI_ADDRESS_STR_MAX];
|
||||||
AvahiStringList *l;
|
AvahiStringList *l;
|
||||||
pa_module *m;
|
pa_module *m;
|
||||||
|
|
||||||
|
if ((nicename = strstr(name, "@"))) {
|
||||||
|
++nicename;
|
||||||
|
if (strlen(nicename) > 0) {
|
||||||
|
pa_log_debug("Found RAOP: %s", nicename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (l = txt; l; l = l->next) {
|
for (l = txt; l; l = l->next) {
|
||||||
char *key, *value;
|
char *key, *value;
|
||||||
pa_assert_se(avahi_string_list_get_pair(l, &key, &value, NULL) == 0);
|
pa_assert_se(avahi_string_list_get_pair(l, &key, &value, NULL) == 0);
|
||||||
|
|
@ -190,10 +197,20 @@ static void resolver_cb(
|
||||||
"sink_name=%s",
|
"sink_name=%s",
|
||||||
avahi_address_snprint(at, sizeof(at), a), port,
|
avahi_address_snprint(at, sizeof(at), a), port,
|
||||||
vname);*/
|
vname);*/
|
||||||
args = pa_sprintf_malloc("server=%s "
|
if (nicename) {
|
||||||
"sink_name=%s",
|
args = pa_sprintf_malloc("server=%s "
|
||||||
avahi_address_snprint(at, sizeof(at), a),
|
"sink_name=%s "
|
||||||
vname);
|
"description=\"%s\"",
|
||||||
|
avahi_address_snprint(at, sizeof(at), a),
|
||||||
|
vname,
|
||||||
|
nicename);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
args = pa_sprintf_malloc("server=%s "
|
||||||
|
"sink_name=%s",
|
||||||
|
avahi_address_snprint(at, sizeof(at), a),
|
||||||
|
vname);
|
||||||
|
}
|
||||||
|
|
||||||
pa_log_debug("Loading module-raop-sink with arguments '%s'", args);
|
pa_log_debug("Loading module-raop-sink with arguments '%s'", args);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
|
||||||
PA_MODULE_LOAD_ONCE(FALSE);
|
PA_MODULE_LOAD_ONCE(FALSE);
|
||||||
PA_MODULE_USAGE(
|
PA_MODULE_USAGE(
|
||||||
"sink_name=<name for the sink> "
|
"sink_name=<name for the sink> "
|
||||||
|
"description=<description for the sink> "
|
||||||
"server=<address> "
|
"server=<address> "
|
||||||
"format=<sample format> "
|
"format=<sample format> "
|
||||||
"channels=<number of channels> "
|
"channels=<number of channels> "
|
||||||
|
|
@ -122,6 +123,7 @@ static const char* const valid_modargs[] = {
|
||||||
"format",
|
"format",
|
||||||
"channels",
|
"channels",
|
||||||
"sink_name",
|
"sink_name",
|
||||||
|
"description",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -502,7 +504,7 @@ int pa__init(pa_module*m) {
|
||||||
struct userdata *u = NULL;
|
struct userdata *u = NULL;
|
||||||
pa_sample_spec ss;
|
pa_sample_spec ss;
|
||||||
pa_modargs *ma = NULL;
|
pa_modargs *ma = NULL;
|
||||||
const char *server;
|
const char *server, *desc;
|
||||||
pa_sink_new_data data;
|
pa_sink_new_data data;
|
||||||
|
|
||||||
pa_assert(m);
|
pa_assert(m);
|
||||||
|
|
@ -564,7 +566,10 @@ int pa__init(pa_module*m) {
|
||||||
pa_sink_new_data_set_name(&data, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME));
|
pa_sink_new_data_set_name(&data, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME));
|
||||||
pa_sink_new_data_set_sample_spec(&data, &ss);
|
pa_sink_new_data_set_sample_spec(&data, &ss);
|
||||||
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, server);
|
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, server);
|
||||||
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "RAOP sink '%s'", server);
|
if ((desc = pa_modargs_get_value(ma, "description", NULL)))
|
||||||
|
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, desc);
|
||||||
|
else
|
||||||
|
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "RAOP sink '%s'", server);
|
||||||
|
|
||||||
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_NETWORK);
|
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_NETWORK);
|
||||||
pa_sink_new_data_done(&data);
|
pa_sink_new_data_done(&data);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue