diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-09-14 20:33:57 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-09-16 11:22:17 +1000 |
commit | ccfe3e1015fb75c7575259ec0acb43cf0a51a6bb (patch) | |
tree | 07152da63f310b5f539765650d5a7a8a7c885a87 /libs/backends/alsa/alsa_audiobackend.cc | |
parent | 449b57d583b63507241939540da630511b8e335b (diff) |
Use ARDOUR::DSPLoadCalculator in ALSA Backend
Diffstat (limited to 'libs/backends/alsa/alsa_audiobackend.cc')
-rw-r--r-- | libs/backends/alsa/alsa_audiobackend.cc | 19 |
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)) { |