summaryrefslogtreecommitdiff
path: root/libs/ardour/ltc_slave.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-03-03 10:26:22 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2019-03-03 10:26:22 -0700
commit920fc665402fda257f6fcc2da7729d4eb5a06190 (patch)
tree0a99651f22259939a9b0d6001931f61c0ce3bd11 /libs/ardour/ltc_slave.cc
parent18f75c9f8afc5c436acedc5fb4b584298beaca3e (diff)
LTC_Slave: count frames since reset
Diffstat (limited to 'libs/ardour/ltc_slave.cc')
-rw-r--r--libs/ardour/ltc_slave.cc19
1 files changed, 12 insertions, 7 deletions
diff --git a/libs/ardour/ltc_slave.cc b/libs/ardour/ltc_slave.cc
index d06452843c..5be4c52c40 100644
--- a/libs/ardour/ltc_slave.cc
+++ b/libs/ardour/ltc_slave.cc
@@ -54,6 +54,7 @@ LTC_TransportMaster::LTC_TransportMaster (std::string const & name)
, samples_per_ltc_frame (0)
, fps_detected (false)
, monotonic_cnt (0)
+ , frames_since_reset (0)
, delayedlocked (10)
, ltc_detect_fps_cnt (0)
, ltc_detect_fps_max (0)
@@ -545,21 +546,25 @@ void
LTC_TransportMaster::pre_process (ARDOUR::pframes_t nframes, samplepos_t now, boost::optional<samplepos_t> session_pos)
{
Sample* in = (Sample*) AudioEngine::instance()->port_engine().get_buffer (_port->port_handle(), nframes);
- sampleoffset_t skip = now - (monotonic_cnt + nframes);
- monotonic_cnt = now;
+ sampleoffset_t skip;
- DEBUG_TRACE (DEBUG::LTC, string_compose ("pre-process - TID:%1 | latency: %2 | skip %3 | session ? %4| last %5 | dir %6 | sp %7\n",
- pthread_name(), ltc_slave_latency.max, skip, (_session ? 'y' : 'n'), current.timestamp, transport_direction, current.speed));
-
- if (current.timestamp == 0) {
+ if (current.timestamp == 0 || frames_since_reset == 0) {
if (delayedlocked < 10) {
++delayedlocked;
}
- } else if (current.speed != 0) {
+ monotonic_cnt = now;
+ skip = 0;
+ } else {
+
+ skip = now - (monotonic_cnt + nframes);
+ monotonic_cnt = now;
}
+ DEBUG_TRACE (DEBUG::LTC, string_compose ("pre-process - TID:%1 | latency: %2 | skip %3 | session ? %4| last %5 | dir %6 | sp %7 | dl %8\n",
+ pthread_name(), ltc_slave_latency.max, skip, (_session ? 'y' : 'n'), current.timestamp, transport_direction, current.speed, delayedlocked));
+
DEBUG_TRACE (DEBUG::LTC, string_compose ("pre-process with audio clock time: %1\n", now));
/* if the audioengine failed to take the process lock, it won't