X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fresampled_source.h;h=2bf002befe0879f9d4f818917e00aaa5ba5c4f8c;hb=88c82aeb56c62d9d0c0acff51e360492ad9b8d23;hp=8ca56b52d3d14c0726a190b281a1b6028bd90026;hpb=27b022bdebcf324373c01f6aa4dc666630a2d5bf;p=ardour.git diff --git a/libs/ardour/ardour/resampled_source.h b/libs/ardour/ardour/resampled_source.h index 8ca56b52d3..2bf002befe 100644 --- a/libs/ardour/ardour/resampled_source.h +++ b/libs/ardour/ardour/resampled_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 @@ -22,29 +22,41 @@ #include -#include -#include +#include "ardour/libardour_visibility.h" +#include "ardour/types.h" +#include "ardour/importable_source.h" namespace ARDOUR { -class ResampledImportableSource : public ImportableSource +class LIBARDOUR_API ResampledImportableSource : public ImportableSource { public: - ResampledImportableSource (const std::string& path, - nframes_t rate, SrcQuality); + ResampledImportableSource (boost::shared_ptr, samplecnt_t rate, SrcQuality); ~ResampledImportableSource (); - - nframes_t read (Sample* buffer, nframes_t nframes); - - float ratio() const { return src_data.src_ratio; } - + + samplecnt_t read (Sample* buffer, samplecnt_t nframes); + float ratio() const { return _src_data.src_ratio; } + uint32_t channels() const { return source->channels(); } + samplecnt_t length() const { return source->length(); } + samplecnt_t samplerate() const { return source->samplerate(); } + void seek (samplepos_t); + samplepos_t natural_position() const; + + bool clamped_at_unity () const { + /* resampling may generate inter-sample peaks with magnitude > 1 */ + return false; + } + static const uint32_t blocksize; - + private: - float* input; - SRC_STATE* src_state; - SRC_DATA src_data; + boost::shared_ptr source; + float* _input; + int _src_type; + SRC_STATE* _src_state; + SRC_DATA _src_data; + bool _end_of_input; }; }