- uint32_t max_redirect_outs () const { return redirect_max_outs; }
-
- int add_redirect (boost::shared_ptr<Redirect>, void *src, uint32_t* err_streams = 0);
- int add_redirects (const RedirectList&, void *src, uint32_t* err_streams = 0);
- int remove_redirect (boost::shared_ptr<Redirect>, void *src, uint32_t* err_streams = 0);
- int copy_redirects (const Route&, Placement, uint32_t* err_streams = 0);
- int sort_redirects (uint32_t* err_streams = 0);
-
- void clear_redirects (void *src);
- void all_redirects_flip();
- void all_redirects_active (bool state);
+ ChanCount max_processor_outs () const { return processor_max_outs; }
+ ChanCount pre_fader_streams() const;
+
+ /** A record of the stream configuration at some point in the processor list.
+ * Used to return where and why an processor list configuration request failed.
+ */
+ struct ProcessorStreams {
+ ProcessorStreams(size_t i=0, ChanCount c=ChanCount()) : index(i), count(c) {}
+
+ size_t index; ///< Index of processor where configuration failed
+ ChanCount count; ///< Input requested of processor
+ };
+
+ int add_processor (boost::shared_ptr<Processor>, ProcessorStreams* err = 0);
+ int add_processors (const ProcessorList&, ProcessorStreams* err = 0);
+ int remove_processor (boost::shared_ptr<Processor>, ProcessorStreams* err = 0);
+ int sort_processors (ProcessorStreams* err = 0);
+ void disable_processors (Placement);
+ void disable_processors ();
+ void disable_plugins (Placement);
+ void disable_plugins ();
+ void ab_plugins (bool forward);
+ void clear_processors (Placement);
+ void all_processors_flip();
+ void all_processors_active (Placement, bool state);