From 994cafb9f1627bc619558d6fb56106770a5a700b Mon Sep 17 00:00:00 2001 From: Ellen Poe Date: Fri, 30 Jul 2021 13:20:25 -0700 Subject: [PATCH] Fix Godot's cubic resampling algorithm (cherry picked from commit 2d450c6f61e209c921eea352ed37afd98d11b034) --- servers/audio/audio_stream.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp index def5f0d1642..5fa3b06d774 100644 --- a/servers/audio/audio_stream.cpp +++ b/servers/audio/audio_stream.cpp @@ -66,12 +66,12 @@ void AudioStreamPlaybackResampled::mix(AudioFrame *p_buffer, float p_rate_scale, AudioFrame y3 = internal_buffer[idx - 0]; float mu2 = mu * mu; - AudioFrame a0 = y3 - y2 - y0 + y1; - AudioFrame a1 = y0 - y1 - a0; + AudioFrame a0 = 3 * y1 - 3 * y2 + y3 - y0; + AudioFrame a1 = 2 * y0 - 5 * y1 + 4 * y2 - y3; AudioFrame a2 = y2 - y0; - AudioFrame a3 = y1; + AudioFrame a3 = 2 * y1; - p_buffer[i] = (a0 * mu * mu2 + a1 * mu2 + a2 * mu + a3); + p_buffer[i] = (a0 * mu * mu2 + a1 * mu2 + a2 * mu + a3) / 2; mix_offset += mix_increment;