summaryrefslogtreecommitdiff
path: root/libs/ardour/panner_manager.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-01-14 10:56:17 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2014-01-14 10:56:17 -0500
commitcf806123ca5faaef483f898daba3f7bd38ec62eb (patch)
treef11f2f9ff64ea3b3682c81b8dd893ba0e9476445 /libs/ardour/panner_manager.cc
parentcfc9a1f22ea38d4dd6c619d6cec25fe29b1c2f48 (diff)
parentd9296b71237d9d3058b0796eda25258fadd45ad9 (diff)
merge (with conflict fixes) with master (even against rgareus' recommendation)
Diffstat (limited to 'libs/ardour/panner_manager.cc')
-rw-r--r--libs/ardour/panner_manager.cc26
1 files changed, 24 insertions, 2 deletions
diff --git a/libs/ardour/panner_manager.cc b/libs/ardour/panner_manager.cc
index 3c9623f3e6..0084a62285 100644
--- a/libs/ardour/panner_manager.cc
+++ b/libs/ardour/panner_manager.cc
@@ -222,13 +222,35 @@ PannerManager::select_panner (ChanCount in, ChanCount out, std::string const uri
}
PannerInfo*
-PannerManager::get_by_uri (std::string uri)
+PannerManager::get_by_uri (std::string uri) const
{
PannerInfo* pi = NULL;
- for (list<PannerInfo*>::iterator p = panner_info.begin(); p != panner_info.end(); ++p) {
+ for (list<PannerInfo*>::const_iterator p = panner_info.begin(); p != panner_info.end(); ++p) {
if ((*p)->descriptor.panner_uri != uri) continue;
pi = (*p);
break;
}
return pi;
}
+
+PannerUriMap
+PannerManager::get_available_panners(uint32_t const a_in, uint32_t const a_out) const
+{
+ int const in = a_in;
+ int const out = a_out;
+ PannerUriMap panner_list;
+
+ if (out < 2 || in == 0) {
+ return panner_list;
+ }
+
+ /* get available panners for current configuration. */
+ for (list<PannerInfo*>::const_iterator p = panner_info.begin(); p != panner_info.end(); ++p) {
+ PanPluginDescriptor* d = &(*p)->descriptor;
+ if (d->in != -1 && d->in != in) continue;
+ if (d->out != -1 && d->out != out) continue;
+ if (d->in == -1 && d->out == -1 && out <= 2) continue;
+ panner_list.insert(std::pair<std::string,std::string>(d->panner_uri,d->name));
+ }
+ return panner_list;
+}