Optimize plugin-processing for non-automated params
[ardour.git] / libs / ardour / ardour / disk_reader.h
index cb37bc6cb1fa671028b5ffabfed9fda0ecb1e247..47139efd5b69d696c5bcff5243500d1bf6649566 100644 (file)
@@ -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<samplepos_t>& buffer, samplepos_t time);
@@ -110,6 +123,8 @@ protected:
        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.
@@ -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;