#include "pbd/signals.h"
+#include "timecode/time.h"
+
#include "ardour/types.h"
#include "midi++/parser.h"
#include "midi++/types.h"
}
};
-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 ();
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;
};
#ifdef HAVE_LTC
-class LTC_Slave : public Slave {
+class LTC_Slave : public TimecodeSlave {
public:
LTC_Slave (Session&);
~LTC_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();
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;
}
return true;
}
+
+Timecode::TimecodeFormat
+MTC_Slave::apparent_timecode_format () const
+{
+ /* XXX to be computed, determined from incoming stream */
+ return timecode_30;
+}