Mercurial > hg > qm-dsp
comparison dsp/transforms/DCT.cpp @ 483:fdaa63607c15
Untabify, indent, tidy
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Fri, 31 May 2019 11:54:32 +0100 |
parents | 4ae4229a074a |
children |
comparison
equal
deleted
inserted
replaced
482:cbe668c7d724 | 483:fdaa63607c15 |
---|---|
34 | 34 |
35 void | 35 void |
36 DCT::forward(const double *in, double *out) | 36 DCT::forward(const double *in, double *out) |
37 { | 37 { |
38 for (int i = 0; i < m_n; ++i) { | 38 for (int i = 0; i < m_n; ++i) { |
39 m_time2[i*2 + 1] = in[i]; | 39 m_time2[i*2 + 1] = in[i]; |
40 m_time2[m_n*4 - i*2 - 1] = in[i]; | 40 m_time2[m_n*4 - i*2 - 1] = in[i]; |
41 } | 41 } |
42 | 42 |
43 m_fft.forward(m_time2.data(), m_freq2r.data(), m_freq2i.data()); | 43 m_fft.forward(m_time2.data(), m_freq2r.data(), m_freq2i.data()); |
44 | 44 |
45 for (int i = 0; i < m_n; ++i) { | 45 for (int i = 0; i < m_n; ++i) { |
46 out[i] = m_freq2r[i]; | 46 out[i] = m_freq2r[i]; |
47 } | 47 } |
48 } | 48 } |
49 | 49 |
50 void | 50 void |
51 DCT::forwardUnitary(const double *in, double *out) | 51 DCT::forwardUnitary(const double *in, double *out) |
52 { | 52 { |
53 forward(in, out); | 53 forward(in, out); |
54 for (int i = 0; i < m_n; ++i) { | 54 for (int i = 0; i < m_n; ++i) { |
55 out[i] /= m_scale; | 55 out[i] /= m_scale; |
56 } | 56 } |
57 out[0] /= sqrt(2.0); | 57 out[0] /= sqrt(2.0); |
58 } | 58 } |
59 | 59 |
60 void | 60 void |
61 DCT::inverse(const double *in, double *out) | 61 DCT::inverse(const double *in, double *out) |
62 { | 62 { |
63 for (int i = 0; i < m_n; ++i) { | 63 for (int i = 0; i < m_n; ++i) { |
64 m_freq2r[i] = in[i]; | 64 m_freq2r[i] = in[i]; |
65 } | 65 } |
66 for (int i = 0; i < m_n; ++i) { | 66 for (int i = 0; i < m_n; ++i) { |
67 m_freq2r[m_n*2 - i] = -in[i]; | 67 m_freq2r[m_n*2 - i] = -in[i]; |
68 } | 68 } |
69 m_freq2r[m_n] = 0.0; | 69 m_freq2r[m_n] = 0.0; |
70 | 70 |
71 for (int i = 0; i <= m_n*2; ++i) { | 71 for (int i = 0; i <= m_n*2; ++i) { |
72 m_freq2i[i] = 0.0; | 72 m_freq2i[i] = 0.0; |
73 } | 73 } |
74 | 74 |
75 m_fft.inverse(m_freq2r.data(), m_freq2i.data(), m_time2.data()); | 75 m_fft.inverse(m_freq2r.data(), m_freq2i.data(), m_time2.data()); |
76 | 76 |
77 for (int i = 0; i < m_n; ++i) { | 77 for (int i = 0; i < m_n; ++i) { |
78 out[i] = m_time2[i*2 + 1]; | 78 out[i] = m_time2[i*2 + 1]; |
79 } | 79 } |
80 } | 80 } |
81 | 81 |
82 void | 82 void |
83 DCT::inverseUnitary(const double *in, double *out) | 83 DCT::inverseUnitary(const double *in, double *out) |
84 { | 84 { |
85 for (int i = 0; i < m_n; ++i) { | 85 for (int i = 0; i < m_n; ++i) { |
86 m_scaled[i] = in[i] * m_scale; | 86 m_scaled[i] = in[i] * m_scale; |
87 } | 87 } |
88 m_scaled[0] *= sqrt(2.0); | 88 m_scaled[0] *= sqrt(2.0); |
89 inverse(m_scaled.data(), out); | 89 inverse(m_scaled.data(), out); |
90 } | 90 } |
91 | 91 |