summaryrefslogtreecommitdiff
path: root/libs/ardour/ltc_slave.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-01-09 06:02:36 +0100
committerRobin Gareus <robin@gareus.org>2015-01-09 06:08:15 +0100
commit7f72e7d879312e0130bc840566b572b34fe0c591 (patch)
tree2942d5f9aa5da300f52f1e1d2748e37ac6c23f61 /libs/ardour/ltc_slave.cc
parent7235ece8986f335d52d8b76f5135ddb3d794de35 (diff)
fix LTC alignment.
LTC-slave: offset the parsed LTC-frame instead of changing the frame's timestamp. This fixes an issue with freewheel timeout and delta-calculation. Align transport-time with output to match capture alignment: "with existing material". LTC-generator: follow suit. align clock with master-bus out. This is a semi-permanent workaround. Once [tracks feeding] the master-bus is/are delayed to align to output. The generator needs to use (worst_track_latency not worst_playback_latency)
Diffstat (limited to 'libs/ardour/ltc_slave.cc')
-rw-r--r--libs/ardour/ltc_slave.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/libs/ardour/ltc_slave.cc b/libs/ardour/ltc_slave.cc
index 8d570aeeb8..e0da586f3e 100644
--- a/libs/ardour/ltc_slave.cc
+++ b/libs/ardour/ltc_slave.cc
@@ -381,6 +381,8 @@ LTC_Slave::process_ltc(framepos_t const /*now*/)
timecode_negative_offset, timecode_offset
);
+ ltc_frame += ltc_slave_latency.max + session.worst_playback_latency();
+
framepos_t cur_timestamp = frame.off_end + 1;
DEBUG_TRACE (DEBUG::LTC, string_compose ("LTC F: %1 LF: %2 N: %3 L: %4\n", ltc_frame, last_ltc_frame, cur_timestamp, last_timestamp));
if (frame.off_end + 1 <= last_timestamp || last_timestamp == 0) {
@@ -463,7 +465,7 @@ LTC_Slave::speed_and_position (double& speed, framepos_t& pos)
reset();
}
- parse_ltc(nframes, in, now - ltc_slave_latency.max );
+ parse_ltc(nframes, in, now);
process_ltc(now);
}