diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/Modules/webaudio/WaveShaperNode.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/Modules/webaudio/WaveShaperNode.cpp')
-rw-r--r-- | Source/WebCore/Modules/webaudio/WaveShaperNode.cpp | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/Source/WebCore/Modules/webaudio/WaveShaperNode.cpp b/Source/WebCore/Modules/webaudio/WaveShaperNode.cpp index 69ec27a2c..50cf0630c 100644 --- a/Source/WebCore/Modules/webaudio/WaveShaperNode.cpp +++ b/Source/WebCore/Modules/webaudio/WaveShaperNode.cpp @@ -23,29 +23,28 @@ */ #include "config.h" +#include "WaveShaperNode.h" #if ENABLE(WEB_AUDIO) -#include "WaveShaperNode.h" - -#include "ExceptionCode.h" +#include "AudioContext.h" #include <wtf/MainThread.h> namespace WebCore { -WaveShaperNode::WaveShaperNode(AudioContext* context) - : AudioBasicProcessorNode(context, context->sampleRate()) +WaveShaperNode::WaveShaperNode(AudioContext& context) + : AudioBasicProcessorNode(context, context.sampleRate()) { - m_processor = std::make_unique<WaveShaperProcessor>(context->sampleRate(), 1); + m_processor = std::make_unique<WaveShaperProcessor>(context.sampleRate(), 1); setNodeType(NodeTypeWaveShaper); initialize(); } -void WaveShaperNode::setCurve(Float32Array* curve) +void WaveShaperNode::setCurve(Float32Array& curve) { ASSERT(isMainThread()); - waveShaperProcessor()->setCurve(curve); + waveShaperProcessor()->setCurve(&curve); } Float32Array* WaveShaperNode::curve() @@ -53,36 +52,41 @@ Float32Array* WaveShaperNode::curve() return waveShaperProcessor()->curve(); } -void WaveShaperNode::setOversample(const String& type, ExceptionCode& ec) +static inline WaveShaperProcessor::OverSampleType processorType(WaveShaperNode::OverSampleType type) +{ + switch (type) { + case WaveShaperNode::OverSampleType::None: + return WaveShaperProcessor::OverSampleNone; + case WaveShaperNode::OverSampleType::_2x: + return WaveShaperProcessor::OverSample2x; + case WaveShaperNode::OverSampleType::_4x: + return WaveShaperProcessor::OverSample4x; + } + ASSERT_NOT_REACHED(); + return WaveShaperProcessor::OverSampleNone; +} + +void WaveShaperNode::setOversample(OverSampleType type) { ASSERT(isMainThread()); // Synchronize with any graph changes or changes to channel configuration. - AudioContext::AutoLocker contextLocker(*context()); - - if (type == "none") - waveShaperProcessor()->setOversample(WaveShaperProcessor::OverSampleNone); - else if (type == "2x") - waveShaperProcessor()->setOversample(WaveShaperProcessor::OverSample2x); - else if (type == "4x") - waveShaperProcessor()->setOversample(WaveShaperProcessor::OverSample4x); - else - ec = INVALID_STATE_ERR; + AudioContext::AutoLocker contextLocker(context()); + waveShaperProcessor()->setOversample(processorType(type)); } -String WaveShaperNode::oversample() const +auto WaveShaperNode::oversample() const -> OverSampleType { switch (const_cast<WaveShaperNode*>(this)->waveShaperProcessor()->oversample()) { case WaveShaperProcessor::OverSampleNone: - return "none"; + return OverSampleType::None; case WaveShaperProcessor::OverSample2x: - return "2x"; + return OverSampleType::_2x; case WaveShaperProcessor::OverSample4x: - return "4x"; - default: - ASSERT_NOT_REACHED(); - return "none"; + return OverSampleType::_4x; } + ASSERT_NOT_REACHED(); + return OverSampleType::None; } } // namespace WebCore |