diff options
author | Robin Gareus <robin@gareus.org> | 2015-01-09 06:02:36 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-01-09 06:08:15 +0100 |
commit | 7f72e7d879312e0130bc840566b572b34fe0c591 (patch) | |
tree | 2942d5f9aa5da300f52f1e1d2748e37ac6c23f61 /libs/ardour/ltc_slave.cc | |
parent | 7235ece8986f335d52d8b76f5135ddb3d794de35 (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.cc | 4 |
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); } |