aboutsummaryrefslogtreecommitdiff
path: root/src/audio_core/audio_renderer.cpp
diff options
context:
space:
mode:
authorheapo <heapo3@gmail.com>2018-12-06 09:15:47 -0800
committerheapo <heapo3@gmail.com>2018-12-06 09:46:08 -0800
commit4c83e5cd1e3e5dff270c701cb8a0ac47914d87e7 (patch)
tree1baa2c45bf3c1f63b0820a10ef8cae69c410bcd4 /src/audio_core/audio_renderer.cpp
parentd6f17bdcc9bd3ff73f3c0c544bc6a5c582c3e434 (diff)
Avoid (expensive) audio interpolation when sample rates already match
Diffstat (limited to 'src/audio_core/audio_renderer.cpp')
-rw-r--r--src/audio_core/audio_renderer.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/audio_core/audio_renderer.cpp b/src/audio_core/audio_renderer.cpp
index 2e59894ab4..2683f3a5fa 100644
--- a/src/audio_core/audio_renderer.cpp
+++ b/src/audio_core/audio_renderer.cpp
@@ -285,8 +285,11 @@ void AudioRenderer::VoiceState::RefreshBuffer() {
break;
}
- samples =
- Interpolate(interp_state, std::move(samples), GetInfo().sample_rate, STREAM_SAMPLE_RATE);
+ // Only interpolate when necessary, expensive.
+ if (GetInfo().sample_rate != STREAM_SAMPLE_RATE) {
+ samples = Interpolate(interp_state, std::move(samples), GetInfo().sample_rate,
+ STREAM_SAMPLE_RATE);
+ }
is_refresh_pending = false;
}