[alsa-devel] Question about snd_mixer_selem_get_playback_dB_range()

Peter Ujfalusi peter.ujfalusi at nokia.com
Tue Mar 22 08:02:18 CET 2011


On 03/21/11 16:44, ext Tanu Kaskinen wrote:
>>> Is it a bug in alsa (the driver or alsa-lib or whatever) if
>>> snd_mixer_selem_get_playback_dB_range() returns something else than
>>> SND_CTL_TLV_DB_GAIN_MUTE as the min gain, if the lowest volume step for
>>> the element is mute?
>>
>> Yes.
> 
> Thank you for the answer!

AFAIK the SND_CTL_TLV_DB_GAIN_MUTE received a fix regarding to this:
2f6206da0c1ff88235e6eca0077343f22a4b43ee
tlv: fix returned dB information for min-is-mute controls

Looking at the patch itself, it does going to return
min=SND_CTL_TLV_DB_GAIN_MUTE from snd_tlv_get_dB_range function.

However I have my doubts, if this is the correct way...

Take these two gain controls for example:
RAW value   GAIN1  GAIN2
   0        mute   mute
   1        -2dB   0dB
   2         0dB   1dB
   3         2dB   2dB

If user space asks for the dB_range:
        min    max
GAIN1   mute   2dB
GAIN2   mute   2dB

They are going to return with the same range, however if you ask for
-2dB on both:
GAIN1 will be -2dB
GAIN2 will be muted

So we are kind of hiding the dB range for the control.
I don't know how to fix it (well, I have some ideas, but it would need
changes in the API IMHO).

-- 
Péter


More information about the Alsa-devel mailing list