X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fdisk_reader.h;h=47139efd5b69d696c5bcff5243500d1bf6649566;hb=e4d3ebfb666e2c4e9cf134d8f3ed42152da343bf;hp=cb37bc6cb1fa671028b5ffabfed9fda0ecb1e247;hpb=e31f5d999837b0d0d63dc824c50e9da4acca7244;p=ardour.git diff --git a/libs/ardour/ardour/disk_reader.h b/libs/ardour/ardour/disk_reader.h index cb37bc6cb1..47139efd5b 100644 --- a/libs/ardour/ardour/disk_reader.h +++ b/libs/ardour/ardour/disk_reader.h @@ -93,6 +93,10 @@ public: void playlist_modified (); void reset_tracker (); + bool declick_in_progress () const { + return _declick_gain != 0; // declick-out + } + static void set_midi_readahead_samples (samplecnt_t samples_ahead) { midi_readahead = samples_ahead; } static void set_no_disk_output (bool yn); @@ -102,6 +106,15 @@ protected: friend class Track; friend class MidiTrack; + struct ReaderChannelInfo : public DiskIOProcessor::ChannelInfo { + ReaderChannelInfo (samplecnt_t buffer_size) + : DiskIOProcessor::ChannelInfo (buffer_size) + { + resize (buffer_size); + } + void resize (samplecnt_t); + }; + XMLNode& state (); void resolve_tracker (Evoral::EventSink& buffer, samplepos_t time); @@ -110,6 +123,8 @@ protected: int use_playlist (DataType, boost::shared_ptr); void playlist_ranges_moved (std::list< Evoral::RangeMove > const &, bool); + int add_channel_to (boost::shared_ptr, uint32_t how_many); + private: /** The number of samples by which this diskstream's output should be delayed with respect to the transport sample. This is used for latency compensation. @@ -121,6 +136,8 @@ private: IOChange input_change_pending; samplepos_t file_sample[DataType::num_types]; + gain_t _declick_gain; + int _do_refill_with_alloc (bool partial_fill); static samplecnt_t _chunk_samples;