#ifndef __ardour_port_h__
#define __ardour_port_h__
+#ifdef WAF_BUILD
#include "libardour-config.h"
+#endif
#include <set>
#include <string>
void set_private_latency_range (LatencyRange& range, bool playback);
const LatencyRange& private_latency_range (bool playback) const;
- void set_public_latency_range (LatencyRange& range, bool playback) const;
+ void set_public_latency_range (LatencyRange const& range, bool playback) const;
LatencyRange public_latency_range (bool playback) const;
virtual void reset ();
virtual void realtime_locate () {}
bool physically_connected () const;
+ uint32_t externally_connected () const { return _externally_connected; }
+
+ void increment_external_connections() { _externally_connected++; }
+ void decrement_external_connections() { if (_externally_connected) _externally_connected--; }
PBD::Signal1<void,bool> MonitorInputChanged;
static PBD::Signal2<void,boost::shared_ptr<Port>,boost::shared_ptr<Port> > PostDisconnect;
static PBD::Signal0<void> PortDrop;
static PBD::Signal0<void> PortSignalDrop;
- static void set_cycle_framecnt (pframes_t n) {
- _cycle_nframes = n;
- }
- static framecnt_t port_offset() { return _global_port_buffer_offset; }
+ static void set_speed_ratio (double s);
+ static void set_cycle_samplecnt (pframes_t n);
+
+ static samplecnt_t port_offset() { return _global_port_buffer_offset; }
static void set_global_port_buffer_offset (pframes_t off) {
_global_port_buffer_offset = off;
}
_global_port_buffer_offset += n;
}
- virtual void increment_port_buffer_offset (pframes_t n);
-
virtual XMLNode& get_state (void) const;
virtual int set_state (const XMLNode&, int version);
- static std::string state_node_name;
+ static std::string state_node_name;
+
+ static pframes_t cycle_nframes () { return _cycle_nframes; }
+ static double speed_ratio () { return _speed_ratio; }
protected:
Port (std::string const &, DataType, PortFlags);
- PortEngine::PortHandle _port_handle;
+ PortEngine::PortHandle _port_handle;
- static bool _connecting_blocked;
- static pframes_t _global_port_buffer_offset; /* access only from process() tree */
+ static bool _connecting_blocked;
static pframes_t _cycle_nframes; /* access only from process() tree */
- framecnt_t _port_buffer_offset; /* access only from process() tree */
+ static pframes_t _global_port_buffer_offset; /* access only from process() tree */
LatencyRange _private_playback_latency;
LatencyRange _private_capture_latency;
+ static double _speed_ratio;
+ static const uint32_t _resampler_quality; /* also latency of the resampler */
+
private:
std::string _name; ///< port short name
- PortFlags _flags; ///< flags
+ PortFlags _flags; ///< flags
bool _last_monitor;
+ uint32_t _externally_connected;
/** ports that we are connected to, kept so that we can
reconnect to the backend when required
void port_connected_or_disconnected (boost::weak_ptr<Port>, boost::weak_ptr<Port>, bool);
void signal_drop ();
void drop ();
- PBD::ScopedConnection drop_connection;
+ PBD::ScopedConnectionList drop_connection;
PBD::ScopedConnection engine_connection;
};