summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/audio_unit.h3
-rw-r--r--libs/ardour/ardour/luaproc.h3
-rw-r--r--libs/ardour/ardour/lv2_plugin.h2
-rw-r--r--libs/ardour/ardour/plugin.h5
-rw-r--r--libs/ardour/ardour/plugin_insert.h6
-rw-r--r--libs/ardour/ardour/route.h1
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
*