mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-08 13:29:59 -05:00
Revert "alsa-mixer: support up to 8 channels per mixer element"
This reverts commit e0ab9fa4a4.
The change broke some Xonar cards, and we probably don't want to hold up
the 14.0 release for this.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1009
This commit is contained in:
parent
8614a37a95
commit
7f4d7fcf5f
2 changed files with 10 additions and 16 deletions
|
|
@ -1794,16 +1794,16 @@ static bool element_probe_volume(pa_alsa_element *e, snd_mixer_elem_t *me) {
|
||||||
alsa_id_str(buf, sizeof(buf), &e->alsa_id);
|
alsa_id_str(buf, sizeof(buf), &e->alsa_id);
|
||||||
pa_log_warn("Volume element %s with no channels?", buf);
|
pa_log_warn("Volume element %s with no channels?", buf);
|
||||||
return false;
|
return false;
|
||||||
} else if (e->n_channels > 8) {
|
} else if (e->n_channels > 2) {
|
||||||
/* FIXME: In some places code like this is used:
|
/* FIXME: In some places code like this is used:
|
||||||
*
|
*
|
||||||
* e->masks[alsa_channel_ids[p]][e->n_channels-1]
|
* e->masks[alsa_channel_ids[p]][e->n_channels-1]
|
||||||
*
|
*
|
||||||
* The definition of e->masks is
|
* The definition of e->masks is
|
||||||
*
|
*
|
||||||
* pa_channel_position_mask_t masks[SND_MIXER_SCHN_LAST + 1][8];
|
* pa_channel_position_mask_t masks[SND_MIXER_SCHN_LAST + 1][2];
|
||||||
*
|
*
|
||||||
* Since the array size is fixed at 8, we obviously
|
* Since the array size is fixed at 2, we obviously
|
||||||
* don't support elements with more than two
|
* don't support elements with more than two
|
||||||
* channels... */
|
* channels... */
|
||||||
alsa_id_str(buf, sizeof(buf), &e->alsa_id);
|
alsa_id_str(buf, sizeof(buf), &e->alsa_id);
|
||||||
|
|
@ -2463,7 +2463,7 @@ static pa_channel_position_mask_t parse_mask(const char *m) {
|
||||||
static int element_parse_override_map(pa_config_parser_state *state) {
|
static int element_parse_override_map(pa_config_parser_state *state) {
|
||||||
pa_alsa_path *p;
|
pa_alsa_path *p;
|
||||||
pa_alsa_element *e;
|
pa_alsa_element *e;
|
||||||
const char *split_state = NULL, *s;
|
const char *split_state = NULL;
|
||||||
unsigned i = 0;
|
unsigned i = 0;
|
||||||
char *n;
|
char *n;
|
||||||
|
|
||||||
|
|
@ -2489,18 +2489,12 @@ static int element_parse_override_map(pa_config_parser_state *state) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s = strstr(state->lvalue, ".");
|
if (pa_streq(state->lvalue, "override-map.1"))
|
||||||
if (s) {
|
e->masks[i++][0] = m;
|
||||||
int idx;
|
else
|
||||||
pa_atoi(s + 1, &idx);
|
e->masks[i++][1] = m;
|
||||||
if (idx >= 1 && idx <= 8) {
|
|
||||||
e->masks[i++][idx-1] = m;
|
|
||||||
} else {
|
|
||||||
pa_log("[%s:%u] Override map index '%s' invalid in '%s'", state->filename, state->lineno, state->lvalue, state->section);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Later on we might add override-map.9 and so on here ... */
|
/* Later on we might add override-map.3 and so on here ... */
|
||||||
|
|
||||||
pa_xfree(n);
|
pa_xfree(n);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ struct pa_alsa_element {
|
||||||
long volume_limit; /* -1 for no configured limit */
|
long volume_limit; /* -1 for no configured limit */
|
||||||
double min_dB, max_dB;
|
double min_dB, max_dB;
|
||||||
|
|
||||||
pa_channel_position_mask_t masks[SND_MIXER_SCHN_LAST + 1][8];
|
pa_channel_position_mask_t masks[SND_MIXER_SCHN_LAST + 1][2];
|
||||||
unsigned n_channels;
|
unsigned n_channels;
|
||||||
|
|
||||||
pa_channel_position_mask_t merged_mask;
|
pa_channel_position_mask_t merged_mask;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue