summaryrefslogtreecommitdiff
path: root/libs/ardour/audio_unit.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-05-03 18:17:29 +0200
committerRobin Gareus <robin@gareus.org>2016-05-03 18:17:29 +0200
commitad4fe5125563c185d3bce8f63d841c21e9324e44 (patch)
treea247dbeaa8991d5515e7ed64bb93d27cc0f4ea70 /libs/ardour/audio_unit.cc
parente3e79016882cf3c69c653e92e089cfb88e51afe0 (diff)
handle single-bus, non-variable i/o Audio Units w/multiple configurations.
Diffstat (limited to 'libs/ardour/audio_unit.cc')
-rw-r--r--libs/ardour/audio_unit.cc15
1 files changed, 11 insertions, 4 deletions
diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc
index 44080a0bc8..c748b686ad 100644
--- a/libs/ardour/audio_unit.cc
+++ b/libs/ardour/audio_unit.cc
@@ -1606,9 +1606,10 @@ AUPlugin::connect_and_run (BufferSet& bufs, ChanMapping in_map, ChanMapping out_
inplace = false;
}
- DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("%1 in %2 out %3 MIDI %4 bufs %5 (available %6) Inplace: %7\n",
+ DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("%1 in %2 out %3 MIDI %4 bufs %5 (available %6) InBus %7 OutBus %8 Inplace: %9 var-i/o %10 %11\n",
name(), input_channels, output_channels, _has_midi_input,
- bufs.count(), bufs.available(), inplace));
+ bufs.count(), bufs.available(),
+ configured_input_busses, configured_output_busses, inplace, variable_inputs, variable_outputs));
/* the apparent number of buffers matches our input configuration, but we know that the bufferset
* has the capacity to handle our outputs.
@@ -1651,7 +1652,12 @@ AUPlugin::connect_and_run (BufferSet& bufs, ChanMapping in_map, ChanMapping out_
uint32_t busoff = 0;
uint32_t remain = output_channels;
for (uint32_t bus = 0; remain > 0 && bus < configured_output_busses; ++bus) {
- uint32_t cnt = variable_outputs ? output_channels : std::min (remain, bus_outputs[bus]); // XXX
+ uint32_t cnt;
+ if (variable_outputs || (output_elements == configured_output_busses && configured_output_busses == 1)) {
+ cnt = output_channels;
+ } else {
+ cnt = std::min (remain, bus_outputs[bus]);
+ }
assert (cnt > 0);
buffers->mNumberBuffers = cnt;
@@ -1704,7 +1710,8 @@ AUPlugin::connect_and_run (BufferSet& bufs, ChanMapping in_map, ChanMapping out_
}
}
} else {
- error << string_compose (_("AU: render error for %1, bus %2 status = %2"), name(), bus, err) << endmsg;
+ DEBUG_TRACE (DEBUG::AudioUnits, string_compose (_("AU: render error for %1, bus %2 status = %3\n"), name(), bus, err));
+ error << string_compose (_("AU: render error for %1, bus %2 status = %3"), name(), bus, err) << endmsg;
ok = false;
break;
}