X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fimportable_source.h;h=9463f0b28b772b009d6ecc7b0c5ae9318dcfee11;hb=11a68f7dd38e72c3e497569a60cb0740a33b78cf;hp=29742d10762a3b55be57562054f0b74e4aa9ee61;hpb=169fd9e3688d9cf89a17ad686161b5aa25486260;p=ardour.git diff --git a/libs/ardour/ardour/importable_source.h b/libs/ardour/ardour/importable_source.h index 29742d1076..9463f0b28b 100644 --- a/libs/ardour/ardour/importable_source.h +++ b/libs/ardour/ardour/importable_source.h @@ -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 @@ -20,27 +20,26 @@ #ifndef __ardour_importable_source_h__ #define __ardour_importable_source_h__ -#include -#include +#include "pbd/failed_constructor.h" +#include "ardour/libardour_visibility.h" +#include "ardour/types.h" namespace ARDOUR { -class ImportableSource { - public: - ImportableSource (SNDFILE* sf, SF_INFO* info) : in (sf), sf_info (info) {} - virtual ~ImportableSource() {} +class LIBARDOUR_API ImportableSource { +public: + 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, buffer, per_channel); - return per_channel * sf_info->channels; - } + virtual framecnt_t read (Sample* buffer, framecnt_t nframes) = 0; + virtual float ratio() const { return 1.0f; } + virtual uint32_t channels() const = 0; + virtual framecnt_t length() const = 0; + virtual framecnt_t samplerate() const = 0; + virtual void seek (framepos_t pos) = 0; + virtual framepos_t natural_position() const = 0; - virtual float ratio() const { return 1.0f; } - -protected: - SNDFILE* in; - SF_INFO* sf_info; + virtual bool clamped_at_unity () const = 0; }; }