Browse Source

Prevent distortion filter from introducing NaNs in the audio buffer.

Ellen Poe 4 years ago
parent
commit
b6b97b86ab
1 changed files with 2 additions and 1 deletions
  1. 2 1
      servers/audio/effects/audio_effect_distortion.cpp

+ 2 - 1
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)) {