On Wed, 3 Dec 2003, James Courtier-Dutton wrote:

> Hi,
> 
>   The alsa keeps state of all mixer levels in alsa's internal format 
> which has min,max info. So, for example if alsa has 0-31 levels, 
> converting that to the OSS 0-100 range is easy with a simple 
> calculation, but if an OSS app just does Volume++, the change will be 
> lost in the conversion from OSS to ALSA to actually set the state. So, 
> to work the way it should, OSS will have to cache all mixer state in OSS 
> format, thus requiring 2 state tables.
> 
> E.g.
> OSS Volume(0-100)   ALSA Volume(0-31)
> OSS = ALSA * 100/31;
> 
> 0                 0
> 1                   0
> 2                   0
> 3                   1
> 4                   1
> etc.
> 
> So, if OSS Volume is 2, and the OSS application does Volume++, the OSS 
> volume will be set to 3. but if OSS Volume is 3, and the OSS application 
> does Volume++, the OSS volume will stay at 3!

I don't undestand. Actually we have volumes in OSS format (in the kernel's 
mixer emulation), because some applications simply does not work for 
reason as you described (++ or -- applied). Note that these values are 
valid per application (so the resolution is reverted to ALSA's when 
another application changes volume too much). I don't see any other way to 
do it.

                                                Jaroslav

-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to