X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fport_insert.h;h=e96779c63e65f984362147d4e8eaf2052a3d0924;hb=21102b45d0d22f2761697b1b9fdfa92aafc25834;hp=72f02ff9c746de036923f8dd01de3092104ff995;hpb=68e943265edf04e63a8e8b8f62bab20f99d9c637;p=ardour.git diff --git a/libs/ardour/ardour/port_insert.h b/libs/ardour/ardour/port_insert.h index 72f02ff9c7..e96779c63e 100644 --- a/libs/ardour/ardour/port_insert.h +++ b/libs/ardour/ardour/port_insert.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2000,2007 Paul Davis + Copyright (C) 2000,2007 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,47 +24,75 @@ #include #include -#include -#include -#include -#include +#include "ardour/ardour.h" +#include "ardour/io_processor.h" +#include "ardour/delivery.h" +#include "ardour/libardour_visibility.h" +#include "ardour/types.h" class XMLNode; +class MTDM; namespace ARDOUR { class Session; +class IO; +class Delivery; +class MuteMaster; +class Pannable; /** Port inserts: send output to a Jack port, pick up input at a Jack port */ -class PortInsert : public IOProcessor +class LIBARDOUR_API PortInsert : public IOProcessor { - public: - PortInsert (Session&, Placement); - PortInsert (Session&, const XMLNode&); - PortInsert (const PortInsert&); +public: + PortInsert (Session&, boost::shared_ptr, boost::shared_ptr mm); ~PortInsert (); - XMLNode& state(bool full); - XMLNode& get_state(void); - int set_state(const XMLNode&); + int set_state (const XMLNode&, int version); + + void run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_sample, double speed, pframes_t nframes, bool); + + void flush_buffers (samplecnt_t nframes) { + _out->flush_buffers (nframes); + } - void init (); - - void run_in_place (BufferSet& bufs, nframes_t start_frame, nframes_t end_frame, nframes_t nframes, nframes_t offset); + samplecnt_t signal_latency () const; - nframes_t signal_latency() const; - - ChanCount output_streams() const; - ChanCount input_streams() const; + bool set_name (const std::string& name); - bool can_support_io_configuration (const ChanCount& in, ChanCount& out) const { return true; } + bool can_support_io_configuration (const ChanCount& in, ChanCount& out); bool configure_io (ChanCount in, ChanCount out); - uint32_t bit_slot() const { return bitslot; } + void activate (); + void deactivate (); + + void set_pre_fader (bool); + + uint32_t bit_slot() const { return _bitslot; } + + void start_latency_detection (); + void stop_latency_detection (); + + MTDM* mtdm () const { return _mtdm; } + void set_measured_latency (samplecnt_t); + samplecnt_t latency () const; + + static std::string name_and_id_new_insert (Session&, uint32_t&); + +protected: + XMLNode& state (); +private: + /* disallow copy construction */ + PortInsert (const PortInsert&); + + boost::shared_ptr _out; - private: - uint32_t bitslot; + uint32_t _bitslot; + MTDM* _mtdm; + bool _latency_detect; + samplecnt_t _latency_flush_samples; + samplecnt_t _measured_latency; }; } // namespace ARDOUR