summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-10-12 16:48:53 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-10-12 16:48:53 +0000
commit76eb2f23d634ed8880f69b066318e6bd0e9d0d4b (patch)
tree9e49bfb00e5b5202c25c58e9beb5f41fa98b7c1e
parent5a8e83e0deef37e2973879a46af21487912b2c59 (diff)
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
-rw-r--r--libs/ardour/ardour/slave.h17
-rw-r--r--libs/ardour/ltc_slave.cc9
-rw-r--r--libs/ardour/mtc_slave.cc7
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;
+}