Trim include dependency graph, especially for io.h and session.h.
[ardour.git] / libs / ardour / ardour / send.h
index d3ce6ddee800e0d40af828a9cdf65f4e3e75722f..497027866b77128c0ba22feef82e130ee9914043 100644 (file)
 #include <pbd/stateful.h> 
 #include <ardour/ardour.h>
 #include <ardour/audioengine.h>
-#include <ardour/io.h>
-#include <ardour/redirect.h>
+#include <ardour/io_processor.h>
 
 namespace ARDOUR {
 
-class Send : public Redirect 
+class Send : public IOProcessor 
 {
   public:      
        Send (Session&, Placement);
@@ -42,7 +41,10 @@ class Send : public Redirect
 
        uint32_t bit_slot() const { return bitslot; }
        
-       void run (BufferSet& bufs, nframes_t start_frame, nframes_t end_frame, nframes_t nframes, nframes_t offset);
+       ChanCount output_streams() const;
+       ChanCount input_streams () const;
+       
+       void run_in_place (BufferSet& bufs, nframes_t start_frame, nframes_t end_frame, nframes_t nframes, nframes_t offset);
        
        void activate() {}
        void deactivate () {}
@@ -53,15 +55,18 @@ class Send : public Redirect
        XMLNode& get_state(void);
        int set_state(const XMLNode& node);
 
-       uint32_t pans_required() const { return _expected_inputs.n_audio(); }
+       uint32_t pans_required() const { return _configured_input.n_audio(); }
        void expect_inputs (const ChanCount&);
 
+       bool can_support_io_configuration (const ChanCount& in, ChanCount& out) const;
+       bool configure_io (ChanCount in, ChanCount out);
+
        static uint32_t how_many_sends();
 
   private:
        bool      _metering;
-       ChanCount _expected_inputs;
-       uint32_t bitslot;
+       ChanCount expected_inputs;
+       uint32_t  bitslot;
 };
 
 } // namespace ARDOUR