From 0eea06b6359822fa06956a4e39c3b100ae8fe510 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 2 Apr 2016 01:05:33 +0200 Subject: [PATCH] autodetect if current pin-connections can be processed in-place --- libs/ardour/ardour/plugin_insert.h | 9 ------- libs/ardour/luabindings.cc | 2 -- libs/ardour/plugin_insert.cc | 38 ++++++++++-------------------- 3 files changed, 12 insertions(+), 37 deletions(-) diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index 3e233ba6c1..831d48ef17 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -185,14 +185,6 @@ class LIBARDOUR_API PluginInsert : public Processor void collect_signal_for_analysis (framecnt_t nframes); - bool no_inplace () const { - return _pending_no_inplace; - } - - void set_no_inplace (bool b) { // XXX tenative dev API - _pending_no_inplace = b; // TODO detect automatically - } - bool strict_io_configured () const { return _match.strict_io; } @@ -267,7 +259,6 @@ class LIBARDOUR_API PluginInsert : public Processor bool _no_inplace; bool _strict_io; bool _custom_cfg; - bool _pending_no_inplace; Match private_can_support_io_configuration (ChanCount const &, ChanCount &) const; Match automatic_can_support_io_configuration (ChanCount const &, ChanCount &) const; diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc index d7b9410bfc..8c5023cfd7 100644 --- a/libs/ardour/luabindings.cc +++ b/libs/ardour/luabindings.cc @@ -373,10 +373,8 @@ LuaBindings::common (lua_State* L) .addFunction ("activate", &PluginInsert::activate) .addFunction ("deactivate", &PluginInsert::deactivate) .addFunction ("strict_io_configured", &PluginInsert::strict_io_configured) - .addFunction ("no_inplace", &PluginInsert::no_inplace) .addFunction ("input_map", (ARDOUR::ChanMapping (PluginInsert::*)(uint32_t) const)&PluginInsert::input_map) .addFunction ("output_map", (ARDOUR::ChanMapping (PluginInsert::*)(uint32_t) const)&PluginInsert::output_map) - .addFunction ("set_no_inplace", &PluginInsert::set_no_inplace) // XXX .addFunction ("set_input_map", &PluginInsert::set_input_map) .addFunction ("set_output_map", &PluginInsert::set_output_map) diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index 78f46275f7..bf188ec3bd 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -72,7 +72,6 @@ PluginInsert::PluginInsert (Session& s, boost::shared_ptr plug) , _no_inplace (false) , _strict_io (false) , _custom_cfg (false) - , _pending_no_inplace (false) { /* the first is the master */ @@ -414,31 +413,6 @@ PluginInsert::connect_and_run (BufferSet& bufs, pframes_t nframes, framecnt_t of PinMappings in_map (_in_map); PinMappings out_map (_out_map); -#if 1 - // auto-detect if inplace processing is possible - // TODO: do this once. during configure_io and every time the - // plugin-count or mapping changes. - bool inplace_ok = true; - for (uint32_t pc = 0; pc < get_count() && inplace_ok ; ++pc) { - if (!in_map[pc].is_monotonic ()) { - inplace_ok = false; - } - if (!out_map[pc].is_monotonic ()) { - inplace_ok = false; - } - } - - if (_pending_no_inplace != !inplace_ok) { -#ifndef NDEBUG // this 'cerr' needs to go ASAP. - cerr << name () << " automatically set : " << (inplace_ok ? "Use Inplace" : "No Inplace") << "\n"; // XXX -#endif - _pending_no_inplace = !inplace_ok; - } -#endif - - _no_inplace = _pending_no_inplace || _plugins.front()->inplace_broken (); - - #if 1 // TODO optimize special case. // Currently this never triggers because the in_map for "Split" triggeres no_inplace. @@ -1111,6 +1085,18 @@ PluginInsert::configure_io (ChanCount in, ChanCount out) #endif } + // auto-detect if inplace processing is possible + bool inplace_ok = true; + for (uint32_t pc = 0; pc < get_count() && inplace_ok ; ++pc) { + if (!_in_map[pc].is_monotonic ()) { + inplace_ok = false; + } + if (!_out_map[pc].is_monotonic ()) { + inplace_ok = false; + } + } + _no_inplace = !inplace_ok || _plugins.front()->inplace_broken (); + if (old_in != in || old_out != out || (old_match.method != _match.method && (old_match.method == Split || _match.method == Split)) ) { -- 2.30.2