diff options
Diffstat (limited to 'src/pcm_volume.c')
-rw-r--r-- | src/pcm_volume.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/pcm_volume.c b/src/pcm_volume.c index af7916b1f..7f032a5f3 100644 --- a/src/pcm_volume.c +++ b/src/pcm_volume.c @@ -34,7 +34,8 @@ pcm_volume_change_8(int8_t *buffer, unsigned num_samples, int volume) while (num_samples > 0) { int32_t sample = *buffer; - sample = (sample * volume + pcm_dither() + PCM_VOLUME_1 / 2) + sample = (sample * volume + pcm_volume_dither() + + PCM_VOLUME_1 / 2) / PCM_VOLUME_1; *buffer++ = pcm_range(sample, 8); @@ -48,7 +49,8 @@ pcm_volume_change_16(int16_t *buffer, unsigned num_samples, int volume) while (num_samples > 0) { int32_t sample = *buffer; - sample = (sample * volume + pcm_dither() + PCM_VOLUME_1 / 2) + sample = (sample * volume + pcm_volume_dither() + + PCM_VOLUME_1 / 2) / PCM_VOLUME_1; *buffer++ = pcm_range(sample, 16); @@ -62,7 +64,8 @@ pcm_volume_change_24(int32_t *buffer, unsigned num_samples, int volume) while (num_samples > 0) { int64_t sample = *buffer; - sample = (sample * volume + pcm_dither() + PCM_VOLUME_1 / 2) + sample = (sample * volume + pcm_volume_dither() + + PCM_VOLUME_1 / 2) / PCM_VOLUME_1; *buffer++ = pcm_range(sample, 24); |