diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-05-13 21:34:09 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-05-13 21:34:09 +0000 |
commit | 0569107ddc0d2a8df6ca0a2c8cc16ebe8f3dee99 (patch) | |
tree | 81b0a6ffb5cd967d3b205a11ad6d4f8726aa03d2 /libs/ardour/ardour/delivery.h | |
parent | 7188ec39903e4cef049468c5a0583d9ec67a290d (diff) |
more work on the new all-Processor-all-The-Time redesign of Route - LOTS OF BREAKAGE STILL EXPECTED ; change all(?) methods that pass a start/end frame in to use sframes_t not nframes_t
git-svn-id: svn://localhost/ardour2/branches/3.0@5074 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/delivery.h')
-rw-r--r-- | libs/ardour/ardour/delivery.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/libs/ardour/ardour/delivery.h b/libs/ardour/ardour/delivery.h new file mode 100644 index 0000000000..8d083695b1 --- /dev/null +++ b/libs/ardour/ardour/delivery.h @@ -0,0 +1,79 @@ +/* + Copyright (C) 2006 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 the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __ardour_delivery_h__ +#define __ardour_delivery_h__ + +#include <string> +#include "ardour/types.h" +#include "ardour/chan_count.h" +#include "ardour/io_processor.h" + +namespace ARDOUR { + +class BufferSet; +class IO; + +class Delivery : public IOProcessor { +public: + enum Role { + Send = 0x1, + Solo = 0x2, + Listen = 0x4, + Main = 0x8 + }; + + Delivery (Session& s, IO* io, const std::string& name, Role); + Delivery (Session& s, const std::string& name, Role); + Delivery (Session&, const XMLNode&); + + bool visible() const; + + Role role() const { return _role; } + + bool can_support_io_configuration (const ChanCount& in, ChanCount& out) const; + bool configure_io (ChanCount in, ChanCount out); + + void run_in_place (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes); + + void set_metering (bool yn); + + bool muted_by_self() const { return _muted_by_self; } + bool muted_by_others() const { return _muted_by_others; } + + void set_self_mute (bool); + void set_nonself_mute (bool); + + sigc::signal<void> SelfMuteChange; + sigc::signal<void> OtherMuteChange; + + XMLNode& state (bool full); + int set_state (const XMLNode&); + +private: + Role _role; + bool _metering; + bool _muted_by_self; + bool _muted_by_others; +}; + + +} // namespace ARDOUR + +#endif // __ardour__h__ + |