| Index: Source/platform/audio/FFTFrame.h
|
| diff --git a/Source/platform/audio/FFTFrame.h b/Source/platform/audio/FFTFrame.h
|
| index 99db2b98f635b77553d4d4e97b49c9e5c441035f..81162093f1d125ccfd7b46af3faa95565a8a38aa 100644
|
| --- a/Source/platform/audio/FFTFrame.h
|
| +++ b/Source/platform/audio/FFTFrame.h
|
| @@ -31,6 +31,9 @@
|
|
|
| #include "platform/PlatformExport.h"
|
| #include "platform/audio/AudioArray.h"
|
| +#include "wtf/Forward.h"
|
| +#include "wtf/PassOwnPtr.h"
|
| +#include "wtf/Threading.h"
|
|
|
| #if OS(MACOSX)
|
| #include <Accelerate/Accelerate.h>
|
| @@ -38,15 +41,9 @@
|
| #include <dl/sp/api/omxSP.h>
|
| #elif USE(WEBAUDIO_FFMPEG)
|
| struct RDFTContext;
|
| -#endif
|
| -
|
| -#if USE(WEBAUDIO_IPP)
|
| +#elif USE(WEBAUDIO_IPP)
|
| #include <ipps.h>
|
| -#endif // USE(WEBAUDIO_IPP)
|
| -
|
| -#include "wtf/Forward.h"
|
| -#include "wtf/PassOwnPtr.h"
|
| -#include "wtf/Threading.h"
|
| +#endif
|
|
|
| namespace blink {
|
|
|
| @@ -67,80 +64,58 @@ public:
|
| void doFFT(const float* data);
|
| void doInverseFFT(float* data);
|
|
|
| - float* realData() const;
|
| - float* imagData() const;
|
| + float* realData() const { return const_cast<float*>(m_realData.data()); }
|
| + float* imagData() const { return const_cast<float*>(m_imagData.data()); }
|
|
|
| - void print(); // for debugging
|
| + unsigned fftSize() const { return m_FFTSize; }
|
| + unsigned log2FFTSize() const { return m_log2FFTSize; }
|
|
|
| // CROSS-PLATFORM
|
| // The remaining public methods have cross-platform implementations:
|
|
|
| // Interpolates from frame1 -> frame2 as x goes from 0.0 -> 1.0
|
| static PassOwnPtr<FFTFrame> createInterpolatedFrame(const FFTFrame& frame1, const FFTFrame& frame2, double x);
|
| -
|
| void doPaddedFFT(const float* data, size_t dataSize); // zero-padding with dataSize <= fftSize
|
| double extractAverageGroupDelay();
|
| void addConstantGroupDelay(double sampleFrameDelay);
|
| void multiply(const FFTFrame&); // multiplies ourself with frame : effectively operator*=()
|
|
|
| - unsigned fftSize() const { return m_FFTSize; }
|
| - unsigned log2FFTSize() const { return m_log2FFTSize; }
|
| +#ifndef NDEBUG
|
| + void print(); // for debugging
|
| +#endif
|
|
|
| private:
|
| + void interpolateFrequencyComponents(const FFTFrame& frame1, const FFTFrame& frame2, double x);
|
| +
|
| unsigned m_FFTSize;
|
| unsigned m_log2FFTSize;
|
| -
|
| - void interpolateFrequencyComponents(const FFTFrame& frame1, const FFTFrame& frame2, double x);
|
| + AudioFloatArray m_realData;
|
| + AudioFloatArray m_imagData;
|
|
|
| #if OS(MACOSX)
|
| DSPSplitComplex& dspSplitComplex() { return m_frame; }
|
| DSPSplitComplex dspSplitComplex() const { return m_frame; }
|
| -
|
| static FFTSetup fftSetupForSize(unsigned fftSize);
|
| -
|
| static FFTSetup* fftSetups;
|
| -
|
| FFTSetup m_FFTSetup;
|
| -
|
| DSPSplitComplex m_frame;
|
| - AudioFloatArray m_realData;
|
| - AudioFloatArray m_imagData;
|
| -#else // !OS(MACOSX)
|
| -
|
| -#if USE(WEBAUDIO_FFMPEG)
|
| +#elif USE(WEBAUDIO_FFMPEG)
|
| static RDFTContext* contextForSize(unsigned fftSize, int trans);
|
| -
|
| RDFTContext* m_forwardContext;
|
| RDFTContext* m_inverseContext;
|
| -
|
| float* getUpToDateComplexData();
|
| AudioFloatArray m_complexData;
|
| - AudioFloatArray m_realData;
|
| - AudioFloatArray m_imagData;
|
| -#endif // USE(WEBAUDIO_FFMPEG)
|
| -
|
| -#if USE(WEBAUDIO_IPP)
|
| +#elif USE(WEBAUDIO_IPP)
|
| Ipp8u* m_buffer;
|
| IppsDFTSpec_R_32f* m_DFTSpec;
|
| -
|
| float* getUpToDateComplexData();
|
| AudioFloatArray m_complexData;
|
| - AudioFloatArray m_realData;
|
| - AudioFloatArray m_imagData;
|
| -#endif // USE(WEBAUDIO_IPP)
|
| -
|
| -#if USE(WEBAUDIO_OPENMAX_DL_FFT)
|
| +#elif USE(WEBAUDIO_OPENMAX_DL_FFT)
|
| static OMXFFTSpec_R_F32* contextForSize(unsigned log2FFTSize);
|
| -
|
| OMXFFTSpec_R_F32* m_forwardContext;
|
| OMXFFTSpec_R_F32* m_inverseContext;
|
| -
|
| AudioFloatArray m_complexData;
|
| - AudioFloatArray m_realData;
|
| - AudioFloatArray m_imagData;
|
| #endif
|
| -
|
| -#endif // !OS(MACOSX)
|
| };
|
|
|
| } // namespace blink
|
|
|