20 #ifndef _ardour_disk_reader_h_
21 #define _ardour_disk_reader_h_
static const uint32_t num_types
DeclickAmp(samplecnt_t sample_rate)
void apply_gain(AudioBuffer &buf, samplecnt_t n_samples, const float target, sampleoffset_t buffer_offset=0)
void reset(samplepos_t start, samplepos_t end, bool fadein, samplecnt_t sr)
void alloc(samplecnt_t sr, bool fadein, bool linear)
void run(Sample *buf, samplepos_t start, samplepos_t end)
std::optional< bool > _last_read_reversed
bool declick_in_progress() const
static Declicker loop_declick_in
void maybe_xfade_loop(Sample *, samplepos_t read_start, samplepos_t read_end, ReaderChannelInfo *)
void internal_playback_seek(sampleoffset_t distance)
static samplecnt_t _chunk_samples
bool pending_overwrite() const
int set_state(const XMLNode &, int version)
DiskReader(Session &, Track &, std::string const &name, Temporal::TimeDomainProvider const &, DiskIOProcessor::Flag f=DiskIOProcessor::Flag(0))
static samplecnt_t loop_fade_length
static Declicker loop_declick_out
static bool no_disk_output()
static samplecnt_t chunk_samples()
void resolve_tracker(Evoral::EventSink< samplepos_t > &buffer, samplepos_t time)
void setup_preloop_buffer()
static void allocate_working_buffers()
bool overwrite_existing_audio()
void get_midi_playback(MidiBuffer &dst, samplepos_t start_sample, samplepos_t end_sample, MonitorState, BufferSet &, double speed, samplecnt_t distance)
static thread_local Sample * _sum_buffer
PBD::Signal< void()> AlignmentStyleChanged
std::atomic< OverwriteReason > _pending_overwrite
static thread_local gain_t * _gain_buffer
int seek(samplepos_t sample, bool complete_refill=false)
static void set_chunk_samples(samplecnt_t n)
void configuration_changed()
void move_processor_automation(std::weak_ptr< Processor >, std::list< Temporal::RangeMove > const &)
void set_need_midi_catchup(bool)
bool set_name(std::string const &str)
std::string display_name() const
static PBD::Signal< void()> Underrun
int refill_audio(Sample *sum_buffer, Sample *mixdown_buffer, float *gain_buffer, samplecnt_t fill_level, bool reversed)
static void free_working_buffers()
static void alloc_loop_declick(samplecnt_t sample_rate)
static void inc_no_disk_output()
sampleoffset_t _declick_offs
sampleoffset_t calculate_playback_distance(pframes_t)
samplecnt_t audio_read(Sample *sum_buffer, Sample *mixdown_buffer, float *gain_buffer, samplepos_t &start, samplecnt_t cnt, ReaderChannelInfo *rci, int channel, bool reversed)
void set_pending_overwrite(OverwriteReason)
sampleoffset_t overwrite_offset
int do_refill_with_alloc(bool partial_fill, bool reverse)
int add_channel_to(std::shared_ptr< ChannelList >, uint32_t how_many)
static samplecnt_t default_chunk_samples()
void realtime_handle_transport_stopped()
float buffer_load() const
RTMidiBuffer * rt_midibuffer()
std::optional< bool > _last_read_loop
static thread_local Sample * _mixdown_buffer
static void reset_loop_declick(Location *, samplecnt_t sample_rate)
bool overwrite_existing_buffers()
bool overwrite_existing_midi()
void playlist_ranges_moved(std::list< Temporal::RangeMove > const &, bool)
IOChange input_change_pending
samplepos_t last_refill_loop_start
samplepos_t file_sample[DataType::num_types]
samplepos_t overwrite_sample
static void dec_no_disk_output()
void realtime_locate(bool)
int use_playlist(DataType, std::shared_ptr< Playlist >)
int refill(Sample *sum_buffer, Sample *mixdown_buffer, float *gain_buffer, samplecnt_t fill_level, bool reversed)
samplepos_t new_file_sample
void run(BufferSet &, samplepos_t, samplepos_t, double speed, pframes_t, bool)
bool can_internal_playback_seek(sampleoffset_t distance)
static std::atomic< int > _no_disk_output
void set_loop(Location *)
PBD::PropertyDescriptor< timepos_t > start
Temporal::samplecnt_t samplecnt_t
Temporal::sampleoffset_t sampleoffset_t
Temporal::samplepos_t samplepos_t
void resize_preloop(samplecnt_t)
samplecnt_t pre_loop_buffer_size
ReaderChannelInfo(samplecnt_t buffer_size, samplecnt_t preloop_size)