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