diff options
author | Robin Gareus <robin@gareus.org> | 2016-03-27 18:51:30 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-03-27 18:51:30 +0200 |
commit | 41b1ecaaf0a99698070cbb256cfe0183595f0f71 (patch) | |
tree | 083072e3670d2ae180c1af2e0bb8407a79593658 /libs/ardour/vst_plugin.cc | |
parent | 17e809bdc336667d77ef3d113707e077c355ddd8 (diff) |
VSTs don't process in-place
Diffstat (limited to 'libs/ardour/vst_plugin.cc')
-rw-r--r-- | libs/ardour/vst_plugin.cc | 19 |
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; } |