Chris@297: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
Chris@297: 
Chris@297: /*
Chris@297:     Sonic Visualiser
Chris@297:     An audio file viewer and annotation editor.
Chris@297:     Centre for Digital Music, Queen Mary, University of London.
Chris@297:     
Chris@297:     This program is free software; you can redistribute it and/or
Chris@297:     modify it under the terms of the GNU General Public License as
Chris@297:     published by the Free Software Foundation; either version 2 of the
Chris@297:     License, or (at your option) any later version.  See the file
Chris@297:     COPYING included with this distribution for more information.
Chris@297: */
Chris@297: 
Chris@297: /*
Chris@297:    This is a modified version of a source file from the 
Chris@297:    Rubber Band audio timestretcher library.
Chris@297:    This file copyright 2007 Chris Cannam.
Chris@297: */
Chris@297: 
Chris@297: #ifndef _RESAMPLER_H_
Chris@297: #define _RESAMPLER_H_
Chris@297: 
Chris@297: #include <sys/types.h>
Chris@297: 
Chris@297: class Resampler
Chris@297: {
Chris@297: public:
Chris@297:     enum Quality { Best, FastestTolerable, Fastest };
Chris@297: 
Chris@297:     Resampler(Quality quality, size_t channels, size_t chunkSize = 0);
Chris@297:     ~Resampler();
Chris@297: 
Chris@297:     size_t resample(float **in, float **out,
Chris@297:                     size_t incount, float ratio,
Chris@297:                     bool final = false);
Chris@297: 
Chris@297:     size_t resampleInterleaved(float *in, float *out,
Chris@297:                                size_t incount, float ratio,
Chris@297:                                bool final = false);
Chris@297: 
Chris@297:     void reset();
Chris@297: 
Chris@297: protected:
Chris@297:     class D;
Chris@297:     D *m_d;
Chris@297: };
Chris@297: 
Chris@297: #endif