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; +}