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