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 () {}
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__ */