diff options
Diffstat (limited to 'libs/ardour/ardour/importable_source.h')
-rw-r--r-- | libs/ardour/ardour/importable_source.h | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/libs/ardour/ardour/importable_source.h b/libs/ardour/ardour/importable_source.h index 5845d841b6..a33cf567e7 100644 --- a/libs/ardour/ardour/importable_source.h +++ b/libs/ardour/ardour/importable_source.h @@ -20,7 +20,6 @@ #ifndef __ardour_importable_source_h__ #define __ardour_importable_source_h__ -#include <sndfile.h> #include <pbd/failed_constructor.h> #include <ardour/types.h> @@ -28,32 +27,15 @@ 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; }; } |