[pulseaudio-discuss] RFC: Change the device-restore database to allow per-port volumes

David Henningsson david.henningsson at canonical.com
Mon Aug 29 00:04:30 PDT 2011

On 08/26/2011 03:05 PM, Colin Guthrie wrote:
> 'Twas brillig, and Colin Guthrie at 25/08/11 17:17 did gyre and gimble:
>> 'Twas brillig, and Arun Raghavan at 25/08/11 17:08 did gyre and gimble:
>>> On Wed, 2011-08-24 at 22:58 +0100, Colin Guthrie wrote:
>>>> Hi,
>>>> This is a patch set that will likely mostly interest David, but also
>>>> solves one of the remaining niggles I have for 1.0 - the fact that
>>>> volumes are not set properly on port changes.
>>>> Now this only "solves" that niggle when the module-device-restore is used,
>>>> but I'm happy enough to rely on that for now seeing as it's the default
>>>> on 99.999% of desktop installs.
>>>> The overall benefit of this patch is that it allows different volumes
>>>> to be saved and restored for different ports. Combine this with David's
>>>> work on making jack-detection work (which triggers port changes) and you
>>>> automatically get different volumes on headphones vs. speakers.
>>> My main concern is the following scenario:
>>> 0. Say we start with built-in speaker and headphone port and equal
>>> (maybe 70%) volume
>>> 1. With headphones plugged in, I've got the volume turned up while
>>> playing something that's naturally not very loud
>>> 2. I pull out headphones, start playing something that's quite loud, I
>>> turn down the volume
>>> 3. I put the headphones back, find the output too loud (since the port
>>> volume was turned up for the previous stream)
>>> While the current scenario isn't ideal, it's easy for users to wrap
>>> their head around (different devices have different loudness levels). If
>>> we don't handle this sort of case in the per-port-volume case, IMO the
>>> behaviour is potentially confusing/frustrating to users.
>>> Maybe there's a simple way to handle this that I'm missing ...
>> I'm not sure there is a way to handle this really. Either we want
>> volumes per-port or we don't. IMO we do (this is how it works on my
>> iPhone for example) and I think from the various mumblings I've heard
>> over the years most people want this type of functionality.
>> But perhaps there is indeed some magic solution that we are both missing :p
> Anyone else got any comments on this? I'd like to push it out if all is
> well otherwise.
> FWIW, to address Arun's concern somewhat, we could relatively easily
> make a change here that kept the same volume for every port simply by
> changing the key name used and then expose this as a module argument
> should people really hate this behaviour.
> Any comments on the code would be appreciated too :)

Well, I'm not that much into the database format, so can't really look 
for bugs there...I have a question though: What about loudness bumps? It 
looks like that could be the effect if you set the volume in such a 
reactive fashion?

However - it might be that there is no true way around that anyway, as 
in the case of jack detection as we're only reactive to what the kernel 

David Henningsson, Canonical Ltd.

More information about the pulseaudio-discuss mailing list