... except Audacity.h; and in no others. Do so even if Experimental.h gets multiply included, as in both the .h and .cpp files. This makes it easier to do a text scan to be sure there are no unintended quiet changes of meaning because of omission of Experimental.h when the flag is an enabled one. Also move inclusions of Experimental.h earlier. Also don't require Experimental.h to be preceded by Audacity.h to define EXPERIMENTAL_MIDI_OUT correctly.
37 lines
742 B
C++
37 lines
742 B
C++
#ifndef __realfftf_h
|
|
#define __realfftf_h
|
|
|
|
#include "Audacity.h"
|
|
|
|
#include "Experimental.h"
|
|
|
|
#include "MemoryX.h"
|
|
|
|
using fft_type = float;
|
|
struct FFTParam {
|
|
ArrayOf<int> BitReversed;
|
|
ArrayOf<fft_type> SinTable;
|
|
size_t Points;
|
|
#ifdef EXPERIMENTAL_EQ_SSE_THREADED
|
|
int pow2Bits;
|
|
#endif
|
|
};
|
|
|
|
struct FFTDeleter{
|
|
void operator () (FFTParam *p) const;
|
|
};
|
|
|
|
using HFFT = std::unique_ptr<
|
|
FFTParam, FFTDeleter
|
|
>;
|
|
|
|
HFFT GetFFT(size_t);
|
|
void RealFFTf(fft_type *, const FFTParam *);
|
|
void InverseRealFFTf(fft_type *, const FFTParam *);
|
|
void ReorderToTime(const FFTParam *hFFT, const fft_type *buffer, fft_type *TimeOut);
|
|
void ReorderToFreq(const FFTParam *hFFT, const fft_type *buffer,
|
|
fft_type *RealOut, fft_type *ImagOut);
|
|
|
|
#endif
|
|
|