#include <string>
-
-#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"
}
PortInsert::PortInsert (Session& s, boost::shared_ptr<Pannable> pannable, boost::shared_ptr<MuteMaster> mm)
- : IOProcessor (s, true, true, name_and_id_new_insert (s, _bitslot), "")
+ : IOProcessor (s, true, true, name_and_id_new_insert (s, _bitslot), "", DataType::AUDIO, true)
, _out (new Delivery (s, _output, pannable, mm, _name, Delivery::Insert))
{
_mtdm = 0;
_latency_detect = false;
- _latency_flush_frames = false;
+ _latency_flush_frames = 0;
_measured_latency = 0;
}
}
void
-PortInsert::start_latency_detection ()
+PortInsert::set_pre_fader (bool p)
{
- if (_mtdm != 0) {
- delete _mtdm;
- }
+ Processor::set_pre_fader (p);
+ _out->set_pre_fader (p);
+}
- _mtdm = new MTDM;
- _latency_flush_frames = false;
+void
+PortInsert::start_latency_detection ()
+{
+ delete _mtdm;
+ _mtdm = new MTDM (_session.frame_rate());
+ _latency_flush_frames = 0;
_latency_detect = true;
_measured_latency = 0;
}
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;
}
*/
if (_measured_latency == 0) {
- return _session.engine().frames_per_cycle() + _input->latency();
+ return _session.engine().samples_per_cycle() + _input->latency();
} else {
return _measured_latency;
}
_mtdm->process (nframes, in, out);
- outbuf.set_is_silent (false);
+ outbuf.set_written (true);
}
return;
node.add_property ("type", "port");
snprintf (buf, sizeof (buf), "%" PRIu32, _bitslot);
node.add_property ("bitslot", buf);
- snprintf (buf, sizeof (buf), "%" PRId64, _measured_latency);
- node.add_property("latency", buf);
- snprintf (buf, sizeof (buf), "%u", _session.get_block_size());
- node.add_property("block_size", buf);
+ snprintf (buf, sizeof (buf), "%" PRId64, _measured_latency);
+ node.add_property("latency", buf);
+ snprintf (buf, sizeof (buf), "%u", _session.get_block_size());
+ node.add_property("block-size", buf);
return node;
}
XMLNodeList nlist = node.children();
XMLNodeIterator niter;
XMLPropertyList plist;
- const XMLProperty *prop;
+ XMLProperty const * prop;
const XMLNode* insert_node = &node;
return -1;
}
- uint32_t blocksize = 0;
- if ((prop = node.property ("block_size")) != 0) {
- sscanf (prop->value().c_str(), "%u", &blocksize);
- }
+ uint32_t blocksize = 0;
+ if ((prop = node.property ("block-size")) != 0) {
+ sscanf (prop->value().c_str(), "%u", &blocksize);
+ }
- //if the jack period is the same as when the value was saved, we can recall our latency..
- if ( (_session.get_block_size() == blocksize) && (prop = node.property ("latency")) != 0) {
- uint32_t latency = 0;
- sscanf (prop->value().c_str(), "%u", &latency);
- _measured_latency = latency;
- }
+ //if the jack period is the same as when the value was saved, we can recall our latency..
+ if ( (_session.get_block_size() == blocksize) && (prop = node.property ("latency")) != 0) {
+ uint32_t latency = 0;
+ sscanf (prop->value().c_str(), "%u", &latency);
+ _measured_latency = latency;
+ }
if (!node.property ("ignore-bitslot")) {
if ((prop = node.property ("bitslot")) == 0) {
*/
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;
}
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 */
}
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;