diff options
author | David Robillard <d@drobilla.net> | 2006-08-10 01:22:45 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-08-10 01:22:45 +0000 |
commit | ab6f1ed9bafa869648b6e94ee5186ff317b32c3e (patch) | |
tree | d61dba7f9b6f1ae755803afc4b79bcff06a36005 /libs/ardour/plugin.cc | |
parent | 38c7d34d8c449c7ce5f7da9575c24e60c6b31b1a (diff) |
Merged with trunk R776
git-svn-id: svn://localhost/ardour2/branches/midi@777 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/plugin.cc')
-rw-r--r-- | libs/ardour/plugin.cc | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/libs/ardour/plugin.cc b/libs/ardour/plugin.cc index 6763e7f508..8ea95b8903 100644 --- a/libs/ardour/plugin.cc +++ b/libs/ardour/plugin.cc @@ -39,6 +39,8 @@ #include <ardour/session.h> #include <ardour/audioengine.h> #include <ardour/plugin.h> +#include <ardour/ladspa_plugin.h> +#include <ardour/plugin_manager.h> #include <pbd/stl_delete.h> @@ -240,3 +242,43 @@ Plugin::save_preset (string name, string domain) return true; } + +PluginPtr +ARDOUR::find_plugin(Session& session, string name, long unique_id, PluginInfo::Type type) +{ + PluginManager *mgr = PluginManager::the_manager(); + PluginInfoList plugs; + + switch (type) { + case PluginInfo::LADSPA: + plugs = mgr->ladspa_plugin_info(); + break; + +#ifdef VST_SUPPORT + case PluginInfo::VST: + plugs = mgr->vst_plugin_info(); + unique_id = 0; // VST plugins don't have a unique id. + break; +#endif + +#ifdef HAVE_COREAUDIO + case PluginInfo::AudioUnit: + plugs = AUPluginInfo::discover (); + unique_id = 0; // Neither do AU. + break; +#endif + + default: + return PluginPtr ((Plugin *) 0); + } + + PluginInfoList::iterator i; + for (i = plugs.begin(); i != plugs.end(); ++i) { + if ((name == "" || (*i)->name == name) && + (unique_id == 0 || (*i)->unique_id == unique_id)) { + return (*i)->load (session); + } + } + + return PluginPtr ((Plugin*) 0); +} |