take buffers for Split/Match into account fixes #6334
authorRobin Gareus <robin@gareus.org>
Mon, 18 May 2015 14:14:07 +0000 (16:14 +0200)
committerRobin Gareus <robin@gareus.org>
Mon, 18 May 2015 14:14:07 +0000 (16:14 +0200)
libs/ardour/route.cc

index 4b4e450c34bacd2053a24b45e69893db85edd774..a793ae5b2ad5f3f957ef4cdf9b29b77120d978f5 100644 (file)
@@ -1896,6 +1896,14 @@ Route::configure_processors_unlocked (ProcessorStreams* err)
                (*p)->configure_io(c->first, c->second);
                processor_max_streams = ChanCount::max(processor_max_streams, c->first);
                processor_max_streams = ChanCount::max(processor_max_streams, c->second);
+
+               boost::shared_ptr<PluginInsert> pi;
+               if ((pi = boost::dynamic_pointer_cast<PluginInsert>(*p)) != 0) {
+                       /* plugins connected via Split Match may have more channels.
+                        * route/scratch buffers are needed for all of them*/
+                       processor_max_streams = ChanCount::max(processor_max_streams, pi->input_streams());
+                       processor_max_streams = ChanCount::max(processor_max_streams, pi->natural_input_streams());
+               }
                out = c->second;
 
                if (boost::dynamic_pointer_cast<Delivery> (*p)