summaryrefslogtreecommitdiff
path: root/libs/backends/alsa/alsa_audiobackend.cc
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-09-14 20:33:57 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-09-16 11:22:17 +1000
commitccfe3e1015fb75c7575259ec0acb43cf0a51a6bb (patch)
tree07152da63f310b5f539765650d5a7a8a7c885a87 /libs/backends/alsa/alsa_audiobackend.cc
parent449b57d583b63507241939540da630511b8e335b (diff)
Use ARDOUR::DSPLoadCalculator in ALSA Backend
Diffstat (limited to 'libs/backends/alsa/alsa_audiobackend.cc')
-rw-r--r--libs/backends/alsa/alsa_audiobackend.cc19
1 files changed, 6 insertions, 13 deletions
diff --git a/libs/backends/alsa/alsa_audiobackend.cc b/libs/backends/alsa/alsa_audiobackend.cc
index d257cc8eae..dbae2ea05a 100644
--- a/libs/backends/alsa/alsa_audiobackend.cc
+++ b/libs/backends/alsa/alsa_audiobackend.cc
@@ -815,6 +815,8 @@ AlsaAudioBackend::_start (bool for_latency_measurement)
engine.sample_rate_change (_samplerate);
engine.buffer_size_change (_samples_per_period);
+ _dsp_load_calc.set_max_time(_samplerate, _samples_per_period);
+
if (engine.reestablish_ports ()) {
PBD::error << _("AlsaAudioBackend: Could not re-establish ports.") << endmsg;
delete _pcmi; _pcmi = 0;
@@ -1653,11 +1655,10 @@ AlsaAudioBackend::main_process_thread ()
_active = true;
_processed_samples = 0;
- uint64_t clock1, clock2;
+ uint64_t clock1;
_pcmi->pcm_start ();
int no_proc_errors = 0;
const int bailout = 2 * _samplerate / _samples_per_period;
- const int64_t nominal_time = 1e6 * _samples_per_period / _samplerate;
manager.registration_callback();
manager.graph_order_callback();
@@ -1760,17 +1761,9 @@ AlsaAudioBackend::main_process_thread ()
nr -= _samples_per_period;
_processed_samples += _samples_per_period;
- /* calculate DSP load */
- clock2 = g_get_monotonic_time();
- const int64_t elapsed_time = clock2 - clock1;
- // low pass filter
- const float load = elapsed_time / (float) nominal_time;
- if (load > _dsp_load) {
- _dsp_load = load;
- } else {
- const float a = .2 * _samples_per_period / _samplerate;
- _dsp_load = _dsp_load + a * (load - _dsp_load) + 1e-12;
- }
+ _dsp_load_calc.set_start_timestamp_us (clock1);
+ _dsp_load_calc.set_stop_timestamp_us (g_get_monotonic_time());
+ _dsp_load = _dsp_load_calc.get_dsp_load ();
}
if (xrun && (_pcmi->capt_xrun() > 0 || _pcmi->play_xrun() > 0)) {