summaryrefslogtreecommitdiff
path: root/src/audio_core/algorithm
diff options
context:
space:
mode:
authorGravatar bunnei2018-12-11 11:45:53 -0500
committerGravatar GitHub2018-12-11 11:45:53 -0500
commit2c6679bb013af6c153e36b35606dddcc75f129dc (patch)
treedbf9d1c2c1cb8daa2b7e7de86391612b519072ae /src/audio_core/algorithm
parentMerge pull request #1888 from marcosvitali/glFrontFacing (diff)
parentAvoid (expensive) audio interpolation when sample rates already match (diff)
downloadyuzu-2c6679bb013af6c153e36b35606dddcc75f129dc.tar.gz
yuzu-2c6679bb013af6c153e36b35606dddcc75f129dc.tar.xz
yuzu-2c6679bb013af6c153e36b35606dddcc75f129dc.zip
Merge pull request #1877 from heapo/audio_interp
Perf: Avoid (expensive) audio interpolation when sample rates already match
Diffstat (limited to 'src/audio_core/algorithm')
-rw-r--r--src/audio_core/algorithm/interpolate.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/audio_core/algorithm/interpolate.cpp b/src/audio_core/algorithm/interpolate.cpp
index 3aea9b0f2..5005ba519 100644
--- a/src/audio_core/algorithm/interpolate.cpp
+++ b/src/audio_core/algorithm/interpolate.cpp
@@ -54,8 +54,9 @@ std::vector<s16> Interpolate(InterpolationState& state, std::vector<s16> input,
54 double l = 0.0; 54 double l = 0.0;
55 double r = 0.0; 55 double r = 0.0;
56 for (std::size_t j = 0; j < h.size(); j++) { 56 for (std::size_t j = 0; j < h.size(); j++) {
57 l += Lanczos(taps, pos + j - taps + 1) * h[j][0]; 57 const double lanczos_calc = Lanczos(taps, pos + j - taps + 1);
58 r += Lanczos(taps, pos + j - taps + 1) * h[j][1]; 58 l += lanczos_calc * h[j][0];
59 r += lanczos_calc * h[j][1];
59 } 60 }
60 output.emplace_back(static_cast<s16>(std::clamp(l, -32768.0, 32767.0))); 61 output.emplace_back(static_cast<s16>(std::clamp(l, -32768.0, 32767.0)));
61 output.emplace_back(static_cast<s16>(std::clamp(r, -32768.0, 32767.0))); 62 output.emplace_back(static_cast<s16>(std::clamp(r, -32768.0, 32767.0)));