mirror of
https://github.com/alsa-project/alsa-utils
synced 2024-11-08 14:28:22 +01:00
aplay: Handle 16bit sample negative overflow in peak calculations
The handling of 16bit samples in the peak calculations has a bug when a sample with 0x8000 is passed. As abs() treats 32bit int, it returns 0x8000. And yet the code stores back into 16bit value again. To fix that overflow, use 32bit value (i.e. val instead of sval) for the further calculations. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
0ea7bfea83
commit
5c4bf63a94
1 changed files with 3 additions and 3 deletions
|
@ -1829,9 +1829,9 @@ static void compute_max_peak(u_char *data, size_t samples)
|
|||
else
|
||||
sval = be16toh(*valp);
|
||||
sval ^= mask;
|
||||
sval = abs(sval);
|
||||
if (max_peak[c] < sval)
|
||||
max_peak[c] = sval;
|
||||
val = abs(sval);
|
||||
if (max_peak[c] < val)
|
||||
max_peak[c] = val;
|
||||
valp++;
|
||||
if (vumeter == VUMETER_STEREO)
|
||||
c = !c;
|
||||
|
|
Loading…
Reference in a new issue