diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/audio_unit.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/luaproc.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/lv2_plugin.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/route.h | 1 |
6 files changed, 17 insertions, 3 deletions
diff --git a/libs/ardour/ardour/audio_unit.h b/libs/ardour/ardour/audio_unit.h index b83798fd3e..63bd05b50d 100644 --- a/libs/ardour/ardour/audio_unit.h +++ b/libs/ardour/ardour/audio_unit.h @@ -74,6 +74,8 @@ class LIBARDOUR_API AUPlugin : public ARDOUR::Plugin void set_parameter (uint32_t which, float val); float get_parameter (uint32_t which) const; + PluginOutputConfiguration possible_output () const { return _output_configs; } + int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const; uint32_t nth_parameter (uint32_t which, bool& ok) const; void activate (); @@ -172,6 +174,7 @@ class LIBARDOUR_API AUPlugin : public ARDOUR::Plugin AudioBufferList* buffers; bool _has_midi_input; bool _has_midi_output; + PluginOutputConfiguration _output_configs; /* despite all the cool work that apple did on their AU preset system, they left factory presets and user presets as two diff --git a/libs/ardour/ardour/luaproc.h b/libs/ardour/ardour/luaproc.h index 0f4f8d7d6d..a0f49d61bb 100644 --- a/libs/ardour/ardour/luaproc.h +++ b/libs/ardour/ardour/luaproc.h @@ -63,6 +63,8 @@ public: std::string get_docs () const { return _docs; } std::string get_parameter_docs (uint32_t) const; + PluginOutputConfiguration possible_output () const { return _output_configs; } + std::set<Evoral::Parameter> automatable() const; void activate () { } @@ -140,6 +142,7 @@ private: ChanCount _configured_in; ChanCount _configured_out; + PluginOutputConfiguration _output_configs; bool _has_midi_input; bool _has_midi_output; diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h index f1907e80ae..34e68fdc7f 100644 --- a/libs/ardour/ardour/lv2_plugin.h +++ b/libs/ardour/ardour/lv2_plugin.h @@ -80,7 +80,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const; uint32_t nth_parameter (uint32_t port, bool& ok) const; - IOPortDescription describe_io_port (DataType dt, bool input, uint32_t id); + IOPortDescription describe_io_port (DataType dt, bool input, uint32_t id) const; const void* extension_data (const char* uri) const; diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h index ec749281af..d284c2620d 100644 --- a/libs/ardour/ardour/plugin.h +++ b/libs/ardour/ardour/plugin.h @@ -22,6 +22,7 @@ #include <boost/shared_ptr.hpp> #include <string> +#include <set> #include "pbd/statefuldestructible.h" #include "pbd/controllable.h" @@ -54,6 +55,7 @@ class AutomationControl; typedef boost::shared_ptr<Plugin> PluginPtr; typedef boost::shared_ptr<PluginInfo> PluginInfoPtr; typedef std::list<PluginInfoPtr> PluginInfoList; +typedef std::set<uint32_t> PluginOutputConfiguration; /** A plugin is an external module (usually 3rd party provided) loaded into Ardour * for the purpose of digital signal processing. @@ -124,7 +126,8 @@ class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public Latent bool is_sidechain; }; - virtual IOPortDescription describe_io_port (DataType dt, bool input, uint32_t id); + virtual IOPortDescription describe_io_port (DataType dt, bool input, uint32_t id) const; + virtual PluginOutputConfiguration possible_output () const; virtual void set_automation_control (uint32_t /*port_index*/, boost::shared_ptr<ARDOUR::AutomationControl>) { } diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index aa1164187d..c8f0a84222 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -134,7 +134,8 @@ class LIBARDOUR_API PluginInsert : public Processor } } - ChanCount required_buffers () const { return _required_buffers; } + const ChanCount& required_buffers () const { return _required_buffers; } + const ChanCount& preset_out () const { return _preset_out; } // allow to override output_streams(), implies "Custom Mode" @@ -144,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; } @@ -306,6 +308,7 @@ class LIBARDOUR_API PluginInsert : public Processor ChanCount _configured_internal; // with side-chain ChanCount _configured_out; ChanCount _custom_out; + ChanCount _preset_out; ChanCount _cached_sidechain_pins; ChanCount _required_buffers; @@ -317,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 */ diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 7e7d5d55d4..c8f6005872 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -313,6 +313,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou */ bool customize_plugin_insert (boost::shared_ptr<Processor> proc, uint32_t count, ChanCount outs); bool add_remove_sidechain (boost::shared_ptr<Processor> proc, bool); + bool plugin_preset_output (boost::shared_ptr<Processor> proc, ChanCount outs); /* enable sidechain input for a given processor * |