From 76eb2f23d634ed8880f69b066318e6bd0e9d0d4b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 12 Oct 2012 16:48:53 +0000 Subject: [PATCH] basics for a TimecodeSlave parent class for MTC and LTC git-svn-id: svn://localhost/ardour2/branches/3.0@13258 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/slave.h | 17 +++++++++++++++-- libs/ardour/ltc_slave.cc | 9 +++++++++ libs/ardour/mtc_slave.cc | 7 +++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/libs/ardour/ardour/slave.h b/libs/ardour/ardour/slave.h index b64ba3f42e..fa75ba17bb 100644 --- a/libs/ardour/ardour/slave.h +++ b/libs/ardour/ardour/slave.h @@ -28,6 +28,8 @@ #include "pbd/signals.h" +#include "timecode/time.h" + #include "ardour/types.h" #include "midi++/parser.h" #include "midi++/types.h" @@ -223,7 +225,14 @@ struct SafeTime { } }; -class MTC_Slave : public Slave { +class TimecodeSlave : public Slave { + public: + TimecodeSlave () {} + + virtual Timecode::TimecodeFormat apparent_timecode_format() const = 0; +}; + +class MTC_Slave : public TimecodeSlave { public: MTC_Slave (Session&, MIDI::Port&); ~MTC_Slave (); @@ -240,6 +249,8 @@ class MTC_Slave : public Slave { framecnt_t seekahead_distance() const; bool give_slave_full_control_over_transport_speed() const; + Timecode::TimecodeFormat apparent_timecode_format() const; + private: Session& session; MIDI::Port* port; @@ -298,7 +309,7 @@ class MTC_Slave : public Slave { }; #ifdef HAVE_LTC -class LTC_Slave : public Slave { +class LTC_Slave : public TimecodeSlave { public: LTC_Slave (Session&); ~LTC_Slave (); @@ -313,6 +324,8 @@ class LTC_Slave : public Slave { framecnt_t seekahead_distance() const; bool give_slave_full_control_over_transport_speed() const; + Timecode::TimecodeFormat apparent_timecode_format() 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(); diff --git a/libs/ardour/ltc_slave.cc b/libs/ardour/ltc_slave.cc index cc86189d8c..51fa181414 100644 --- a/libs/ardour/ltc_slave.cc +++ b/libs/ardour/ltc_slave.cc @@ -172,4 +172,13 @@ LTC_Slave::speed_and_position (double& speed, framepos_t& pos) speed = ltc_speed; monotonic_fcnt += nframes; + + return true; +} + +Timecode::TimecodeFormat +LTC_Slave::apparent_timecode_format () const +{ + /* XXX to be computed, determined from incoming stream */ + return timecode_30; } diff --git a/libs/ardour/mtc_slave.cc b/libs/ardour/mtc_slave.cc index 1191a4f0b4..49178614f7 100644 --- a/libs/ardour/mtc_slave.cc +++ b/libs/ardour/mtc_slave.cc @@ -615,3 +615,10 @@ MTC_Slave::speed_and_position (double& speed, framepos_t& pos) return true; } + +Timecode::TimecodeFormat +MTC_Slave::apparent_timecode_format () const +{ + /* XXX to be computed, determined from incoming stream */ + return timecode_30; +} -- 2.30.2