summaryrefslogtreecommitdiff
path: root/libs/backends/coreaudio/coreaudio_backend.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/backends/coreaudio/coreaudio_backend.cc')
-rw-r--r--libs/backends/coreaudio/coreaudio_backend.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/libs/backends/coreaudio/coreaudio_backend.cc b/libs/backends/coreaudio/coreaudio_backend.cc
index 60835e402b..94c179ab28 100644
--- a/libs/backends/coreaudio/coreaudio_backend.cc
+++ b/libs/backends/coreaudio/coreaudio_backend.cc
@@ -1584,7 +1584,14 @@ CoreAudioBackend::process_callback (const uint32_t n_samples, const uint64_t hos
/* calc DSP load. */
clock2 = g_get_monotonic_time();
const int64_t elapsed_time = clock2 - clock1;
- _dsp_load = elapsed_time / nominal_time;
+ // low pass filter
+ const float load = elapsed_time / (float) nominal_time;
+ if (load > _dsp_load) {
+ _dsp_load = load;
+ } else {
+ const float a = .1 * _samples_per_period / _samplerate;
+ _dsp_load = _dsp_load + a * (load - _dsp_load) + 1e-12;
+ }
pthread_mutex_unlock (&_process_callback_mutex);
return 0;