From bb835fccc9caa35617786d53ad8a7d46fb4b4937 Mon Sep 17 00:00:00 2001 From: Sour Date: Tue, 11 Feb 2020 23:15:10 -0500 Subject: [PATCH] Equalizer: Fixed sample wrapping when outside of int16_t range --- Utilities/Equalizer.cpp | 4 ++-- Utilities/stdafx.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Utilities/Equalizer.cpp b/Utilities/Equalizer.cpp index 3ac161a..7189816 100644 --- a/Utilities/Equalizer.cpp +++ b/Utilities/Equalizer.cpp @@ -12,8 +12,8 @@ void Equalizer::ApplyEqualizer(uint32_t sampleCount, int16_t *samples) _equalizerLeft->sbs_process(&inL, &outL); _equalizerRight->sbs_process(&inR, &outR); - samples[i * 2] = (int16_t)outL; - samples[i * 2 + 1] = (int16_t)outR; + samples[i * 2] = (int16_t)std::max(std::min(outL, 32767.0), -32768.0); + samples[i * 2 + 1] = (int16_t)std::max(std::min(outR, 32767.0), -32768.0); } } diff --git a/Utilities/stdafx.h b/Utilities/stdafx.h index a3de647..039f9f9 100644 --- a/Utilities/stdafx.h +++ b/Utilities/stdafx.h @@ -8,6 +8,7 @@ #include #include #include +#include #include "UTF8Util.h"