diff options
author | Robin Gareus <robin@gareus.org> | 2014-01-13 15:13:37 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-01-13 15:13:37 +0100 |
commit | 291618fe7116424448da5f7029e567d655526521 (patch) | |
tree | e8399ce25f46634a7a75670e8c97ac3747f99002 /libs/ardour/panner_manager.cc | |
parent | 9c595f8131967541808ae77bae842bd905db9caa (diff) |
allow to custom select panner-type for each delivery.
Diffstat (limited to 'libs/ardour/panner_manager.cc')
-rw-r--r-- | libs/ardour/panner_manager.cc | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/libs/ardour/panner_manager.cc b/libs/ardour/panner_manager.cc index 24fa10e225..ec5b675731 100644 --- a/libs/ardour/panner_manager.cc +++ b/libs/ardour/panner_manager.cc @@ -218,13 +218,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; +} |