diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-11 13:02:32 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-11 13:02:32 -0400 |
commit | 91e2eab01abe61be89b1860cdb2d24ca8b22c0bc (patch) | |
tree | 8dc493a55221501c677ac0f34ca3376f4ac6a44a /gtk2_ardour/engine_dialog.cc | |
parent | 18c4c9656a4c8135f97cf74fab1d861b015c6225 (diff) |
make use of measured latency values to set dialog controls, and use actual port latency to compute extra delay
Diffstat (limited to 'gtk2_ardour/engine_dialog.cc')
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 17ff0f7217..873498f6ec 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -249,6 +249,7 @@ and microphone.\n\n\ xopt = AttachOptions(0); lm_measure_button.signal_toggled().connect (sigc::mem_fun (*this, &EngineControl::latency_button_toggled)); + lm_use_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::use_latency_button_clicked)); lm_use_button.set_sensitive (false); lm_table.attach (lm_measure_button, 0, 2, row, row+1, xopt, (AttachOptions) 0); @@ -972,7 +973,10 @@ EngineControl::check_latency_measurement () return false; } - snprintf (buf, sizeof (buf), "%10.3lf frames %10.3lf ms", mtdm->del (), mtdm->del () * 1000.0f/sample_rate); + uint32_t frames_total = mtdm->del(); + uint32_t extra = frames_total - ARDOUR::AudioEngine::instance()->latency_signal_delay(); + + snprintf (buf, sizeof (buf), "%u samples %10.3lf ms", extra, extra * 1000.0f/sample_rate); bool solid = true; @@ -1016,3 +1020,20 @@ EngineControl::latency_button_toggled () update_latency_display (); } } + +void +EngineControl::use_latency_button_clicked () +{ + MTDM* mtdm = ARDOUR::AudioEngine::instance()->mtdm (); + + if (!mtdm) { + return; + } + + uint32_t frames_total = mtdm->del(); + uint32_t extra = frames_total - ARDOUR::AudioEngine::instance()->latency_signal_delay(); + uint32_t one_way = extra/2; + + input_latency_adjustment.set_value (one_way); + output_latency_adjustment.set_value (one_way); +} |