diff options
Diffstat (limited to 'libs/backends/coreaudio/coreaudio_backend.cc')
-rw-r--r-- | libs/backends/coreaudio/coreaudio_backend.cc | 9 |
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; |