Index: third_party/WebKit/Source/platform/audio/ipp/FFTFrameIPP.cpp |
diff --git a/third_party/WebKit/Source/platform/audio/ipp/FFTFrameIPP.cpp b/third_party/WebKit/Source/platform/audio/ipp/FFTFrameIPP.cpp |
deleted file mode 100644 |
index 367707c6e4683fd048a653d6a51acc08fa6c1ef5..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/Source/platform/audio/ipp/FFTFrameIPP.cpp |
+++ /dev/null |
@@ -1,130 +0,0 @@ |
-/* |
- * Copyright (C) 2011 Google Inc. All rights reserved. |
- * Copyright (C) 2012 Intel 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. |
- * |
- * 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. |
- */ |
- |
-// FFTFrame implementation using Intel IPP's DFT algorithm, |
-// suitable for use on Linux. |
- |
-#include "platform/wtf/build_config.h" |
- |
-#if USE(WEBAUDIO_IPP) |
- |
-#include "platform/audio/FFTFrame.h" |
- |
-#include "platform/wtf/MathExtras.h" |
- |
-namespace blink { |
- |
-const unsigned maximumFFTPower2Size = 24; |
- |
-// Normal constructor: allocates for a given fftSize. |
-FFTFrame::FFTFrame(unsigned fftSize) |
- : m_FFTSize(fftSize), |
- m_log2FFTSize(static_cast<unsigned>(log2(fftSize))), |
- m_realData(fftSize / 2), |
- m_imagData(fftSize / 2), |
- m_complexData(fftSize) { |
- // We only allow power of two. |
- DCHECK_EQ(1UL << m_log2FFTSize, m_FFTSize); |
- DCHECK_LE(m_log2FFTSize, maximumFFTPower2Size); |
- |
- ippsDFTInitAlloc_R_32f(&m_DFTSpec, m_FFTSize, IPP_FFT_NODIV_BY_ANY, |
- ippAlgHintFast); |
- int bufferSize = 0; |
- ippsDFTGetBufSize_R_32f(m_DFTSpec, &bufferSize); |
- m_buffer = ippsMalloc_8u(bufferSize); |
-} |
- |
-// Creates a blank/empty frame (interpolate() must later be called). |
-FFTFrame::FFTFrame() : m_FFTSize(0), m_log2FFTSize(0) {} |
- |
-// Copy constructor. |
-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_complexData(frame.m_FFTSize) { |
- ippsDFTInitAlloc_R_32f(&m_DFTSpec, m_FFTSize, IPP_FFT_NODIV_BY_ANY, |
- ippAlgHintFast); |
- int bufferSize = 0; |
- ippsDFTGetBufSize_R_32f(m_DFTSpec, &bufferSize); |
- m_buffer = ippsMalloc_8u(bufferSize); |
- |
- // Copy/setup frame data. |
- unsigned numberOfBytes = sizeof(float) * m_FFTSize; |
- memcpy(realData(), frame.realData(), numberOfBytes); |
- memcpy(imagData(), frame.imagData(), numberOfBytes); |
-} |
- |
-void FFTFrame::initialize() {} |
- |
-void FFTFrame::cleanup() {} |
- |
-FFTFrame::~FFTFrame() { |
- ippsFree(m_buffer); |
- ippsDFTFree_R_32f(m_DFTSpec); |
-} |
- |
-void FFTFrame::doFFT(const float* data) { |
- Ipp32f* complexP = m_complexData.data(); |
- |
- // Compute Forward transform to perm format. |
- ippsDFTFwd_RToPerm_32f(reinterpret_cast<Ipp32f*>(const_cast<float*>(data)), |
- complexP, m_DFTSpec, m_buffer); |
- |
- Ipp32f* realP = m_realData.data(); |
- Ipp32f* imagP = m_imagData.data(); |
- ippsCplxToReal_32fc(reinterpret_cast<Ipp32fc*>(complexP), realP, imagP, |
- m_FFTSize >> 1); |
-} |
- |
-void FFTFrame::doInverseFFT(float* data) { |
- Ipp32f* complexP = getUpToDateComplexData(); |
- |
- // Compute inverse transform. |
- ippsDFTInv_PermToR_32f(complexP, reinterpret_cast<Ipp32f*>(data), m_DFTSpec, |
- m_buffer); |
- |
- // Scale so that a forward then inverse FFT yields exactly the original data. |
- const float scale = 1.0 / m_FFTSize; |
- |
- ippsMulC_32f_I(scale, reinterpret_cast<Ipp32f*>(data), m_FFTSize); |
-} |
- |
-float* FFTFrame::getUpToDateComplexData() { |
- int len = m_FFTSize >> 1; |
- // Merge the real and imagimary vectors to complex vector. |
- Ipp32f* realP = m_realData.data(); |
- Ipp32f* imagP = m_imagData.data(); |
- Ipp32fc* complexP = reinterpret_cast<Ipp32fc*>(m_complexData.data()); |
- ippsRealToCplx_32f(realP, imagP, complexP, len); |
- |
- return const_cast<float*>(m_complexData.data()); |
-} |
- |
-} // namespace blink |
- |
-#endif // USE(WEBAUDIO_IPP) |