19.10.2015 14:16, David Henningsson wrote:
We currently only support one and two channels for volumes, and
bail out otherwise. This makes Xonar users unhappy because they
have a volume with eight channels, and bailing out means they
don't have a path/port at all.
This way they will at least have a port, which will in turn make
the gnome/unity UI behave better.
BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=84983
BugLink: https://bugzilla.gnome.org/show_bug.cgi?id=745017
Signed-off-by: David Henningsson <[email protected]>
---
This is a resend of https://bugs.freedesktop.org/attachment.cgi?id=114250
There is a competing patch by Raymond in that bug, but I think his
patch is broken, so I'm going to push mine in a week if there are no
reviews.
Well, here is my review :)
While this should work, this patch means that all those users are
essentially limited to software-based volume inside of PulseAudio. Also,
the master (or whatever multichannel) slider will not be touched by
PulseAudio at all. Which means that it will stay at whatever position
that alsactl init (or alsactl restore) left it at. I.e. a limited volume
range (note: this is not a regression). Which is still better than what
we have now.
Counterproposal: if that's easier to implement than full multi-channel
volume, treat all multichannel volume controls as mono internally,
duplicate the volume across all channels when setting it, and use the
first channel when getting. I.e., instead of full software volume, make
"software balance".
As this counterproposal comes without a patch, and especially since the
"counterprpopsed" improvement can be done later, this should not block
the "going to push in one week" statement.
--
Alexander E. Patrakov
src/modules/alsa/alsa-mixer.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
index 9e06ba4..486da83 100644
--- a/src/modules/alsa/alsa-mixer.c
+++ b/src/modules/alsa/alsa-mixer.c
@@ -1743,10 +1743,10 @@ static int element_probe(pa_alsa_element *e,
snd_mixer_t *m) {
if (e->n_channels <= 0) {
pa_log_warn("Volume element %s with no channels?",
e->alsa_name);
- return -1;
+ e->volume_use = PA_ALSA_VOLUME_IGNORE;
}
- if (e->n_channels > 2) {
+ else if (e->n_channels > 2) {
/* FIXME: In some places code like this is used:
*
* e->masks[alsa_channel_ids[p]][e->n_channels-1]
@@ -1759,7 +1759,7 @@ static int element_probe(pa_alsa_element *e, snd_mixer_t
*m) {
* don't support elements with more than two
* channels... */
pa_log_warn("Volume element %s has %u channels. That's too much!
I can't handle that!", e->alsa_name, e->n_channels);
- return -1;
+ e->volume_use = PA_ALSA_VOLUME_IGNORE;
}
if (!e->override_map) {
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss