summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-07-26 22:54:31 +0200
committerRobin Gareus <robin@gareus.org>2017-07-26 22:58:16 +0200
commit28c29ab22dfb13ca185175ed94ba2d27c72489cf (patch)
treed2d7671b6b248b9058621b251894fd65ded5d5d9 /libs/ardour/ardour
parentb804109e8ec24e6c2201e4e317ca91ed01ba5245 (diff)
Fix initial sync to LTC with small buffersizes
Ardour follow_slave() does nothing (not even seek) if the slave is not locked. The LTC-slave assumes it's locked if LTC is stable for 5 continuous process-calls. If the difference of Ardour's transport-position to the LTC-timecode is large (> 2sec), the slave reset itself (assuming drift, seek don't vari- speed). A LTC-slave does reset does reset the locked counter. Hence: If initially Ardour's transport differs > 2 sec and the buffersize is small (many process-callbacks), the slave kept resetting itself never informing Ardour that it locked to the external TC, and Ardour never issued a seek.
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/slave.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/libs/ardour/ardour/slave.h b/libs/ardour/ardour/slave.h
index cf8060d029..80ff208572 100644
--- a/libs/ardour/ardour/slave.h
+++ b/libs/ardour/ardour/slave.h
@@ -364,7 +364,7 @@ public:
bool detect_discontinuity(LTCFrameExt *, int, bool);
bool detect_ltc_fps(int, bool);
bool equal_ltc_frame_time(LTCFrame *a, LTCFrame *b);
- void reset();
+ void reset (bool with_ts = true);
void resync_xrun();
void resync_latency();
void parse_timecode_offset();