X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fport_insert.cc;h=fa09ea05ac8dd11e3b2f2358ebed1b5eb4e81b66;hb=f6d29abfc75c460b9e35717f2907e4e61bf38058;hp=70f88e904f5c25996705aa00e774024baefe2988;hpb=d46acb86eaa3a94fb2dc673964271ecfe0f004dd;p=ardour.git diff --git a/libs/ardour/port_insert.cc b/libs/ardour/port_insert.cc index 70f88e904f..fa09ea05ac 100644 --- a/libs/ardour/port_insert.cc +++ b/libs/ardour/port_insert.cc @@ -19,19 +19,14 @@ #include - -#include "pbd/failed_constructor.h" #include "pbd/xml++.h" -#include "ardour/audioengine.h" #include "ardour/audio_port.h" -#include "ardour/buffer_set.h" +#include "ardour/audioengine.h" #include "ardour/delivery.h" +#include "ardour/io.h" #include "ardour/mtdm.h" -#include "ardour/plugin.h" -#include "ardour/port.h" #include "ardour/port_insert.h" -#include "ardour/route.h" #include "ardour/session.h" #include "ardour/types.h" @@ -49,23 +44,12 @@ PortInsert::name_and_id_new_insert (Session& s, uint32_t& bitslot) } PortInsert::PortInsert (Session& s, boost::shared_ptr pannable, boost::shared_ptr mm) - : IOProcessor (s, true, true, name_and_id_new_insert (s, _bitslot), "") - , _out (new Delivery (s, _output, pannable, mm, _name, Delivery::Insert)) -{ - _mtdm = 0; - _latency_detect = false; - _latency_flush_frames = false; - _measured_latency = 0; -} - -PortInsert::PortInsert (Session& s, const std::string& name, uint32_t bslot, boost::shared_ptr pannable, boost::shared_ptr mm) - : IOProcessor (s, true, true, name, "") + : IOProcessor (s, true, true, name_and_id_new_insert (s, _bitslot), "", DataType::AUDIO, true) , _out (new Delivery (s, _output, pannable, mm, _name, Delivery::Insert)) - , _bitslot (bslot) { _mtdm = 0; _latency_detect = false; - _latency_flush_frames = false; + _latency_flush_frames = 0; _measured_latency = 0; } @@ -78,12 +62,9 @@ PortInsert::~PortInsert () void PortInsert::start_latency_detection () { - if (_mtdm != 0) { - delete _mtdm; - } - - _mtdm = new MTDM; - _latency_flush_frames = false; + delete _mtdm; + _mtdm = new MTDM (_session.frame_rate()); + _latency_flush_frames = 0; _latency_detect = true; _measured_latency = 0; } @@ -91,7 +72,7 @@ PortInsert::start_latency_detection () void PortInsert::stop_latency_detection () { - _latency_flush_frames = signal_latency() + _session.engine().frames_per_cycle(); + _latency_flush_frames = signal_latency() + _session.engine().samples_per_cycle(); _latency_detect = false; } @@ -112,7 +93,7 @@ PortInsert::latency() const */ if (_measured_latency == 0) { - return _session.engine().frames_per_cycle() + _input->latency(); + return _session.engine().samples_per_cycle() + _input->latency(); } else { return _measured_latency; } @@ -134,8 +115,8 @@ PortInsert::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, Sample* out = outbuf.data(); _mtdm->process (nframes, in, out); - - outbuf.set_is_silent (false); + + outbuf.set_written (true); } return; @@ -258,7 +239,7 @@ PortInsert::signal_latency() const */ if (_measured_latency == 0) { - return _session.engine().frames_per_cycle() + _input->signal_latency(); + return _session.engine().samples_per_cycle() + _input->signal_latency(); } else { return _measured_latency; } @@ -268,7 +249,9 @@ PortInsert::signal_latency() const bool PortInsert::configure_io (ChanCount in, ChanCount out) { +#ifndef PLATFORM_WINDOWS assert (!AudioEngine::instance()->process_lock().trylock()); +#endif /* for an insert, processor input corresponds to IO output, and vice versa */ @@ -284,7 +267,7 @@ PortInsert::configure_io (ChanCount in, ChanCount out) } bool -PortInsert::can_support_io_configuration (const ChanCount& in, ChanCount& out) const +PortInsert::can_support_io_configuration (const ChanCount& in, ChanCount& out) { out = in; return true; @@ -315,15 +298,3 @@ PortInsert::deactivate () _out->deactivate (); } - -/** Set up the XML description of a send so that we will not - * reset its name or bitslot during ::set_state() - * @param state XML insert state. - */ - -void -PortInsert::make_unique (XMLNode &state) -{ - state.add_property ("ignore-bitslot", "1"); - state.add_property ("ignore-name", "1"); -}