mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-02-05 04:06:37 -05:00
Merge branch 'mono-mixdown-fixup' into '1.4'
[1.4] pulse-server: Fix querying after setting of mono mixdown See merge request pipewire/pipewire!2675
This commit is contained in:
commit
7728dd8e7d
3 changed files with 14 additions and 1 deletions
|
|
@ -62,6 +62,7 @@ struct client {
|
|||
|
||||
struct pw_manager_object *metadata_schema_sm_settings;
|
||||
bool have_force_mono_audio;
|
||||
bool default_force_mono_audio;
|
||||
struct pw_manager_object *metadata_sm_settings;
|
||||
bool force_mono_audio;
|
||||
|
||||
|
|
|
|||
|
|
@ -110,12 +110,15 @@ static int core_object_force_mono_output(struct client *client, const char *para
|
|||
if (spa_streq(params, "true")) {
|
||||
ret = pw_manager_set_metadata(client->manager, client->metadata_sm_settings, PW_ID_CORE,
|
||||
METADATA_FEATURES_AUDIO_MONO, "Spa:String:JSON", "true");
|
||||
client->force_mono_audio = true;
|
||||
} else if (spa_streq(params, "false")) {
|
||||
ret = pw_manager_set_metadata(client->manager, client->metadata_sm_settings, PW_ID_CORE,
|
||||
METADATA_FEATURES_AUDIO_MONO, "Spa:String:JSON", "false");
|
||||
client->force_mono_audio = false;
|
||||
} else if (spa_streq(params, "null")) {
|
||||
ret = pw_manager_set_metadata(client->manager, client->metadata_sm_settings, PW_ID_CORE,
|
||||
METADATA_FEATURES_AUDIO_MONO, NULL, NULL);
|
||||
client->force_mono_audio = client->default_force_mono_audio;
|
||||
} else {
|
||||
fprintf(response, "Value must be true, false, or clear");
|
||||
return -EINVAL;
|
||||
|
|
|
|||
|
|
@ -973,8 +973,17 @@ static void manager_metadata(void *data, struct pw_manager_object *o,
|
|||
if (subject == PW_ID_CORE && o == client->metadata_routes)
|
||||
client_update_routes(client, key, value);
|
||||
if (subject == PW_ID_CORE && o == client->metadata_schema_sm_settings) {
|
||||
if (spa_streq(key, METADATA_FEATURES_AUDIO_MONO))
|
||||
char default_[16];
|
||||
|
||||
if (spa_streq(key, METADATA_FEATURES_AUDIO_MONO)) {
|
||||
client->have_force_mono_audio = true;
|
||||
|
||||
if (spa_json_str_object_find(value, strlen(value),
|
||||
"default", default_, sizeof(default_)) < 0)
|
||||
client->default_force_mono_audio = false;
|
||||
else
|
||||
client->default_force_mono_audio = spa_streq(default_, "true");
|
||||
}
|
||||
}
|
||||
if (subject == PW_ID_CORE && o == client->metadata_sm_settings) {
|
||||
if (spa_streq(key, METADATA_FEATURES_AUDIO_MONO))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue