From bce3184ff5383f47675a97a8184f7739552cb04e Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 12 Oct 2012 09:45:22 +0000 Subject: skeleton framework for LTC-slave git-svn-id: svn://localhost/ardour2/branches/3.0@13256 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/slave.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'libs/ardour/ardour/slave.h') diff --git a/libs/ardour/ardour/slave.h b/libs/ardour/ardour/slave.h index a8bf28b8ce..b64ba3f42e 100644 --- a/libs/ardour/ardour/slave.h +++ b/libs/ardour/ardour/slave.h @@ -32,6 +32,10 @@ #include "midi++/parser.h" #include "midi++/types.h" +#ifdef HAVE_LTC +#include +#endif + namespace MIDI { class Port; } @@ -293,6 +297,39 @@ class MTC_Slave : public Slave { void init_engine_dll (framepos_t, framepos_t); }; +#ifdef HAVE_LTC +class LTC_Slave : public Slave { + public: + LTC_Slave (Session&); + ~LTC_Slave (); + + bool speed_and_position (double&, framepos_t&); + + bool locked() const; + bool ok() const; + + framecnt_t resolution () const; + bool requires_seekahead () const { return true; } + framecnt_t seekahead_distance() const; + bool give_slave_full_control_over_transport_speed() const; + + private: + int parse_ltc(const jack_nframes_t nframes, const jack_default_audio_sample_t * const in, const framecnt_t posinfo); + void process_ltc(); + + Session& session; + bool did_reset_tc_format; + Timecode::TimecodeFormat saved_tc_format; + + LTCDecoder *decoder; + framecnt_t current_frames_per_ltc_frame; + framecnt_t monotonic_fcnt; + + framepos_t ltc_transport_pos; + double ltc_speed; +}; +#endif + class MIDIClock_Slave : public Slave { public: MIDIClock_Slave (Session&, MIDI::Port&, int ppqn = 24); -- cgit v1.2.3