summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-03-04 13:34:02 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-03-04 13:34:02 +0100
commitb811e9a74e1fe70556888cbd0e5abc476cb356ad (patch)
tree308dffb64aea978c04d524ab250260fb2e755bb6
parent006437005d3b1288dad16705bc6c46b571a960d1 (diff)
parent7fa3431dca962dd2ac9c628e69908b42705497e6 (diff)
downloadredot-engine-b811e9a74e1fe70556888cbd0e5abc476cb356ad.tar.gz
Merge pull request #89071 from DeeJayLSP/cubicres
WAV importer: Use cubic interpolation on resampler
-rw-r--r--editor/import/resource_importer_wav.cpp12
1 files changed, 2 insertions, 10 deletions
diff --git a/editor/import/resource_importer_wav.cpp b/editor/import/resource_importer_wav.cpp
index c97b6a7579..ab14a5f01d 100644
--- a/editor/import/resource_importer_wav.cpp
+++ b/editor/import/resource_importer_wav.cpp
@@ -328,7 +328,7 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
int ipos = 0;
for (int i = 0; i < new_data_frames; i++) {
- //simple cubic interpolation should be enough.
+ // Cubic interpolation should be enough.
float mu = frac;
@@ -337,15 +337,7 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
float y2 = data[MIN(frames - 1, ipos + 1) * format_channels + c];
float y3 = data[MIN(frames - 1, ipos + 2) * format_channels + c];
- float mu2 = mu * mu;
- float a0 = y3 - y2 - y0 + y1;
- float a1 = y0 - y1 - a0;
- float a2 = y2 - y0;
- float a3 = y1;
-
- float res = (a0 * mu * mu2 + a1 * mu2 + a2 * mu + a3);
-
- new_data.write[i * format_channels + c] = res;
+ new_data.write[i * format_channels + c] = Math::cubic_interpolate(y1, y2, y0, y3, mu);
// update position and always keep fractional part within ]0...1]
// in order to avoid 32bit floating point precision errors