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 <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 () {}
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 _expected_inputs.n_audio(); }
+
+ virtual bool can_support_input_configuration (ChanCount in) const;
+ virtual ChanCount output_for_input_configuration (ChanCount in) const;
+ virtual 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