summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/panner_manager.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-01-17 17:53:19 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-01-17 17:53:19 +0000
commitc1c14e229e0a5c82e2f9edf7e425589fe156b12d (patch)
treedd3813ba77ad77f40e9a775ad13813502bf406ab /libs/ardour/ardour/panner_manager.h
parent2a8629d11c362a992bb73724ad5f8b7e3f650018 (diff)
some new headers
git-svn-id: svn://localhost/ardour2/branches/3.0@8522 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/panner_manager.h')
-rw-r--r--libs/ardour/ardour/panner_manager.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/libs/ardour/ardour/panner_manager.h b/libs/ardour/ardour/panner_manager.h
new file mode 100644
index 0000000000..d5b183c859
--- /dev/null
+++ b/libs/ardour/ardour/panner_manager.h
@@ -0,0 +1,45 @@
+#ifndef __ardour_panner_manager_h__
+#define __ardour_panner_manager_h__
+
+#include <dlfcn.h>
+#include "ardour/panner.h"
+#include "ardour/session_handle.h"
+
+namespace ARDOUR {
+
+struct PannerInfo {
+ PanPluginDescriptor descriptor;
+ void* module;
+
+ PannerInfo (PanPluginDescriptor& d, void* handle)
+ : descriptor (d)
+ , module (handle)
+ {}
+
+ ~PannerInfo () {
+ dlclose (module);
+ }
+};
+
+class PannerManager : public ARDOUR::SessionHandlePtr
+{
+ public:
+ ~PannerManager ();
+ static PannerManager& instance ();
+
+ void discover_panners ();
+ std::list<PannerInfo*> panner_info;
+
+ PannerInfo* select_panner (ChanCount in, ChanCount out);
+
+ private:
+ PannerManager();
+ static PannerManager* _instance;
+
+ PannerInfo* get_descriptor (std::string path);
+ int panner_discover (std::string path);
+};
+
+} // namespace
+
+#endif /* __ardour_panner_manager_h__ */