basics for a TimecodeSlave parent class for MTC and LTC
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 12 Oct 2012 16:48:53 +0000 (16:48 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 12 Oct 2012 16:48:53 +0000 (16:48 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@13258 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/slave.h
libs/ardour/ltc_slave.cc
libs/ardour/mtc_slave.cc

index b64ba3f42ea43260d67f2629c777f1c1f2f2dfef..fa75ba17bb7ee2eb8234e257e6843923d0e00927 100644 (file)
@@ -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();
index cc86189d8c36c4f7ebda800be1f12985d6bfc153..51fa1814142dfbf27fb8cc879ae3eb061d701ad6 100644 (file)
@@ -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;
 }
index 1191a4f0b452758d7c584887a46f92aceeff8aaa..49178614f76286f192a908986c89aced7115c1d5 100644 (file)
@@ -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;
+}