First part of consolidating ::roll(), ::no_roll()
[ardour.git] / libs / ardour / ardour / io.h
index 5511f64dd683b3becf62f58ac146134ab12135f4..ed43341dbb9463c520586466292cf20d14afdf18 100644 (file)
@@ -30,6 +30,7 @@
 #include "pbd/undo.h"
 #include "pbd/statefuldestructible.h"
 #include "pbd/controllable.h"
+#include "pbd/enum_convert.h"
 
 #include "ardour/ardour.h"
 #include "ardour/automation_control.h"
@@ -91,12 +92,13 @@ class LIBARDOUR_API IO : public SessionObject, public Latent
        void set_pretty_name (const std::string& str);
        std::string pretty_name () const { return _pretty_name_prefix; }
 
-       virtual void silence (framecnt_t);
+       virtual void silence (samplecnt_t);
        void increment_port_buffer_offset (pframes_t offset);
 
        int ensure_io (ChanCount cnt, bool clear, void *src);
 
        int connect_ports_to_bundle (boost::shared_ptr<Bundle>, bool exclusive, void *);
+       int connect_ports_to_bundle (boost::shared_ptr<Bundle>, bool, bool, void *);
        int disconnect_ports_from_bundle (boost::shared_ptr<Bundle>, void *);
 
        BundleList bundles_connected ();
@@ -113,8 +115,11 @@ class LIBARDOUR_API IO : public SessionObject, public Latent
        bool connected () const;
        bool physically_connected () const;
 
-       framecnt_t signal_latency () const { return 0; }
-       framecnt_t latency () const;
+       samplecnt_t signal_latency () const { return 0; }
+
+       samplecnt_t latency () const;
+       samplecnt_t public_latency () const;
+       samplecnt_t connected_latency (bool for_playback) const;
 
        PortSet& ports() { return _ports; }
        const PortSet& ports() const { return _ports; }
@@ -194,8 +199,8 @@ class LIBARDOUR_API IO : public SessionObject, public Latent
        /* three utility functions - this just seems to be simplest place to put them */
 
        void collect_input (BufferSet& bufs, pframes_t nframes, ChanCount offset);
-       void process_input (boost::shared_ptr<Processor>, framepos_t start_frame, framepos_t end_frame, pframes_t nframes);
-       void copy_to_outputs (BufferSet& bufs, DataType type, pframes_t nframes, framecnt_t offset);
+       void process_input (boost::shared_ptr<Processor>, samplepos_t start_sample, samplepos_t end_sample, double speed, pframes_t nframes);
+       void copy_to_outputs (BufferSet& bufs, DataType type, pframes_t nframes, samplecnt_t offset);
 
        /* AudioTrack::deprecated_use_diskstream_connections() needs these */
 
@@ -223,15 +228,11 @@ class LIBARDOUR_API IO : public SessionObject, public Latent
                PBD::ScopedConnection changed;
        };
 
-       std::vector<UserBundleInfo*> _bundles_connected; ///< user bundles connected to our ports
-
        static int parse_io_string (const std::string&, std::vector<std::string>& chns);
        static int parse_gain_string (const std::string&, std::vector<std::string>& chns);
 
        int ensure_ports (ChanCount, bool clear, void *src);
 
-       void check_bundles_connected ();
-
        void bundle_changed (Bundle::Change);
 
        int get_port_counts (const XMLNode& node, int version, ChanCount& n, boost::shared_ptr<Bundle>& c);
@@ -258,4 +259,8 @@ class LIBARDOUR_API IO : public SessionObject, public Latent
 
 } // namespace ARDOUR
 
+namespace PBD {
+       DEFINE_ENUM_CONVERT (ARDOUR::IO::Direction)
+}
+
 #endif /*__ardour_io_h__ */