X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fport.h;h=96c18442b7d77be42c4697b90ec5c4509e31ef8f;hb=e2757229a74a17a76682b6c72868d8e4822b7678;hp=45256a61fec0791d2aed6f33ea6754617ca4ea61;hpb=01c253b61b3130d13f9e30f17683e0f8a93b4696;p=ardour.git diff --git a/libs/ardour/ardour/port.h b/libs/ardour/ardour/port.h index 45256a61fe..96c18442b7 100644 --- a/libs/ardour/ardour/port.h +++ b/libs/ardour/ardour/port.h @@ -20,6 +20,8 @@ #ifndef __ardour_port_h__ #define __ardour_port_h__ +#include "libardour-config.h" + #include #include #include @@ -45,13 +47,10 @@ public: virtual ~Port (); - static void set_buffer_size (pframes_t sz) { - _buffer_size = sz; - } - static void set_connecting_blocked( bool yn ) { + static void set_connecting_blocked( bool yn ) { _connecting_blocked = yn; } - static bool connecting_blocked() { + static bool connecting_blocked() { return _connecting_blocked; } @@ -93,61 +92,81 @@ public: void ensure_monitor_input (bool); bool monitoring_input () const; - framecnt_t total_latency () const; int reestablish (); int reconnect (); void request_monitor_input (bool); - void set_latency (framecnt_t); - - void get_connected_latency_range (jack_latency_range_t& range, jack_latency_callback_mode_t mode) const; - void set_latency_range (jack_latency_range_t& range, jack_latency_callback_mode_t mode) const; - virtual void reset (); + bool last_monitor() const { return _last_monitor; } + void set_last_monitor (bool yn) { _last_monitor = yn; } + + jack_port_t* jack_port() const { return _jack_port; } + + void get_connected_latency_range (jack_latency_range_t& range, bool playback) const; - /** @return the size of the raw buffer (bytes) for duration @a nframes (audio frames) */ - virtual size_t raw_buffer_size (pframes_t nframes) const = 0; + void set_private_latency_range (jack_latency_range_t& range, bool playback); + const jack_latency_range_t& private_latency_range (bool playback) const; + + void set_public_latency_range (jack_latency_range_t& range, bool playback) const; + jack_latency_range_t public_latency_range (bool playback) const; + + virtual void reset (); virtual DataType type () const = 0; - virtual void cycle_start (pframes_t) = 0; + virtual void cycle_start (pframes_t); virtual void cycle_end (pframes_t) = 0; virtual void cycle_split () = 0; - virtual Buffer& get_buffer (framecnt_t nframes, framecnt_t offset = 0) = 0; - virtual void flush_buffers (pframes_t nframes, framepos_t /*time*/, framecnt_t offset = 0) { - assert (offset < nframes); - } + virtual Buffer& get_buffer (pframes_t nframes) = 0; + virtual void flush_buffers (pframes_t /*nframes*/, framepos_t /*time*/) {} virtual void transport_stopped () {} + virtual void realtime_locate () {} - bool physically_connected () const; + bool physically_connected () const; static void set_engine (AudioEngine *); PBD::Signal1 MonitorInputChanged; + + static void set_cycle_framecnt (pframes_t n) { + _cycle_nframes = n; + } + static framecnt_t port_offset() { return _global_port_buffer_offset; } + static void set_global_port_buffer_offset (pframes_t off) { + _global_port_buffer_offset = off; + } + static void increment_global_port_buffer_offset (pframes_t n) { + _global_port_buffer_offset += n; + } + + virtual void increment_port_buffer_offset (pframes_t n); + protected: Port (std::string const &, DataType, Flags); jack_port_t* _jack_port; ///< JACK port - static pframes_t _buffer_size; static bool _connecting_blocked; - - static AudioEngine* _engine; ///< the AudioEngine + static pframes_t _global_port_buffer_offset; /* access only from process() tree */ + static pframes_t _cycle_nframes; /* access only from process() tree */ -private: - friend class AudioEngine; + framecnt_t _port_buffer_offset; /* access only from process() tree */ - void recompute_total_latency () const; + jack_latency_range_t _private_playback_latency; + jack_latency_range_t _private_capture_latency; - /* XXX */ - bool _last_monitor; + static AudioEngine* _engine; ///< the AudioEngine +private: std::string _name; ///< port short name Flags _flags; ///< flags + bool _last_monitor; /** ports that we are connected to, kept so that we can - reconnect to JACK when required */ + reconnect to JACK when required + */ std::set _connections; + }; }