mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-03-18 05:34:07 -04: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;
|
struct pw_manager_object *metadata_schema_sm_settings;
|
||||||
bool have_force_mono_audio;
|
bool have_force_mono_audio;
|
||||||
|
bool default_force_mono_audio;
|
||||||
struct pw_manager_object *metadata_sm_settings;
|
struct pw_manager_object *metadata_sm_settings;
|
||||||
bool force_mono_audio;
|
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")) {
|
if (spa_streq(params, "true")) {
|
||||||
ret = pw_manager_set_metadata(client->manager, client->metadata_sm_settings, PW_ID_CORE,
|
ret = pw_manager_set_metadata(client->manager, client->metadata_sm_settings, PW_ID_CORE,
|
||||||
METADATA_FEATURES_AUDIO_MONO, "Spa:String:JSON", "true");
|
METADATA_FEATURES_AUDIO_MONO, "Spa:String:JSON", "true");
|
||||||
|
client->force_mono_audio = true;
|
||||||
} else if (spa_streq(params, "false")) {
|
} else if (spa_streq(params, "false")) {
|
||||||
ret = pw_manager_set_metadata(client->manager, client->metadata_sm_settings, PW_ID_CORE,
|
ret = pw_manager_set_metadata(client->manager, client->metadata_sm_settings, PW_ID_CORE,
|
||||||
METADATA_FEATURES_AUDIO_MONO, "Spa:String:JSON", "false");
|
METADATA_FEATURES_AUDIO_MONO, "Spa:String:JSON", "false");
|
||||||
|
client->force_mono_audio = false;
|
||||||
} else if (spa_streq(params, "null")) {
|
} else if (spa_streq(params, "null")) {
|
||||||
ret = pw_manager_set_metadata(client->manager, client->metadata_sm_settings, PW_ID_CORE,
|
ret = pw_manager_set_metadata(client->manager, client->metadata_sm_settings, PW_ID_CORE,
|
||||||
METADATA_FEATURES_AUDIO_MONO, NULL, NULL);
|
METADATA_FEATURES_AUDIO_MONO, NULL, NULL);
|
||||||
|
client->force_mono_audio = client->default_force_mono_audio;
|
||||||
} else {
|
} else {
|
||||||
fprintf(response, "Value must be true, false, or clear");
|
fprintf(response, "Value must be true, false, or clear");
|
||||||
return -EINVAL;
|
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)
|
if (subject == PW_ID_CORE && o == client->metadata_routes)
|
||||||
client_update_routes(client, key, value);
|
client_update_routes(client, key, value);
|
||||||
if (subject == PW_ID_CORE && o == client->metadata_schema_sm_settings) {
|
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;
|
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 (subject == PW_ID_CORE && o == client->metadata_sm_settings) {
|
||||||
if (spa_streq(key, METADATA_FEATURES_AUDIO_MONO))
|
if (spa_streq(key, METADATA_FEATURES_AUDIO_MONO))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue