diff options
| author | bunnei <bunneidev@gmail.com> | 2018-12-11 11:45:53 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-11 11:45:53 -0500 |
| commit | 220bf69e854969b9737f4704df9387a0b6117fcb (patch) | |
| tree | dbf9d1c2c1cb8daa2b7e7de86391612b519072ae /src/audio_core/algorithm/interpolate.cpp | |
| parent | d0098f0fb49486b6cb18ebfe7e223f1cf682f140 (diff) | |
| parent | 4c83e5cd1e3e5dff270c701cb8a0ac47914d87e7 (diff) | |
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/interpolate.cpp')
| -rw-r--r-- | src/audio_core/algorithm/interpolate.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/audio_core/algorithm/interpolate.cpp b/src/audio_core/algorithm/interpolate.cpp index 3aea9b0f2c..5005ba5199 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, double l = 0.0; double r = 0.0; for (std::size_t j = 0; j < h.size(); j++) { - l += Lanczos(taps, pos + j - taps + 1) * h[j][0]; - r += Lanczos(taps, pos + j - taps + 1) * h[j][1]; + const double lanczos_calc = Lanczos(taps, pos + j - taps + 1); + l += lanczos_calc * h[j][0]; + r += lanczos_calc * h[j][1]; } output.emplace_back(static_cast<s16>(std::clamp(l, -32768.0, 32767.0))); output.emplace_back(static_cast<s16>(std::clamp(r, -32768.0, 32767.0))); |
