Fix importing to a fixed-point format with resampling
[ardour.git] / libs / zita-resampler / zita-resampler / cresampler.h
1 // ----------------------------------------------------------------------------
2 //
3 //  Copyright (C) 2013 Fons Adriaensen <fons@linuxaudio.org>
4 //
5 //  This program is free software; you can redistribute it and/or modify
6 //  it under the terms of the GNU General Public License as published by
7 //  the Free Software Foundation; either version 3 of the License, or
8 //  (at your option) any later version.
9 //
10 //  This program is distributed in the hope that it will be useful,
11 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 //  GNU General Public License for more details.
14 //
15 //  You should have received a copy of the GNU General Public License
16 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 //
18 // ----------------------------------------------------------------------------
19
20
21 #ifndef _ZITA_CRESAMPLER_H_
22 #define _ZITA_CRESAMPLER_H_
23
24 #include "zita-resampler/zresampler_visibility.h"
25
26 namespace ArdourZita {
27
28 class LIBZRESAMPLER_API CResampler
29 {
30 public:
31         CResampler (void);
32         ~CResampler (void);
33
34         int  setup (double ratio, unsigned int nchan);
35
36         void   clear (void);
37         int    reset (void);
38         int    nchan (void) const { return _nchan; }
39         int    inpsize (void) const;
40         double inpdist (void) const;
41         int    process (void);
42
43         void set_ratio (double r);
44         void set_phase (double p);
45
46         unsigned int         inp_count;
47         unsigned int         out_count;
48         float               *inp_data;
49         float               *out_data;
50         void                *inp_list;
51         void                *out_list;
52
53 private:
54         unsigned int         _nchan;
55         unsigned int         _inmax;
56         unsigned int         _index;
57         unsigned int         _nread;
58         unsigned int         _nzero;
59         double               _phase;
60         double               _pstep;
61         float               *_buff;
62 };
63
64 };
65
66 #endif