X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fio_processor.h;h=fdb0429bca1e1258cc36e83a7ee46a54ffacb54a;hb=79f91c7a205d981d2b8cc15e32a6da02d8423065;hp=d2bd210516e375abc9b6fe81a150a0c59b554d40;hpb=d8ade6d30595a3a8be343b392e47d422940eac27;p=ardour.git diff --git a/libs/ardour/ardour/io_processor.h b/libs/ardour/ardour/io_processor.h index d2bd210516..fdb0429bca 100644 --- a/libs/ardour/ardour/io_processor.h +++ b/libs/ardour/ardour/io_processor.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2001 Paul Davis + Copyright (C) 2001 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,64 +21,69 @@ #define __ardour_redirect_h__ #include -#include -#include -#include #include #include #include -#include +#include "pbd/undo.h" -#include -#include -#include -#include - -using std::map; -using std::set; -using std::string; -using std::vector; +#include "ardour/ardour.h" +#include "ardour/processor.h" class XMLNode; namespace ARDOUR { class Session; +class IO; +class Route; -/** A mixer strip element (Processor) with Jack ports (IO). +/** A mixer strip element (Processor) with 1 or 2 IO elements. */ class IOProcessor : public Processor { public: - IOProcessor (Session&, const string& name, Placement, - int input_min = -1, int input_max = -1, int output_min = -1, int output_max = -1); - IOProcessor (const IOProcessor&); + IOProcessor (Session&, bool with_input, bool with_output, + const std::string& proc_name, const std::string io_name="", + ARDOUR::DataType default_type = DataType::AUDIO); + IOProcessor (Session&, boost::shared_ptr input, boost::shared_ptr output, + const std::string& proc_name, ARDOUR::DataType default_type = DataType::AUDIO); virtual ~IOProcessor (); - - virtual ChanCount output_streams() const { return _io->n_outputs(); } - virtual ChanCount input_streams () const { return _io->n_inputs(); } - virtual ChanCount natural_output_streams() const { return _io->n_outputs(); } - virtual ChanCount natural_input_streams () const { return _io->n_inputs(); } - boost::shared_ptr io() { return _io; } - boost::shared_ptr io() const { return _io; } - - virtual void automation_snapshot (nframes_t now, bool force) { _io->automation_snapshot(now, force); } + bool set_name (const std::string& str); + + virtual ChanCount natural_output_streams() const; + virtual ChanCount natural_input_streams () const; + + boost::shared_ptr input() { return _input; } + boost::shared_ptr input() const { return _input; } + boost::shared_ptr output() { return _output; } + boost::shared_ptr output() const { return _output; } + void set_input (boost::shared_ptr); + void set_output (boost::shared_ptr); - virtual void run_in_place (BufferSet& in, nframes_t start_frame, nframes_t end_frame, nframes_t nframes, nframes_t offset) = 0; + void silence (nframes_t nframes); + void disconnect (); - void silence (nframes_t nframes, nframes_t offset); + virtual bool feeds (boost::shared_ptr other) const; sigc::signal AutomationPlaybackChanged; sigc::signal AutomationChanged; - + XMLNode& state (bool full_state); - int set_state (const XMLNode&); + int set_state (const XMLNode&, int version = 3000); protected: - boost::shared_ptr _io; + boost::shared_ptr _input; + boost::shared_ptr _output; + + private: + /* disallow copy construction */ + IOProcessor (const IOProcessor&); + bool _own_input; + bool _own_output; + }; } // namespace ARDOUR