[pulseaudio-discuss] [PATCH] alsa-mixer: Ignore volume with unexpected number of channels

Raymond Yau superquad.vortex2 at gmail.com
Mon Oct 19 09:21:39 PDT 2015


>>
>> 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 <david.henningsson at canonical.com>
>> ---
>>
>> 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.
>

What is the usage of  e->merged_mask  since it is not initialised ?

                    for (t = 0; t < PA_CHANNEL_POSITION_MAX; t++)
                        if (PA_CHANNEL_POSITION_MASK(t) & e->merged_mask) {
                            min_dB[t] = e->min_dB;
                            max_dB[t] = e->max_dB;
                            path_volume_channels |=
PA_CHANNEL_POSITION_MASK(t);
                        }

It seem  the logic try to skip the first control ( virtual master )

https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1497666

For snd-ca0106 , there is also a virutal master with slaves "Analog xxx
Playback Volume" controls which are ignored by pulseaudio
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20151020/2c4c490a/attachment-0001.html>


More information about the pulseaudio-discuss mailing list