another TLSF vs realloc-pool shootout
[ardour.git] / libs / ardour / ardour / coreaudiosource.h
index 30c66069f69949272cd6990fd37a553918a1b3b1..bb007768398b83911a16ad3581f3bb40ca82df9c 100644 (file)
 #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>
 
@@ -28,7 +32,7 @@ using namespace std;
 
 namespace ARDOUR {
 
-class CoreAudioSource : public AudioFileSource {
+class LIBARDOUR_API CoreAudioSource : public AudioFileSource {
   public:
        CoreAudioSource (ARDOUR::Session&, const XMLNode&);
        CoreAudioSource (ARDOUR::Session&, const string& path, int chn, Flag);
@@ -39,6 +43,8 @@ class CoreAudioSource : public AudioFileSource {
        float sample_rate() const;
        int update_header (framepos_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; }
@@ -48,11 +54,16 @@ class CoreAudioSource : public AudioFileSource {
        static int get_soundfile_info (string path, SoundFileInfo& _info, string& error_msg);
 
   protected:
+       void close ();
        framecnt_t read_unlocked (Sample *dst, framepos_t start, framecnt_t cnt) const;
        framecnt_t write_unlocked (Sample *, framecnt_t) { return 0; }
 
   private:
+#ifdef COREAUDIO105
        mutable CAAudioFile af;
+#else
+       mutable CAExtAudioFile af;
+#endif
        uint16_t n_channels;
 
        void init_cafile ();