diff options
author | Robin Gareus <robin@gareus.org> | 2016-04-14 22:43:14 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-04-14 22:43:14 +0200 |
commit | ba67217dbccc2d9abf758ad47fb2fe4e9ff4b54a (patch) | |
tree | e7d71115c73e9dd1bb3d9079d925c60a6beff279 | |
parent | 03db4805fde8cd455ff1dbb284118d96152efeca (diff) |
document buffer requirement, add sidechain constraint.
-rw-r--r-- | libs/ardour/plugin_insert.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index f7664d9951..74c169196d 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -1464,8 +1464,21 @@ PluginInsert::configure_io (ChanCount in, ChanCount out) /* only the "noinplace_buffers" thread buffers need to be this large, * this can be optimized. other buffers are fine with * ChanCount::max (natural_input_streams (), natural_output_streams()) + * and route.cc's max (configured_in, configured_out) + * + * no-inplace copies "thru" outputs (to emulate in-place) for + * all outputs (to prevent overwrite) into a temporary space + * which also holds input buffers (in case the plugin does process + * in-place and overwrites those). + * + * this buffers need to be at least as + * natural_input_streams () + possible outputs. + * + * sidechain inputs add a constraint on the input: + * configured input + sidechain (=_configured_internal) */ - _required_buffers = natural_input_streams () + natural_output_streams() * get_count(); + _required_buffers =ChanCount::max (_configured_internal, + natural_input_streams () + ChanCount::max (_configured_out, natural_output_streams () * get_count ())); if (old_in != in || old_out != out || old_internal != _configured_internal || (old_match.method != _match.method && (old_match.method == Split || _match.method == Split)) |