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);
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<samplepos_t>& buffer, samplepos_t time);
int use_playlist (DataType, boost::shared_ptr<Playlist>);
void playlist_ranges_moved (std::list< Evoral::RangeMove<samplepos_t> > const &, bool);
+ int add_channel_to (boost::shared_ptr<ChannelList>, 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.
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;