21 #include "libardour-config.h"
29 #include "ardour/debug.h"
40 PBD::Signal0<void> Port::PortDrop;
42 bool Port::_connecting_blocked =
false;
43 pframes_t Port::_global_port_buffer_offset = 0;
50 #define port_engine AudioEngine::instance()->port_engine()
51 #define port_manager AudioEngine::instance()
55 : _port_buffer_offset (0)
58 , _last_monitor (false)
70 assert (
_name.find_first_of (
':') == std::string::npos);
73 cerr <<
"Failed to register port \"" <<
_name <<
"\", reason is unknown from here\n";
94 "http://jackaudio.org/metadata/pretty-name",
100 if (fallback_to_name) {
201 std::string
const other_fullname =
port_manager->make_port_name_non_relative (other);
202 std::string
const this_fullname =
port_manager->make_port_name_non_relative (
_name);
207 r =
port_engine.disconnect (this_fullname, other_fullname);
209 r =
port_engine.disconnect (other_fullname, this_fullname);
221 if (pself && pother) {
305 (playback ?
"PLAYBACK" :
"CAPTURE")));;
318 "SET PORT %1 playback PRIVATE latency now [%2 - %3]\n",
325 "SET PORT %1 capture PRIVATE latency now [%2 - %3]\n",
341 "GET PORT %1 playback PRIVATE latency now [%2 - %3]\n",
348 "GET PORT %1 capture PRIVATE latency now [%2 - %3]\n",
366 "GET PORT %1: %4 PUBLIC latency range %2 .. %3\n",
377 vector<string> connections;
381 if (!connections.empty()) {
388 for (vector<string>::const_iterator c = connections.begin();
389 c != connections.end(); ++c) {
402 lr =
port_engine.get_latency_range (remote_port, playback);
405 "\t%1 <-> %2 : latter has latency range %3 .. %4\n",
425 "\t%1 <-LOCAL-> %2 : latter has latency range %3 .. %4\n",
522 for (vector<string>::const_iterator i = c.begin(); i != c.end(); ++i) {
540 if ((prop = node.
property (
X_(
"name"))) != 0) {
548 for (XMLNodeList::const_iterator c = children.begin(); c != children.end(); ++c) {
550 if ((*c)->name() !=
X_(
"Connection")) {
554 if ((prop = (*c)->property (
X_(
"other"))) == 0) {
virtual DataType type() const =0
std::string to_string(T t, std::ios_base &(*f)(std::ios_base &))
virtual int set_state(const XMLNode &, int version)
LIBARDOUR_API uint64_t Latency
std::string pretty_name(bool fallback_to_name=false) const
const std::string & value() const
int connect(std::string const &)
virtual XMLNode & get_state(void) const
LIBARDOUR_API uint64_t Ports
bool connected_to(std::string const &) const
PBD::ScopedConnection drop_connection
static std::string state_node_name
const std::string & name() const
bool sends_output() const
std::string _name
port short name
void get_connected_latency_range(LatencyRange &range, bool playback) const
void ensure_input_monitoring(bool)
LIBPBD_API Transmitter error
static PBD::Signal2< void, boost::shared_ptr< Port >, boost::shared_ptr< Port > > PostDisconnect
const XMLNodeList & children(const std::string &str=std::string()) const
void port_renamed(const std::string &, const std::string &)
static bool _connecting_blocked
std::ostream & endmsg(std::ostream &ostr)
static AudioEngine * instance()
bool monitoring_input() const
static PBD::Signal0< void > PortDrop
std::list< XMLNode * > XMLNodeList
LatencyRange _private_playback_latency
void set_public_latency_range(LatencyRange &range, bool playback) const
framecnt_t _port_buffer_offset
bool physically_connected() const
const LatencyRange & private_latency_range(bool playback) const
static const char * state_node_name
XMLProperty * property(const char *)
virtual void cycle_start(pframes_t)
PortEngine::PortHandle _port_handle
#define DEBUG_TRACE(bits, str)
LatencyRange public_latency_range(bool playback) const
int set_name(std::string const &)
XMLProperty * add_property(const char *name, const std::string &value)
void add_child_nocopy(XMLNode &)
int get_connections(std::vector< std::string > &) const
bool receives_input() const
boost::shared_ptr< Port > get_port_by_name(const std::string &)
std::set< std::string > _connections
virtual void increment_port_buffer_offset(pframes_t n)
void request_input_monitoring(bool)
void set_private_latency_range(LatencyRange &range, bool playback)
std::string make_port_name_non_relative(const std::string &name) const
int disconnect(std::string const &)
bool port_is_mine(const std::string &fullname) const
std::string string_compose(const std::string &fmt, const T1 &o1)
LatencyRange _private_capture_latency