Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
2010-10-27 Chris Rogers <crogers@google.com>
Reviewed by Kenneth Russell. Add VectorMath files https://bugs.webkit.org/show_bug.cgi?id=48467 No new tests since audio API is not yet implemented. * platform/audio/VectorMath.cpp: Added. (WebCore::VectorMath::vsmul): (WebCore::VectorMath::vadd): * platform/audio/VectorMath.h: Added. Canonical link: https://commits.webkit.org/61259@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@70743 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- Loading branch information
Chris Rogers
committed
Oct 28, 2010
1 parent
002cb2b
commit 67805189e036fc419665e3f109e3db53db8bf816
Showing
3 changed files
with
139 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@@ -0,0 +1,84 @@ | ||
/* | ||
* 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. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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. | ||
*/ | ||
|
||
#include "config.h" | ||
|
||
#if ENABLE(WEB_AUDIO) | ||
|
||
#include "VectorMath.h" | ||
|
||
#if OS(DARWIN) | ||
#include <Accelerate/Accelerate.h> | ||
#endif | ||
|
||
namespace WebCore { | ||
|
||
namespace VectorMath { | ||
|
||
#if OS(DARWIN) | ||
// On the Mac we use the highly optimized versions in Accelerate.framework | ||
|
||
void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess) | ||
{ | ||
vDSP_vsmul(sourceP, sourceStride, scale, destP, destStride, framesToProcess); | ||
} | ||
|
||
void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess) | ||
{ | ||
vDSP_vadd(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess); | ||
} | ||
|
||
#else | ||
|
||
void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess) | ||
{ | ||
// FIXME: optimize for SSE | ||
int n = framesToProcess; | ||
float k = *scale; | ||
while (n--) { | ||
*destP = k * *sourceP; | ||
sourceP += sourceStride; | ||
destP += destStride; | ||
} | ||
} | ||
|
||
void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess) | ||
{ | ||
// FIXME: optimize for SSE | ||
int n = framesToProcess; | ||
while (n--) { | ||
*destP = *source1P + *source2P; | ||
source1P += sourceStride1; | ||
source2P += sourceStride2; | ||
destP += destStride; | ||
} | ||
} | ||
|
||
#endif // OS(DARWIN) | ||
|
||
} // namespace VectorMath | ||
|
||
} // namespace WebCore | ||
|
||
#endif // ENABLE(WEB_AUDIO) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@@ -0,0 +1,41 @@ | ||
/* | ||
* 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. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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 VectorMath_h | ||
#define VectorMath_h | ||
|
||
// Defines the interface for several vector math functions whose implementation will ideally be optimized. | ||
|
||
namespace WebCore { | ||
|
||
namespace VectorMath { | ||
|
||
void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess); | ||
void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess); | ||
|
||
} // namespace VectorMath | ||
|
||
} // namespace WebCore | ||
|
||
#endif // VectorMath_h |