Trim include dependency graph, especially for io.h and session.h.
[ardour.git] / libs / ardour / ardour / send.h
index 54d4cbd7a9bb9206b392661efea6639cf4a279c6..497027866b77128c0ba22feef82e130ee9914043 100644 (file)
@@ -15,7 +15,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #ifndef __ardour_send_h__
 #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);
        Send (Session&, const XMLNode&);
        Send (const Send&);
-       ~Send ();
+       virtual ~Send ();
+
+       uint32_t bit_slot() const { return bitslot; }
+       
+       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 run (vector<Sample *> &bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset);
        void activate() {}
        void deactivate () {}
 
@@ -50,14 +55,20 @@ class Send : public Redirect {
        XMLNode& get_state(void);
        int set_state(const XMLNode& node);
 
-       uint32_t pans_required() const { return expected_inputs; }
-       void expect_inputs (uint32_t);
+       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;
-       uint32_t expected_inputs;
+       bool      _metering;
+       ChanCount expected_inputs;
+       uint32_t  bitslot;
 };
 
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
 
 #endif /* __ardour_send_h__ */