summaryrefslogtreecommitdiff
path: root/libs/ardour/vst_plugin.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-03-27 18:51:30 +0200
committerRobin Gareus <robin@gareus.org>2016-03-27 18:51:30 +0200
commit41b1ecaaf0a99698070cbb256cfe0183595f0f71 (patch)
tree083072e3670d2ae180c1af2e0bb8407a79593658 /libs/ardour/vst_plugin.cc
parent17e809bdc336667d77ef3d113707e077c355ddd8 (diff)
VSTs don't process in-place
Diffstat (limited to 'libs/ardour/vst_plugin.cc')
-rw-r--r--libs/ardour/vst_plugin.cc19
1 files changed, 6 insertions, 13 deletions
diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc
index 1e49955422..32690f84d2 100644
--- a/libs/ardour/vst_plugin.cc
+++ b/libs/ardour/vst_plugin.cc
@@ -565,7 +565,12 @@ VSTPlugin::connect_and_run (BufferSet& bufs,
uint32_t out_index = 0;
for (i = 0; i < (int32_t) _plugin->numOutputs; ++i) {
- outs[i] = scratch_bufs.get_audio(i).data(offset);
+ uint32_t index;
+ bool valid = false;
+ index = out_map.get(DataType::AUDIO, out_index++, &valid);
+ outs[i] = (valid)
+ ? bufs.get_audio(index).data(offset)
+ : scratch_bufs.get_audio(0).data(offset);
}
if (bufs.count().n_midi() > 0) {
@@ -592,18 +597,6 @@ VSTPlugin::connect_and_run (BufferSet& bufs,
_plugin->processReplacing (_plugin, &ins[0], &outs[0], nframes);
_midi_out_buf = 0;
- out_index = 0;
- for (i = 0; i < (int32_t) _plugin->numOutputs; ++i) {
- uint32_t index;
- bool valid = false;
- index = out_map.get(DataType::AUDIO, out_index++, &valid);
- if (!valid) {
- continue;
- }
- if (outs[i] != bufs.get_audio(index).data(offset)) {
- copy_vector (bufs.get_audio(index).data(offset), outs[i], nframes);
- }
- }
return 0;
}