diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-05-15 00:52:54 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-05-15 00:52:54 +0000 |
commit | cb78405ec29e8648839a25861179da9102b69c72 (patch) | |
tree | 7691ccd053acda822f3af5921da58a84a07282b1 /libs/ardour/ardour | |
parent | 3ecc9b4f75b6201efdf5550421423861191d79ec (diff) |
lots and lots of work to correctly deduce AU IO configurations and related issues
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3349 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/audio_unit.h | 32 | ||||
-rw-r--r-- | libs/ardour/ardour/insert.h | 10 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin.h | 7 |
3 files changed, 25 insertions, 24 deletions
diff --git a/libs/ardour/ardour/audio_unit.h b/libs/ardour/ardour/audio_unit.h index 98bda912f7..07986782e2 100644 --- a/libs/ardour/ardour/audio_unit.h +++ b/libs/ardour/ardour/audio_unit.h @@ -99,11 +99,10 @@ class AUPlugin : public ARDOUR::Plugin bool has_editor () const; - bool fixed_io() const { return false; } - int32_t can_support_input_configuration (int32_t in); - int32_t compute_output_streams (int32_t nplugins); + int32_t can_do (int32_t in, int32_t& out); uint32_t output_streams() const; uint32_t input_streams() const; + int32_t configure_io (int32_t in, int32_t out); boost::shared_ptr<CAAudioUnit> get_au () { return unit; } boost::shared_ptr<CAComponent> get_comp () const { return comp; } @@ -117,18 +116,19 @@ class AUPlugin : public ARDOUR::Plugin boost::shared_ptr<CAComponent> comp; boost::shared_ptr<CAAudioUnit> unit; - AudioStreamBasicDescription streamFormat; bool initialized; - int format_set; + int32_t input_channels; + int32_t output_channels; + std::vector<std::pair<int,int> > io_configs; AudioBufferList* buffers; UInt32 global_elements; UInt32 output_elements; UInt32 input_elements; - int set_output_format (); - int set_input_format (); - int set_stream_format (int scope, uint32_t cnt); + int set_output_format (AudioStreamBasicDescription&); + int set_input_format (AudioStreamBasicDescription&); + int set_stream_format (int scope, uint32_t cnt, AudioStreamBasicDescription&); int _set_block_size (nframes_t nframes); void discover_parameters (); @@ -156,23 +156,29 @@ class AUPluginInfo : public PluginInfo { PluginPtr load (Session& session); + AUPluginCachedInfo cache; + static PluginInfoList discover (); static void get_names (CAComponentDescription&, std::string& name, Glib::ustring& maker); static std::string stringify_descriptor (const CAComponentDescription&); + static int load_cached_info (); + private: boost::shared_ptr<CAComponentDescription> descriptor; + UInt32 version; static void discover_music (PluginInfoList&); static void discover_fx (PluginInfoList&); static void discover_by_description (PluginInfoList&, CAComponentDescription&); + static Glib::ustring au_cache_path (); - static std::map<std::string,AUPluginCachedInfo> cached_info; - - static bool cached_io_configuration (std::string, CAComponentDescription&, AUPluginCachedInfo&); - static void add_cached_info (AUPluginCachedInfo&); + typedef std::map<std::string,AUPluginCachedInfo> CachedInfoMap; + static CachedInfoMap cached_info; + + static bool cached_io_configuration (const std::string&, UInt32, CAComponent&, AUPluginCachedInfo&, const std::string& name); + static void add_cached_info (const std::string&, AUPluginCachedInfo&); static void save_cached_info (); - static int load_cached_info (); }; typedef boost::shared_ptr<AUPluginInfo> AUPluginInfoPtr; diff --git a/libs/ardour/ardour/insert.h b/libs/ardour/ardour/insert.h index dd2d06c06f..8691a292b1 100644 --- a/libs/ardour/ardour/insert.h +++ b/libs/ardour/ardour/insert.h @@ -53,9 +53,8 @@ class Insert : public Redirect virtual void activate () {} virtual void deactivate () {} - virtual int32_t can_support_input_configuration (int32_t in) const = 0; + virtual int32_t can_do (int32_t in, int32_t& out) = 0; virtual int32_t configure_io (int32_t magic, int32_t in, int32_t out) = 0; - virtual int32_t compute_output_streams (int32_t cnt) const = 0; }; class PortInsert : public Insert @@ -78,10 +77,8 @@ class PortInsert : public Insert uint32_t output_streams() const; uint32_t input_streams() const; - int32_t can_support_input_configuration (int32_t) const; + int32_t can_do (int32_t, int32_t& out); int32_t configure_io (int32_t magic, int32_t in, int32_t out); - int32_t compute_output_streams (int32_t cnt) const; - uint32_t bit_slot() const { return bitslot; } private: @@ -117,9 +114,8 @@ class PluginInsert : public Insert int set_count (uint32_t num); uint32_t get_count () const { return _plugins.size(); } - int32_t can_support_input_configuration (int32_t) const; + int32_t can_do (int32_t, int32_t& out); int32_t configure_io (int32_t magic, int32_t in, int32_t out); - int32_t compute_output_streams (int32_t cnt) const; bool is_generator() const; diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h index 869a0f395c..abf2867dec 100644 --- a/libs/ardour/ardour/plugin.h +++ b/libs/ardour/ardour/plugin.h @@ -143,12 +143,11 @@ class Plugin : public PBD::StatefulDestructible sigc::signal<void,uint32_t,float> ParameterChanged; - virtual bool fixed_io() const { return true; } - virtual int32_t can_support_input_configuration (int32_t in); - virtual int32_t compute_output_streams (int32_t nplugins); + virtual int32_t can_do (int32_t in, int32_t& out); virtual uint32_t output_streams() const; virtual uint32_t input_streams() const; - + virtual int32_t configure_io (int32_t in, int32_t out); + PBD::Controllable *get_nth_control (uint32_t, bool do_not_create = false); void make_nth_control (uint32_t, const XMLNode&); |