variable plugin port config.
[ardour.git] / libs / ardour / ardour / plugin_insert.h
index 2064696800c77d825a635dc2adaa76955cfc2535..c8f0a84222e391f5f2536a4a4dc1db5c798490c1 100644 (file)
@@ -28,6 +28,7 @@
 #include "ardour/ardour.h"
 #include "ardour/libardour_visibility.h"
 #include "ardour/chan_mapping.h"
+#include "ardour/fixed_delay.h"
 #include "ardour/io.h"
 #include "ardour/types.h"
 #include "ardour/parameter_descriptor.h"
@@ -133,6 +134,9 @@ class LIBARDOUR_API PluginInsert : public Processor
                }
        }
 
+       const ChanCount& required_buffers () const { return _required_buffers; }
+       const ChanCount& preset_out () const { return _preset_out; }
+
        // allow to override output_streams(), implies "Custom Mode"
 
        // only the owning route may call these (with process lock held)
@@ -141,6 +145,7 @@ class LIBARDOUR_API PluginInsert : public Processor
        void set_outputs    (const ChanCount&);
        void set_strict_io  (bool b);
        void set_custom_cfg (bool b);
+       bool set_preset_out (const ChanCount&);
        bool add_sidechain  (uint32_t n_audio = 1);
        bool del_sidechain ();
        boost::shared_ptr<SideChain> sidechain () const { return _sidechain; }
@@ -155,7 +160,7 @@ class LIBARDOUR_API PluginInsert : public Processor
 
        bool has_no_inputs() const;
        bool has_no_audio_inputs() const;
-       bool is_midi_instrument() const;
+       bool needs_midi_input() const;
 
        void realtime_handle_transport_stopped ();
        void realtime_locate ();
@@ -206,6 +211,8 @@ class LIBARDOUR_API PluginInsert : public Processor
                }
        }
 
+       framecnt_t plugin_latency () const;
+
        bool has_sidechain () const {
                return _sidechain ? true : false;
        }
@@ -295,11 +302,15 @@ class LIBARDOUR_API PluginInsert : public Processor
        BufferSet _signal_analysis_inputs;
        BufferSet _signal_analysis_outputs;
 
+       FixedDelay _delaybuffers;
+
        ChanCount _configured_in;
        ChanCount _configured_internal; // with side-chain
        ChanCount _configured_out;
        ChanCount _custom_out;
+       ChanCount _preset_out;
        ChanCount _cached_sidechain_pins;
+       ChanCount _required_buffers;
 
        bool _configured;
        bool _no_inplace;
@@ -309,6 +320,7 @@ class LIBARDOUR_API PluginInsert : public Processor
        bool _mapping_changed;
 
        Match private_can_support_io_configuration (ChanCount const &, ChanCount &) const;
+       Match internal_can_support_io_configuration (ChanCount const &, ChanCount &) const;
        Match automatic_can_support_io_configuration (ChanCount const &, ChanCount &) const;
 
        /** details of the match currently being used */
@@ -332,6 +344,9 @@ class LIBARDOUR_API PluginInsert : public Processor
 
        void start_touch (uint32_t param_id);
        void end_touch (uint32_t param_id);
+
+       void latency_changed (framecnt_t, framecnt_t);
+       bool _latency_changed;
 };
 
 } // namespace ARDOUR