From b6f8bf68ecef89da50db0896b200e3f275fc1b19 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Mon, 16 Sep 2019 23:08:05 +0000 Subject: [PATCH] Minor audio backend cleanup --- src/Backends/Audio/SDL2.cpp | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/Backends/Audio/SDL2.cpp b/src/Backends/Audio/SDL2.cpp index 8118b4c8..f9119329 100644 --- a/src/Backends/Audio/SDL2.cpp +++ b/src/Backends/Audio/SDL2.cpp @@ -83,20 +83,15 @@ static void MixSounds(float *stream, unsigned int frames_total) for (unsigned int i = 0; i < frames_to_do; ++i) { + // Get two samples, and normalise them to 0-1 + const float sample1 = (sound->samples[(size_t)sound->position] - 128.0f) / 128.0f; + const float sample2 = (sound->samples[(size_t)sound->position + 1] - 128.0f) / 128.0f; + // Perform linear interpolation - - // Get two samples - const unsigned char sample1 = sound->samples[(size_t)sound->position]; - const unsigned char sample2 = sound->samples[(size_t)sound->position + 1]; - - // Interpolate const float interpolated_sample = sample1 + ((sample2 - sample1) * (float)fmod(sound->position, 1.0)); - // Normalise to 0-1 - const float sample_normalised = (interpolated_sample - 128.0f) / 128.0f; - - *steam_pointer++ += sample_normalised * sound->volume_l; - *steam_pointer++ += sample_normalised * sound->volume_r; + *steam_pointer++ += interpolated_sample * sound->volume_l; + *steam_pointer++ += interpolated_sample * sound->volume_r; sound->position += sound->advance_delta; } @@ -109,8 +104,8 @@ static void MixSounds(float *stream, unsigned int frames_total) } else { - sound->position = 0.0; sound->playing = FALSE; + sound->position = 0.0; break; } } @@ -257,7 +252,7 @@ unsigned char* AudioBackend_LockSound(AudioBackend_Sound *sound, size_t *size) SDL_LockAudioDevice(device_id); - if (size) + if (size != NULL) *size = sound->frames; return sound->samples;