X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fexport_channel.h;h=d7c363860ce0cfbba598f51716819eadbb06ac94;hb=022818b4a796f52c0a91eea42e65aec0bc7bed43;hp=dd351bfd70bdf57c56ee1215cb05cf4c2af82b49;hpb=98389f7da420ee205f6827b7df4db3ea0802f751;p=ardour.git diff --git a/libs/ardour/ardour/export_channel.h b/libs/ardour/ardour/export_channel.h index dd351bfd70..d7c363860c 100644 --- a/libs/ardour/ardour/export_channel.h +++ b/libs/ardour/ardour/export_channel.h @@ -22,7 +22,6 @@ #define __ardour_export_channel_h__ #include -#include #include #include @@ -33,11 +32,16 @@ namespace ARDOUR { class Session; +class AudioTrack; +class AudioPort; /// Export channel base class interface for different source types class ExportChannel { public: + + virtual ~ExportChannel () {} + virtual void read (Sample * data, nframes_t frames) const = 0; virtual bool empty () const = 0; @@ -69,13 +73,13 @@ class PortExportChannel : public ExportChannel PortExportChannel () {} - virtual void read (Sample * data, nframes_t frames) const; - virtual bool empty () const { return ports.empty(); } + void read (Sample * data, nframes_t frames) const; + bool empty () const { return ports.empty(); } - virtual void get_state (XMLNode * node) const; - virtual void set_state (XMLNode * node, Session & session); + void get_state (XMLNode * node) const; + void set_state (XMLNode * node, Session & session); - virtual bool operator< (ExportChannel const & other) const; + bool operator< (ExportChannel const & other) const; void add_port (AudioPort * port) { ports.insert (port); } PortSet const & get_ports () { return ports; } @@ -90,10 +94,12 @@ class RegionExportChannelFactory : public sigc::trackable public: enum Type { Raw, + Fades, Processed }; RegionExportChannelFactory (Session * session, AudioRegion const & region, AudioTrack & track, Type type); + ~RegionExportChannelFactory (); ExportChannelPtr create (uint32_t channel); void read (uint32_t channel, Sample * data, nframes_t frames_to_read); @@ -113,6 +119,9 @@ class RegionExportChannelFactory : public sigc::trackable bool buffers_up_to_date; nframes_t region_start; nframes_t position; + + Sample * mixdown_buffer; + Sample * gain_buffer; }; /// Export channel that reads from region channel @@ -121,12 +130,12 @@ class RegionExportChannel : public ExportChannel friend class RegionExportChannelFactory; public: - virtual void read (Sample * data, nframes_t frames_to_read) const { factory.read (channel, data, frames_to_read); } - virtual void get_state (XMLNode * node) const {}; - virtual void set_state (XMLNode * node, Session & session) {}; - virtual bool empty () const { return false; } + void read (Sample * data, nframes_t frames_to_read) const { factory.read (channel, data, frames_to_read); } + void get_state (XMLNode * node) const {}; + void set_state (XMLNode * node, Session & session) {}; + bool empty () const { return false; } // Region export should never have duplicate channels, so there need not be any semantics here - virtual bool operator< (ExportChannel const & other) const { return this < &other; } + bool operator< (ExportChannel const & other) const { return this < &other; } private: