From 3e66410de0bf006c4b90eeb259d59da7ff8e8355 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Fri, 17 Feb 2017 10:57:23 +0300 Subject: Better audio clipping while mixing --- src/adlmidi.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/adlmidi.cpp') diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index d54ce9a..07efea3 100644 --- a/src/adlmidi.cpp +++ b/src/adlmidi.cpp @@ -274,6 +274,9 @@ ADLMIDI_EXPORT void adl_reset(ADL_MIDIPlayer *device) } #ifdef ADLMIDI_USE_DOSBOX_OPL + +#define ADLMIDI_CLAMP(V, MIN, MAX) std::max(std::min(V, (MAX)), (MIN)) + inline static void SendStereoAudio(ADL_MIDIPlayer *device, int &samples_requested, ssize_t &in_size, @@ -296,7 +299,7 @@ inline static void SendStereoAudio(ADL_MIDIPlayer *device, offset = pos + p * 2 + w; if(offset < samples_requested) - _out[offset] = static_cast(out); + _out[offset] = static_cast(ADLMIDI_CLAMP(out, INT16_MIN, INT16_MAX)); else { device->backup_samples[device->backup_samples_size] = static_cast(out); -- cgit v1.2.3