summaryrefslogtreecommitdiff
path: root/libs/ardour/session_process.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-07-27 14:59:22 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2017-09-18 11:40:53 -0400
commit38e94875647782fa6c28e25be471f0cff6c97d2a (patch)
tree01936c69cb9bbb52e765f1ea457ecc2058b59424 /libs/ardour/session_process.cc
parente9dd575ca573e7bfc1226d4d7edfbfe3de8debd4 (diff)
when calculating average slave/master delta, use absolute value.
We're interested in average distance between slave/master, the direction is irrelevant and using sign as direction causes the computed average to be absurd
Diffstat (limited to 'libs/ardour/session_process.cc')
-rw-r--r--libs/ardour/session_process.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc
index b9af7c5ad6..badddf2fba 100644
--- a/libs/ardour/session_process.cc
+++ b/libs/ardour/session_process.cc
@@ -598,7 +598,7 @@ Session::follow_slave (pframes_t nframes)
*/
if (_slave_state == Running) {
- calculate_moving_average_of_slave_delta(dir, this_delta);
+ calculate_moving_average_of_slave_delta(dir, abs(this_delta));
}
}
@@ -651,8 +651,8 @@ Session::follow_slave (pframes_t nframes)
slave_speed));
}
- if (!actively_recording() && (framecnt_t) abs(average_slave_delta) > _slave->resolution()) {
- DEBUG_TRACE (DEBUG::Slave, string_compose ("average slave delta %1 greater than slave resolution %2 => silent motion\n", abs(average_slave_delta), _slave->resolution()));
+ if (!actively_recording() && (framecnt_t) average_slave_delta > _slave->resolution()) {
+ DEBUG_TRACE (DEBUG::Slave, string_compose ("average slave delta %1 greater than slave resolution %2 => silent motion\n", average_slave_delta, _slave->resolution()));
/* run routes as normal, but no disk output */
cerr << "sync too far apart " << average_slave_delta << ", NO disk audio for now\n";
DiskReader::set_no_disk_output (true);
@@ -709,7 +709,7 @@ Session::calculate_moving_average_of_slave_delta (int dir, framecnt_t this_delta
average_slave_delta /= (int32_t) delta_accumulator_size;
if (average_slave_delta < 0L) {
average_dir = -1;
- average_slave_delta = abs(average_slave_delta);
+ average_slave_delta = average_slave_delta;
} else {
average_dir = 1;
}