From b6b97b86ab7f29bd9e5f81c6c76819fd6b4dbf10 Mon Sep 17 00:00:00 2001 From: Ellen Poe Date: Thu, 18 Feb 2021 16:53:26 -0800 Subject: Prevent distortion filter from introducing NaNs in the audio buffer. --- servers/audio/effects/audio_effect_distortion.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'servers/audio/effects/audio_effect_distortion.cpp') diff --git a/servers/audio/effects/audio_effect_distortion.cpp b/servers/audio/effects/audio_effect_distortion.cpp index b79434e7c2..06d51776a3 100644 --- a/servers/audio/effects/audio_effect_distortion.cpp +++ b/servers/audio/effects/audio_effect_distortion.cpp @@ -58,7 +58,8 @@ void AudioEffectDistortionInstance::process(const AudioFrame *p_src_frames, Audi switch (base->mode) { case AudioEffectDistortion::MODE_CLIP: { - a = powf(a, 1.0001 - drive_f); + float a_sign = a < 0 ? -1.0f : 1.0f; + a = powf(abs(a), 1.0001 - drive_f) * a_sign; if (a > 1.0) { a = 1.0; } else if (a < (-1.0)) { -- cgit v1.2.3