/*
- 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
*/
-#ifndef __coreaudio_source_h__
+#ifndef __coreaudio_source_h__
#define __coreaudio_source_h__
-#include <appleutility/CAAudioFile.h>
+#ifdef COREAUDIO105
+#include "CAAudioFile.h"
+#else
+#include "CAExtAudioFile.h"
+#endif
#include "ardour/audiofilesource.h"
#include <string>
namespace ARDOUR {
-class CoreAudioSource : public AudioFileSource {
+class LIBARDOUR_API CoreAudioSource : public AudioFileSource {
public:
CoreAudioSource (ARDOUR::Session&, const XMLNode&);
- CoreAudioSource (ARDOUR::Session&, const string& path, bool, int chn, Flag);
+ CoreAudioSource (ARDOUR::Session&, const string& path, int chn, Flag);
~CoreAudioSource ();
+ void set_path (const std::string& p);
+
float sample_rate() const;
- int update_header (sframes_t when, struct tm&, time_t);
+ int update_header (samplepos_t when, struct tm&, time_t);
+
+ uint32_t channel_count () const { return n_channels; }
int flush_header () {return 0;};
void set_header_timeline_position () {};
+ bool clamped_at_unity () const { return false; }
+
+ void flush () {}
static int get_soundfile_info (string path, SoundFileInfo& _info, string& error_msg);
protected:
- nframes_t read_unlocked (Sample *dst, sframes_t start, nframes_t cnt) const;
- nframes_t write_unlocked (Sample *dst, nframes_t cnt) { return 0; }
+ void close ();
+ samplecnt_t read_unlocked (Sample *dst, samplepos_t start, samplecnt_t cnt) const;
+ samplecnt_t write_unlocked (Sample *, samplecnt_t) { return 0; }
private:
+#ifdef COREAUDIO105
mutable CAAudioFile af;
+#else
+ mutable CAExtAudioFile af;
+#endif
uint16_t n_channels;
- void init ();
- int safe_read (Sample*, nframes_t start, nframes_t cnt, AudioBufferList&) const;
+ void init_cafile ();
+ int safe_read (Sample*, samplepos_t start, samplecnt_t cnt, AudioBufferList&) const;
};
}; /* namespace ARDOUR */