Route API to query all outputs (incl sends) and graph-feeds
[ardour.git] / libs / ardour / ardour / route.h
index b103abf45bb408634c2bf5e635184252681927e4..5cda2f0d597f848fd7a9737fac5d0655d2b93607 100644 (file)
@@ -44,6 +44,7 @@
 #include "ardour/gain_control.h"
 #include "ardour/instrument_info.h"
 #include "ardour/io.h"
+#include "ardour/io_vector.h"
 #include "ardour/libardour_visibility.h"
 #include "ardour/types.h"
 #include "ardour/mute_master.h"
@@ -89,6 +90,8 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
 
        boost::shared_ptr<IO> input() const { return _input; }
        boost::shared_ptr<IO> output() const { return _output; }
+       IOVector all_inputs () const;
+       IOVector all_outputs () const;
 
        ChanCount n_inputs() const { return _input->n_ports(); }
        ChanCount n_outputs() const { return _output->n_ports(); }
@@ -278,6 +281,9 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
        bool set_strict_io (bool);
        bool reset_plugin_insert (boost::shared_ptr<Processor> proc);
        bool customize_plugin_insert (boost::shared_ptr<Processor> proc, uint32_t count, ChanCount outs);
+       bool add_remove_sidechain (boost::shared_ptr<Processor> proc, bool);
+       bool add_sidechain (boost::shared_ptr<Processor> proc) { return add_remove_sidechain (proc, true); }
+       bool remove_sidechain (boost::shared_ptr<Processor> proc) { return add_remove_sidechain (proc, false); }
 
        framecnt_t set_private_port_latencies (bool playback) const;
        void       set_public_port_latencies (framecnt_t, bool playback) const;
@@ -366,6 +372,8 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
         */
        bool direct_feeds_according_to_graph (boost::shared_ptr<Route>, bool* via_send_only = 0);
 
+       bool feeds_according_to_graph (boost::shared_ptr<Route>);
+
        struct FeedRecord {
                boost::weak_ptr<Route> r;
                bool sends_only;
@@ -780,12 +788,14 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
 
        void input_change_handler (IOChange, void *src);
        void output_change_handler (IOChange, void *src);
+       void sidechain_change_handler (IOChange, void *src);
 
        bool input_port_count_changing (ChanCount);
        bool output_port_count_changing (ChanCount);
 
        bool _in_configure_processors;
        bool _initial_io_setup;
+       bool _in_sidechain_setup;
 
        int configure_processors_unlocked (ProcessorStreams*);
        bool set_meter_point_unlocked ();