diff options
author | Robin Gareus <robin@gareus.org> | 2017-07-26 22:54:31 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-07-26 22:58:16 +0200 |
commit | 28c29ab22dfb13ca185175ed94ba2d27c72489cf (patch) | |
tree | d2d7671b6b248b9058621b251894fd65ded5d5d9 /libs/ardour/ardour | |
parent | b804109e8ec24e6c2201e4e317ca91ed01ba5245 (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.h | 2 |
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(); |