From a9c09af816b3d7da40221ac4a2bb4c6074708d89 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 16 Jun 2016 15:08:10 +0200 Subject: set latency of sidechain port --- libs/ardour/plugin_insert.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'libs/ardour/plugin_insert.cc') diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index 291ccbfc54..38c3b684ed 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -67,6 +67,8 @@ const string PluginInsert::port_automation_node_name = "PortAutomation"; PluginInsert::PluginInsert (Session& s, boost::shared_ptr plug) : Processor (s, (plug ? plug->name() : string ("toBeRenamed"))) + , _sc_playback_latency (0) + , _sc_capture_latency (0) , _signal_analysis_collected_nframes(0) , _signal_analysis_collect_nframes_max(0) , _configured (false) @@ -215,10 +217,30 @@ PluginInsert::del_sidechain () return false; } _sidechain.reset (); + _sc_playback_latency = 0; + _sc_capture_latency = 0; PluginConfigChanged (); /* EMIT SIGNAL */ return true; } +void +PluginInsert::set_sidechain_latency (uint32_t capture, uint32_t playback) +{ + if (_sidechain && + (_sc_playback_latency != playback || _sc_capture_latency != capture)) { + _sc_capture_latency = capture; + _sc_playback_latency = playback; + LatencyRange pl; pl.min = pl.max = playback; + LatencyRange cl; cl.min = cl.max = capture; + DEBUG_TRACE (DEBUG::Latency, string_compose ("%1: capture %2 playback; %3\n", _sidechain->name (), capture, playback)); + PortSet& ps (_sidechain->input ()->ports ()); + for (PortSet::iterator p = ps.begin(); p != ps.end(); ++p) { + p->set_private_latency_range (pl, true); + p->set_private_latency_range (cl, false); + } + } +} + void PluginInsert::control_list_automation_state_changed (Evoral::Parameter which, AutoState s) { -- cgit v1.2.3