mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2026-05-07 12:06:39 -04:00
Revert "snd_tlv_convert_to_dB: Fix mute handling for MINMAX_MUTE type"
This reverts commit 41039b49ad.
SND_CTL_TLVT_DB_MINMAX_MUTE means that the hardware is muted on lowest
hardware volume value (not on lowest dB value).
Analysis:
Range: min=0, max=7248
dB: min=-2837, max=-6
dB span: 2831 centibels (28.31 dB)
Volume | After revert/origin | PR#478 behavior
-------|---------------------|----------------------
0 | MUTE | MUTE
1 | -2837 (-28.37 dB) | MUTE <- DIFFERS!
2 | -2837 (-28.37 dB) | MUTE <- DIFFERS!
5 | -2836 (-28.36 dB) | -2836 (-28.36 dB)
10 | -2834 (-28.34 dB) | -2834 (-28.34 dB)
50 | -2818 (-28.18 dB) | -2818 (-28.18 dB)
Range: min=0, max=999
dB: min=0, max=390
dB span: 390 centibels (3.90 dB)
Volume | After revert/origin | PR#478 behavior
-------|---------------------|----------------------
0 | MUTE | MUTE
1 | 0 (0.00 dB) | MUTE <- DIFFERS!
2 | 0 (0.00 dB) | MUTE <- DIFFERS!
5 | 1 (0.01 dB) | 1 (0.01 dB)
10 | 3 (0.03 dB) | 3 (0.03 dB)
50 | 19 (0.19 dB) | 19 (0.19 dB)
Fixes: https://github.com/alsa-project/alsa-lib/issues/504
Link: https://github.com/alsa-project/alsa-lib/pull/478
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
62c24074ae
commit
96f23dda14
1 changed files with 7 additions and 8 deletions
|
|
@ -246,17 +246,16 @@ int snd_tlv_convert_to_dB(unsigned int *tlv, long rangemin, long rangemax,
|
|||
int mindb, maxdb;
|
||||
mindb = tlv[SNDRV_CTL_TLVO_DB_MINMAX_MIN];
|
||||
maxdb = tlv[SNDRV_CTL_TLVO_DB_MINMAX_MAX];
|
||||
if (rangemax <= rangemin)
|
||||
*db_gain = mindb;
|
||||
if (volume <= rangemin || rangemax <= rangemin) {
|
||||
if (type == SND_CTL_TLVT_DB_MINMAX_MUTE)
|
||||
*db_gain = SND_CTL_TLV_DB_GAIN_MUTE;
|
||||
else
|
||||
*db_gain = mindb;
|
||||
} else if (volume >= rangemax)
|
||||
*db_gain = maxdb;
|
||||
else
|
||||
*db_gain = (maxdb - mindb) * (volume - rangemin) /
|
||||
(rangemax - rangemin) + mindb;
|
||||
if (*db_gain < mindb)
|
||||
*db_gain = mindb;
|
||||
if (*db_gain > maxdb)
|
||||
*db_gain = maxdb;
|
||||
if (type == SND_CTL_TLVT_DB_MINMAX_MUTE && *db_gain == mindb)
|
||||
*db_gain = SND_CTL_TLV_DB_GAIN_MUTE;
|
||||
return 0;
|
||||
}
|
||||
#ifndef HAVE_SOFT_FLOAT
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue