Auto-monitor == Cue for MIDI tracks.
[ardour.git] / libs / zita-resampler / zita-resampler / vmresampler.h
1 // ----------------------------------------------------------------------------
2 //
3 //  Copyright (C) 2006-2012 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_VMRESAMPLER_H_
22 #define _ZITA_VMRESAMPLER_H_
23
24 #include "zita-resampler/zresampler_visibility.h"
25 #include "zita-resampler/resampler-table.h"
26
27 namespace ArdourZita {
28
29 class LIBZRESAMPLER_API VMResampler
30 {
31 public:
32         VMResampler (void);
33         ~VMResampler (void);
34
35         int  setup (unsigned int hlen);
36         int  setup (unsigned int hlen, double frel);
37
38         void   clear (void);
39         int    reset (void);
40         int    inpsize (void) const;
41         double inpdist (void) const;
42         int    process (void);
43
44         void   set_phase (double p);
45         void   set_rrfilt (double t);
46         double set_rratio (double r);
47
48         unsigned int         inp_count;
49         unsigned int         out_count;
50         float               *inp_data;
51         float               *out_data;
52         void                *inp_list;
53         void                *out_list;
54
55 private:
56         enum { NPHASE = 256 };
57
58         Resampler_table     *_table;
59         unsigned int         _inmax;
60         unsigned int         _index;
61         unsigned int         _nread;
62         double               _phase;
63         double               _pstep;
64         double               _qstep;
65         double               _wstep;
66         float               *_buff;
67         float               *_c1;
68         float               *_c2;
69 };
70
71 };
72
73 #endif