Merge branch 'windows' of git.ardour.org:ardour/ardour into windows
[ardour.git] / libs / qm-dsp / dsp / wavelet / Wavelet.h
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
2
3 /*
4     QM DSP Library
5
6     Centre for Digital Music, Queen Mary, University of London.
7     This file copyright 2009 Thomas Wilmering.
8
9     This program is free software; you can redistribute it and/or
10     modify it under the terms of the GNU General Public License as
11     published by the Free Software Foundation; either version 2 of the
12     License, or (at your option) any later version.  See the file
13     COPYING included with this distribution for more information.
14 */
15
16 #ifndef _WAVELET_H_
17 #define _WAVELET_H_
18
19 #include <string>
20 #include <vector>
21
22 class Wavelet
23 {
24 public:
25     enum Type {
26         Haar = 0,
27         Daubechies_2,
28         Daubechies_3,
29         Daubechies_4,
30         Daubechies_5,
31         Daubechies_6,
32         Daubechies_7,
33         Daubechies_8,
34         Daubechies_9,
35         Daubechies_10,
36         Daubechies_20,
37         Daubechies_40,
38         Symlet_2,
39         Symlet_3,
40         Symlet_4,
41         Symlet_5,
42         Symlet_6,
43         Symlet_7,
44         Symlet_8,
45         Symlet_9,
46         Symlet_10,
47         Symlet_20,
48         Symlet_30,
49         Coiflet_1,
50         Coiflet_2,
51         Coiflet_3,
52         Coiflet_4,
53         Coiflet_5,
54         Biorthogonal_1_3,
55         Biorthogonal_1_5,
56         Biorthogonal_2_2,
57         Biorthogonal_2_4,
58         Biorthogonal_2_6,
59         Biorthogonal_2_8,
60         Biorthogonal_3_1,
61         Biorthogonal_3_3,
62         Biorthogonal_3_5,
63         Biorthogonal_3_7,
64         Biorthogonal_3_9,
65         Biorthogonal_4_4,
66         Biorthogonal_5_5,
67         Biorthogonal_6_8,
68         Meyer,
69
70         LastType = Meyer
71     };
72
73     static std::string getWaveletName(Type);
74
75     static void createDecompositionFilters(Type,
76                                            std::vector<float> &lpd,
77                                            std::vector<float> &hpd);
78 };
79
80 #endif