X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fcoreaudiosource.h;h=be28662cb01d6bcf6ccdcb9939db9d2170b46c5f;hb=9925ab554e65ac31a41eff1fa03a9c12aad1973e;hp=ba9f122fc9870536ef21721e804110dac07a7396;hpb=fdda19d3d45384fb4f158e4f1af18cc17009e478;p=ardour.git diff --git a/libs/ardour/ardour/coreaudiosource.h b/libs/ardour/ardour/coreaudiosource.h index ba9f122fc9..be28662cb0 100644 --- a/libs/ardour/ardour/coreaudiosource.h +++ b/libs/ardour/ardour/coreaudiosource.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2000 Paul Davis + Copyright (C) 2000 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,42 +17,44 @@ */ -#ifndef __coreaudio_source_h__ +#ifndef __coreaudio_source_h__ #define __coreaudio_source_h__ -#include -#include +#include +#include "ardour/audiofilesource.h" +#include + +using namespace std; namespace ARDOUR { class CoreAudioSource : public AudioFileSource { public: - CoreAudioSource (const XMLNode&); - CoreAudioSource (const string& path_plus_channel, Flag); + CoreAudioSource (ARDOUR::Session&, const XMLNode&); + CoreAudioSource (ARDOUR::Session&, const string& path, int chn, Flag); ~CoreAudioSource (); + void set_path (const std::string& p); + float sample_rate() const; - int update_header (jack_nframes_t when, struct tm&, time_t); + int update_header (framepos_t when, struct tm&, time_t); int flush_header () {return 0;}; void set_header_timeline_position () {}; + bool clamped_at_unity () const { return false; } + + static int get_soundfile_info (string path, SoundFileInfo& _info, string& error_msg); protected: - jack_nframes_t read_unlocked (Sample *dst, jack_nframes_t start, jack_nframes_t cnt, char * workbuf) const; + framecnt_t read_unlocked (Sample *dst, framepos_t start, framecnt_t cnt) const; + framecnt_t write_unlocked (Sample *, framecnt_t) { return 0; } - jack_nframes_t write_unlocked (Sample *dst, jack_nframes_t cnt, char * workbuf) - { return 0; } - - private: - ExtAudioFileRef af; + mutable CAAudioFile af; uint16_t n_channels; - mutable float *tmpbuf; - mutable jack_nframes_t tmpbufsize; - mutable Glib::Mutex _tmpbuf_lock; - - void init (const string &str); + void init_cafile (); + int safe_read (Sample*, nframes_t start, framecnt_t cnt, AudioBufferList&) const; }; }; /* namespace ARDOUR */