diff options
Diffstat (limited to 'src/audio/idct.cc')
| -rw-r--r-- | src/audio/idct.cc | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/src/audio/idct.cc b/src/audio/idct.cc index f8e8769..4566f99 100644 --- a/src/audio/idct.cc +++ b/src/audio/idct.cc @@ -3,16 +3,9 @@ // Used for real-time synthesis of audio from spectral data. #include "dct.h" -#include <math.h> +#include "fft.h" +// Fast O(N log N) implementation using FFT void idct_512(const float* input, float* output) { - const float PI = 3.14159265358979323846f; - for (int n = 0; n < DCT_SIZE; ++n) { - float sum = input[0] / 2.0f; - for (int k = 1; k < DCT_SIZE; ++k) { - sum += - input[k] * cosf(PI / (float)DCT_SIZE * (float)k * ((float)n + 0.5f)); - } - output[n] = sum * (2.0f / (float)DCT_SIZE); - } + idct_fft(input, output, DCT_SIZE); } |
