diff options
author | Carl Hetherington <carl@carlh.net> | 2011-09-26 18:04:02 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-09-26 18:04:02 +0000 |
commit | 8f46b0dc4bbc54d0b6072376712654f69b36c4fa (patch) | |
tree | feac01d52c10c1ec367075e3cbfe340b2d5a8877 /libs/ardour/ardour/plugin_insert.h | |
parent | fa9e3b3165f3a788a66d8ee18d77e624208fa3b2 (diff) |
Tidy up PluginInsert's handling of how it chooses to map plugin IO to that of the insert.
git-svn-id: svn://localhost/ardour2/branches/3.0@10125 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/plugin_insert.h')
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index e86e620273..e860dbd331 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -120,13 +120,25 @@ class PluginInsert : public Processor void collect_signal_for_analysis (framecnt_t nframes); bool splitting () const { - return _splitting; + return _matching_method == Split; } PBD::Signal2<void,BufferSet*, BufferSet*> AnalysisDataGathered; /** Emitted when the return value of splitting () has changed */ PBD::Signal0<void> SplittingChanged; + /** Enumeration of the ways in which we can match our insert's + * IO to that of the plugin(s). + */ + enum MatchingMethod { + Impossible, ///< we can't + Delegate, ///< we are delegating to the plugin, and it can handle it + NoInputs, ///< plugin has no inputs, so anything goes + ExactMatch, ///< the insert's inputs are the same as the plugin's + Replicate, ///< we have multiple instances of the plugin + Split, ///< we copy one of the insert's inputs to multiple plugin inputs + }; + private: /* disallow copy construction */ PluginInsert (const PluginInsert&); @@ -149,10 +161,10 @@ class PluginInsert : public Processor BufferSet _signal_analysis_inputs; BufferSet _signal_analysis_outputs; - /** true if we are splitting one processor input to >1 plugin inputs */ - bool _splitting; + std::pair<MatchingMethod, int32_t> private_can_support_io_configuration (ChanCount const &, ChanCount &) const; - void set_splitting (bool); + /** matching method currently being used */ + MatchingMethod _matching_method; void automation_run (BufferSet& bufs, pframes_t nframes); void connect_and_run (BufferSet& bufs, pframes_t nframes, framecnt_t offset, bool with_auto, framepos_t now = 0); @@ -162,8 +174,6 @@ class PluginInsert : public Processor void set_parameter_state_2X (const XMLNode& node, int version); void set_control_ids (const XMLNode&, int version); - int32_t count_for_configuration (ChanCount in, ChanCount out) const; - boost::shared_ptr<Plugin> plugin_factory (boost::shared_ptr<Plugin>); void add_plugin_with_activation (boost::shared_ptr<Plugin>); void add_plugin (boost::shared_ptr<Plugin>); |