#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 ()
{
- 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;
}
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;
}
Sample* out = outbuf.data();
_mtdm->process (nframes, in, out);
-
- outbuf.set_is_silent (false);
+
+ outbuf.set_written (true);
}
return;
*/
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;