[alsa-devel] My issues with the ALSA API

Jaroslav Kysela perex at perex.cz
Mon Apr 21 12:56:15 CEST 2008

On Thu, 10 Apr 2008, Lennart Poettering wrote:

> On Thu, 10.04.08 10:16, Jaroslav Kysela (perex at perex.cz) wrote:
> > Mixer
> > =====
> > 
> > Please explain this question (why you need the dB <-> value conversion, 
> > we assumed that application works in dB or integer range not both):
> > 
> > 'It is possible to query the dB range of a smixer element. And it is 
> > possible to query and set the current dB level. However, it is not 
> > possible to have a dB value converted to an integer level or vice versa, 
> > without touching the actual setting. i.e. a question like "What is the 
> > integer level 0 dB corresponds to?" can not be answered by ALSA. Which 
> > happens to be a serious limitation.'
> I can think of many reasons, they all have to do with the fact that
> the dB scale is not integral, i.e. in contrast for the normal integer
> scale you won't always get what you are asking for, because the
> hardware only supports a value below or above what you asked for: a) a
> volume control tool might want to show a slider that is linear to the
> dB scale, but also shows which dB values are actually selectable from
> it via small black lines on the side (or suchlike) b) PA doesn't make
> use of positive dB values -- it limits itself to attenuation via the
> mixer. However, right now there is no way to find out which actually
> supported dB value is the nearest one to 0dB. c) Several different dB
> values may refer to the same actual hw setting. It would be good if a
> specific dB value actually maps to the same integer hw setting as some
> other value, to surpress redundant "volume change" events.

OK. I see your points. I've added these functions to alsa-lib's API:



Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.

More information about the Alsa-devel mailing list