Change members's order and combine duplicated method for FFTFrame.

realData, imagData are common members for all platform and solution.
It doesn't need to be under each solution's macro.
Then, additionally wrong style has been fixed.

BUG=411127

Review URL: https://codereview.chromium.org/536843002

git-svn-id: svn://svn.chromium.org/blink/trunk@181442 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent ade5e96e
......@@ -33,16 +33,15 @@
#include "platform/audio/FFTFrame.h"
#include "platform/audio/VectorMath.h"
#ifndef NDEBUG
#include <stdio.h>
#endif
#include "platform/Logging.h"
#include "wtf/Complex.h"
#include "wtf/MathExtras.h"
#include "wtf/OwnPtr.h"
#ifndef NDEBUG
#include <stdio.h>
#endif
namespace blink {
void FFTFrame::doPaddedFFT(const float* data, size_t dataSize)
......
......@@ -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
......
......@@ -83,18 +83,6 @@ void FFTFrame::cleanup()
ASSERT_NOT_REACHED();
}
float* FFTFrame::realData() const
{
ASSERT_NOT_REACHED();
return 0;
}
float* FFTFrame::imagData() const
{
ASSERT_NOT_REACHED();
return 0;
}
} // namespace blink
#endif // !OS(MACOSX) && !USE(WEBAUDIO_FFMPEG) && !USE(WEBAUDIO_IPP) && !USE(WEBAUDIO_OPENMAX_DL_FFT)
......
......@@ -45,11 +45,11 @@ const unsigned kMaxFFTPow2Size = 15;
FFTFrame::FFTFrame(unsigned fftSize)
: m_FFTSize(fftSize)
, m_log2FFTSize(static_cast<unsigned>(log2(fftSize)))
, m_realData(fftSize / 2)
, m_imagData(fftSize / 2)
, m_forwardContext(0)
, m_inverseContext(0)
, m_complexData(fftSize)
, m_realData(fftSize / 2)
, m_imagData(fftSize / 2)
{
// We only allow power of two.
ASSERT(1UL << m_log2FFTSize == m_FFTSize);
......@@ -71,11 +71,11 @@ FFTFrame::FFTFrame()
FFTFrame::FFTFrame(const FFTFrame& frame)
: m_FFTSize(frame.m_FFTSize)
, m_log2FFTSize(frame.m_log2FFTSize)
, m_realData(frame.m_FFTSize / 2)
, m_imagData(frame.m_FFTSize / 2)
, m_forwardContext(0)
, m_inverseContext(0)
, m_complexData(frame.m_FFTSize)
, m_realData(frame.m_FFTSize / 2)
, m_imagData(frame.m_FFTSize / 2)
{
m_forwardContext = contextForSize(m_log2FFTSize);
m_inverseContext = contextForSize(m_log2FFTSize);
......@@ -154,16 +154,6 @@ void FFTFrame::doInverseFFT(float* data)
}
}
float* FFTFrame::realData() const
{
return const_cast<float*>(m_realData.data());
}
float* FFTFrame::imagData() const
{
return const_cast<float*>(m_imagData.data());
}
OMXFFTSpec_R_F32* FFTFrame::contextForSize(unsigned log2FFTSize)
{
ASSERT(log2FFTSize);
......
......@@ -52,11 +52,11 @@ const int kMaxFFTPow2Size = 24;
FFTFrame::FFTFrame(unsigned fftSize)
: m_FFTSize(fftSize)
, m_log2FFTSize(static_cast<unsigned>(log2(fftSize)))
, m_realData(fftSize / 2)
, m_imagData(fftSize / 2)
, m_forwardContext(0)
, m_inverseContext(0)
, m_complexData(fftSize)
, m_realData(fftSize / 2)
, m_imagData(fftSize / 2)
{
// We only allow power of two.
ASSERT(1UL << m_log2FFTSize == m_FFTSize);
......@@ -78,11 +78,11 @@ FFTFrame::FFTFrame()
FFTFrame::FFTFrame(const FFTFrame& frame)
: m_FFTSize(frame.m_FFTSize)
, m_log2FFTSize(frame.m_log2FFTSize)
, m_realData(frame.m_FFTSize / 2)
, m_imagData(frame.m_FFTSize / 2)
, m_forwardContext(0)
, m_inverseContext(0)
, m_complexData(frame.m_FFTSize)
, m_realData(frame.m_FFTSize / 2)
, m_imagData(frame.m_FFTSize / 2)
{
m_forwardContext = contextForSize(m_FFTSize, DFT_R2C);
m_inverseContext = contextForSize(m_FFTSize, IDFT_C2R);
......@@ -145,16 +145,6 @@ void FFTFrame::doInverseFFT(float* data)
VectorMath::vsmul(interleavedData, 1, &scale, data, 1, m_FFTSize);
}
float* FFTFrame::realData() const
{
return const_cast<float*>(m_realData.data());
}
float* FFTFrame::imagData() const
{
return const_cast<float*>(m_imagData.data());
}
float* FFTFrame::getUpToDateComplexData()
{
// FIXME: if we can't completely get rid of this method, SSE
......
......@@ -45,9 +45,9 @@ const unsigned maximumFFTPower2Size = 24;
FFTFrame::FFTFrame(unsigned fftSize)
: m_FFTSize(fftSize)
, m_log2FFTSize(static_cast<unsigned>(log2(fftSize)))
, m_complexData(fftSize)
, m_realData(fftSize / 2)
, m_imagData(fftSize / 2)
, m_complexData(fftSize)
{
// We only allow power of two.
ASSERT(1UL << m_log2FFTSize == m_FFTSize);
......@@ -70,9 +70,9 @@ FFTFrame::FFTFrame()
FFTFrame::FFTFrame(const FFTFrame& frame)
: m_FFTSize(frame.m_FFTSize)
, m_log2FFTSize(frame.m_log2FFTSize)
, m_complexData(frame.m_FFTSize)
, m_realData(frame.m_FFTSize / 2)
, m_imagData(frame.m_FFTSize / 2)
, m_complexData(frame.m_FFTSize)
{
ippsDFTInitAlloc_R_32f(&m_DFTSpec, m_FFTSize, IPP_FFT_NODIV_BY_ANY, ippAlgHintFast);
int bufferSize = 0;
......@@ -124,16 +124,6 @@ void FFTFrame::doInverseFFT(float* data)
ippsMulC_32f_I(scale, reinterpret_cast<Ipp32f*>(data), m_FFTSize);
}
float* FFTFrame::realData() const
{
return const_cast<float*>(m_realData.data());
}
float* FFTFrame::imagData() const
{
return const_cast<float*>(m_imagData.data());
}
float* FFTFrame::getUpToDateComplexData()
{
int len = m_FFTSize >> 1;
......
......@@ -80,9 +80,9 @@ FFTFrame::FFTFrame()
FFTFrame::FFTFrame(const FFTFrame& frame)
: m_FFTSize(frame.m_FFTSize)
, m_log2FFTSize(frame.m_log2FFTSize)
, m_FFTSetup(frame.m_FFTSetup)
, m_realData(frame.m_FFTSize)
, m_imagData(frame.m_FFTSize)
, m_FFTSetup(frame.m_FFTSetup)
{
// Setup frame data
m_frame.realp = m_realData.data();
......@@ -153,16 +153,6 @@ void FFTFrame::cleanup()
fftSetups = 0;
}
float* FFTFrame::realData() const
{
return m_frame.realp;
}
float* FFTFrame::imagData() const
{
return m_frame.imagp;
}
} // namespace blink
#endif // #if OS(MACOSX)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment