From fbcb2f5f56f2b78a0cde85a214045b6008ac0358 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Thu, 3 Sep 2020 16:01:46 +0100 Subject: [PATCH] Optimise the linear-interpolator a little Doesn't have to do two sets of shifts --- src/Backends/Audio/SoftwareMixer.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Backends/Audio/SoftwareMixer.cpp b/src/Backends/Audio/SoftwareMixer.cpp index 700197bf..11e30567 100644 --- a/src/Backends/Audio/SoftwareMixer.cpp +++ b/src/Backends/Audio/SoftwareMixer.cpp @@ -202,12 +202,12 @@ ATTRIBUTE_HOT void Mixer_MixSounds(long *stream, size_t frames_total) // Perform linear interpolation const unsigned char interpolation_scale = sound->position_subsample >> 8; - const short output_sample = sound->samples[sound->position] * (0x100 - interpolation_scale) - + sound->samples[sound->position + 1] * interpolation_scale; + const signed char output_sample = (sound->samples[sound->position] * (0x100 - interpolation_scale) + + sound->samples[sound->position + 1] * interpolation_scale) >> 8; // Mix, and apply volume - *stream_pointer++ += (output_sample * sound->volume_l) >> 8; - *stream_pointer++ += (output_sample * sound->volume_r) >> 8; + *stream_pointer++ += output_sample * sound->volume_l; + *stream_pointer++ += output_sample * sound->volume_r; #endif // Increment sample