diff options
author | Robin Gareus <robin@gareus.org> | 2014-10-11 15:00:52 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-10-11 15:00:52 +0200 |
commit | 250ea066efad08f3059b83ff275a45a921770c2c (patch) | |
tree | 2810e7f74ab2bdf7fb3fdca227d8229e2ffe9614 /libs/ardour/session_ltc.cc | |
parent | 8525a0b258a02bec0628958a39c8cebeedded9a7 (diff) |
revert 8ca546e - original version was correct (note added)
Diffstat (limited to 'libs/ardour/session_ltc.cc')
-rw-r--r-- | libs/ardour/session_ltc.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/libs/ardour/session_ltc.cc b/libs/ardour/session_ltc.cc index 1c05f61b22..1ac2681641 100644 --- a/libs/ardour/session_ltc.cc +++ b/libs/ardour/session_ltc.cc @@ -244,13 +244,26 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end /* port latency compensation: * The _generated timecode_ is offset by the port-latency, * therefore the offset depends on the direction of transport. + * + * latency is compensated by adding it to the timecode to + * be generated. e.g. if the signal will reach the output in + * N samples time from now, generate the timecode for (now + N). + * + * sample-sync is achieved by further calculating the difference + * between the timecode and the session-transport and offsetting the + * buffer. + * + * The timecode is generated directly in the Session process callback + * using _transport_frame. It requires that the session has set the + * port's playback latency to worst_playback_latency() prior to + * calling ltc_tx_send_time_code_for_cycle(). */ framepos_t cycle_start_frame; if (current_speed < 0) { - cycle_start_frame = (start_frame + ltc_out_latency.max); - } else if (current_speed > 0) { cycle_start_frame = (start_frame - ltc_out_latency.max); + } else if (current_speed > 0) { + cycle_start_frame = (start_frame + ltc_out_latency.max); } else { /* There is no need to compensate for latency when not rolling * rather send the accurate NOW timecode |