diff options
Diffstat (limited to 'WebCore/platform/audio/FFTFrame.h')
-rw-r--r-- | WebCore/platform/audio/FFTFrame.h | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/WebCore/platform/audio/FFTFrame.h b/WebCore/platform/audio/FFTFrame.h deleted file mode 100644 index 1a82ef0..0000000 --- a/WebCore/platform/audio/FFTFrame.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef FFTFrame_h -#define FFTFrame_h - -#include "AudioArray.h" - -#if OS(DARWIN) -#include <Accelerate/Accelerate.h> -#endif - -#if !OS(DARWIN) && USE(WEBAUDIO_MKL) -#include "mkl_dfti.h" -#endif - -#include <wtf/PassOwnPtr.h> -#include <wtf/Platform.h> - -namespace WebCore { - -// Defines the interface for an "FFT frame", an object which is able to perform a forward -// and reverse FFT, internally storing the resultant frequency-domain data. - -class FFTFrame { -public: - // The constructors, destructor, and methods up to the CROSS-PLATFORM section have platform-dependent implementations. - - FFTFrame(unsigned fftSize); - FFTFrame(); // creates a blank/empty frame for later use with createInterpolatedFrame() - FFTFrame(const FFTFrame& frame); - ~FFTFrame(); - - static void cleanup(); - void doFFT(float* data); - void doInverseFFT(float* data); - void multiply(const FFTFrame& frame); // multiplies ourself with frame : effectively operator*=() - - float* realData() const; - float* imagData() const; - - void print(); // for debugging - - // 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(float* data, size_t dataSize); // zero-padding with dataSize <= fftSize - double extractAverageGroupDelay(); - void addConstantGroupDelay(double sampleFrameDelay); - - unsigned fftSize() const { return m_FFTSize; } - unsigned log2FFTSize() const { return m_log2FFTSize; } - -private: - unsigned m_FFTSize; - unsigned m_log2FFTSize; - - void interpolateFrequencyComponents(const FFTFrame& frame1, const FFTFrame& frame2, double x); - -#if OS(DARWIN) - 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; -#endif // OS(DARWIN) -#if !OS(DARWIN) && USE(WEBAUDIO_MKL) - // Interleaves the planar real and imaginary data and returns a - // pointer to the resulting storage which can be used for in-place - // or out-of-place operations. FIXME: ideally all of the MKL - // routines would operate on planar data and this method would be - // removed. - float* getUpToDateComplexData(); - - static DFTI_DESCRIPTOR_HANDLE descriptorHandleForSize(unsigned fftSize); - - static DFTI_DESCRIPTOR_HANDLE* descriptorHandles; - - DFTI_DESCRIPTOR_HANDLE m_handle; - AudioFloatArray m_complexData; - AudioFloatArray m_realData; - AudioFloatArray m_imagData; -#endif // !OS(DARWIN) && USE(WEBAUDIO_MKL) -}; - -} // namespace WebCore - -#endif // FFTFrame_h |