summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-05-15 00:52:54 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-05-15 00:52:54 +0000
commitcb78405ec29e8648839a25861179da9102b69c72 (patch)
tree7691ccd053acda822f3af5921da58a84a07282b1 /libs/ardour/ardour
parent3ecc9b4f75b6201efdf5550421423861191d79ec (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.h32
-rw-r--r--libs/ardour/ardour/insert.h10
-rw-r--r--libs/ardour/ardour/plugin.h7
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&);