From 997e4b1f9cd7ccfc704b7c035051da7f60d831e7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 17 Mar 2008 20:54:03 +0000 Subject: merge with 2.0-ongoing @ rev 3147 git-svn-id: svn://localhost/ardour2/branches/3.0@3152 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/sndfileimportable.cc | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 libs/ardour/sndfileimportable.cc (limited to 'libs/ardour/sndfileimportable.cc') diff --git a/libs/ardour/sndfileimportable.cc b/libs/ardour/sndfileimportable.cc new file mode 100644 index 0000000000..eb0e8a8afb --- /dev/null +++ b/libs/ardour/sndfileimportable.cc @@ -0,0 +1,47 @@ +#include +#include + +using namespace ARDOUR; +using namespace std; + +SndFileImportableSource::SndFileImportableSource (const string& path) + : in (sf_open (path.c_str(), SFM_READ, &sf_info), sf_close) +{ + if (!in) throw failed_constructor(); +} + +SndFileImportableSource::~SndFileImportableSource () +{ +} + +nframes_t +SndFileImportableSource::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; +} + +uint +SndFileImportableSource::channels () const +{ + return sf_info.channels; +} + +nframes_t +SndFileImportableSource::length () const +{ + return sf_info.frames; +} + +nframes_t +SndFileImportableSource::samplerate() const +{ + return sf_info.samplerate; +} + +void +SndFileImportableSource::seek (nframes_t pos) +{ + sf_seek (in.get(), 0, SEEK_SET); +} -- cgit v1.2.3