switch Route::fed_by from shared_ptr to weak_ptr and thus begin to allow Route destru...
[ardour.git] / libs / ardour / ardour / importable_source.h
index 5845d841b6344e6b84cd4718a1d25bcd6308c12d..801e7888a96f98103df58db40c95144ba95a6517 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2007 Paul Davis 
+    Copyright (C) 2007 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 __ardour_importable_source_h__
 #define __ardour_importable_source_h__
 
-#include <sndfile.h>
-#include <pbd/failed_constructor.h>
-#include <ardour/types.h>
+#include "pbd/failed_constructor.h"
+#include "ardour/types.h"
 
 namespace ARDOUR {
 
 class ImportableSource {
 public:
-       ImportableSource (const std::string& path)
-               : in (sf_open (path.c_str(), SFM_READ, &sf_info), sf_close)
-       {
-               if (!in) throw failed_constructor();
-       
-       }
-       
+       ImportableSource () {}
        virtual ~ImportableSource() {}
 
-       virtual nframes_t read (Sample* buffer, nframes_t nframes) {
-               nframes_t per_channel = nframes / sf_info.channels;
-               per_channel = sf_readf_float (in.get(), buffer, per_channel);
-               return per_channel * sf_info.channels;
-       }
-
+       virtual nframes_t read (Sample* buffer, nframes_t nframes) = 0;
        virtual float ratio() const { return 1.0f; }
-
-       uint channels() const { return sf_info.channels; }
-
-       nframes_t length() const { return sf_info.frames; }
-
-       nframes_t samplerate() const { return sf_info.samplerate; }
-
-protected:
-       SF_INFO sf_info;
-       boost::shared_ptr<SNDFILE> in;
+       virtual uint32_t channels() const = 0;
+       virtual nframes_t length() const = 0;
+       virtual nframes_t samplerate() const = 0;
+       virtual void      seek (nframes_t pos) = 0;
+       virtual nframes64_t natural_position() const = 0;
 };
 
 }