diff options
author | Robin Gareus <robin@gareus.org> | 2016-07-08 20:29:03 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-07-08 20:29:39 +0200 |
commit | b7dc66c903f676c73266297026579d080e15037b (patch) | |
tree | 1b436d3deba9f7c07f50efd34f0b23e5ccdf9c76 /libs/ardour | |
parent | 1228faf2cfa3b32e4267f8418884cf2d77b89be6 (diff) |
untested hack for AU multi-bus outputs which are not explicitly listed
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/audio_unit.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index 74e0cc2800..c9c5565e3b 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -1275,6 +1275,24 @@ AUPlugin::can_support_io_configuration (const ChanCount& in, ChanCount& out, Cha } } + if (output_elements > 1) { + const vector<pair<int,int> >& ioc (pinfo->cache.io_configs); + for (vector<pair<int,int> >::const_iterator i = ioc.begin(); i != ioc.end(); ++i) { + int32_t possible_in = i->first; + int32_t possible_out = i->second; + if (possible_in < 1 || possible_out < 1) { + continue; + } + for (uint32_t i = 1; i < output_elements; ++i) { + int32_t c = bus_outputs[i]; + for (uint32_t j = 1; j < i; ++j) { + c += bus_outputs [j]; + } + io_configs.push_back (pair<int,int> (possible_in, possible_out + c)); + } + } + } + DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("%1 has %2 IO configurations, looking for %3 in, %4 out\n", name(), io_configs.size(), in, out)); |