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