20 #ifndef __ardour_audio_source_h__
21 #define __ardour_audio_source_h__
23 #include <boost/shared_ptr.hpp>
24 #include <boost/shared_array.hpp>
25 #include <boost/enable_shared_from_this.hpp>
29 #include <glibmm/threads.h>
30 #include <boost/function.hpp>
31 #include <boost/scoped_array.hpp>
53 virtual bool empty()
const;
57 virtual framecnt_t available_peaks (
double zoom)
const;
62 virtual float sample_rate ()
const = 0;
64 virtual void mark_streaming_write_completed (
const Lock& lock);
81 int set_state (
const XMLNode&,
int version);
83 int rename_peakfile (std::string newpath);
84 void touch_peakfile ();
87 _build_missing_peakfiles = yn;
91 _build_peakfiles = yn;
95 return _build_peakfiles;
100 int prepare_for_peakfile_writes ();
101 void done_with_peakfile_writes (
bool done =
true);
104 virtual bool clamped_at_unity ()
const = 0;
106 static void allocate_working_buffers (
framecnt_t framerate);
124 static void ensure_buffers_for_level (uint32_t,
framecnt_t);
125 static void ensure_buffers_for_level_locked (uint32_t,
framecnt_t);
131 int initialize_peakfile (std::string path);
132 int build_peaks_from_scratch ();
134 bool force,
bool intermediate_peaks_ready_signal);
135 void truncate_peakfile();
141 virtual std::string peak_path(std::string audio_path) = 0;
143 std::string audio_path) {
return peak_path (audio_path); }
145 virtual int read_peaks_with_fpp (
PeakData *peaks,
147 double samples_per_visual_peak,
framecnt_t fpp)
const;
150 bool force,
bool intermediate_peaks_ready_signal,
virtual std::string find_broken_peakfile(std::string, std::string audio_path)
virtual int setup_peakfile()
static std::vector< boost::shared_array< Sample > > _mixdown_buffers
static bool _build_peakfiles
framepos_t peak_leftover_frame
size_t _last_raw_map_length
static size_t _working_buffers_size
const uint32_t frames_per_peak
std::string _captured_for
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > start
PBD::Signal2< void, framepos_t, framepos_t > PeakRangeReady
framecnt_t peak_leftover_cnt
static bool get_build_peakfiles()
static bool _build_missing_peakfiles
virtual bool can_truncate_peaks() const
PBD::Signal0< void > PeaksReady
std::string captured_for() const
boost::scoped_array< PeakData > peak_cache
static Glib::Threads::Mutex _level_buffer_lock
void set_captured_for(std::string str)
virtual uint32_t n_channels() const
static void set_build_peakfiles(bool yn)
static std::vector< boost::shared_array< gain_t > > _gain_buffers
static void set_build_missing_peakfiles(bool yn)
framecnt_t peak_leftover_size
framecnt_t readable_length() const
Glib::Threads::Mutex _peaks_ready_lock
LIBARDOUR_API PBD::PropertyDescriptor< framecnt_t > length