diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/chromium/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp b/chromium/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp index cef9bca9c78..a0eac4de379 100644 --- a/chromium/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp +++ b/chromium/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp @@ -28,6 +28,8 @@ #include "modules/webaudio/ConvolverNode.h" +#include "bindings/v8/ExceptionState.h" +#include "core/dom/ExceptionCode.h" #include "platform/audio/Reverb.h" #include "modules/webaudio/AudioBuffer.h" #include "modules/webaudio/AudioContext.h" @@ -90,13 +92,6 @@ void ConvolverNode::process(size_t framesToProcess) } } -void ConvolverNode::reset() -{ - MutexLocker locker(m_processLock); - if (m_reverb.get()) - m_reverb->reset(); -} - void ConvolverNode::initialize() { if (isInitialized()) @@ -114,13 +109,21 @@ void ConvolverNode::uninitialize() AudioNode::uninitialize(); } -void ConvolverNode::setBuffer(AudioBuffer* buffer) +void ConvolverNode::setBuffer(AudioBuffer* buffer, ExceptionState& exceptionState) { ASSERT(isMainThread()); if (!buffer) return; + if (buffer->sampleRate() != context()->sampleRate()) { + exceptionState.throwDOMException( + NotSupportedError, + "The buffer sample rate of " + String::number(buffer->sampleRate()) + + " does not match the context rate of " + String::number(context()->sampleRate()) + + " Hz."); + } + unsigned numberOfChannels = buffer->numberOfChannels(); size_t bufferLength = buffer->length(); @@ -176,6 +179,12 @@ double ConvolverNode::latencyTime() const return std::numeric_limits<double>::infinity(); } +void ConvolverNode::trace(Visitor* visitor) +{ + visitor->trace(m_buffer); + AudioNode::trace(visitor); +} + } // namespace WebCore #endif // ENABLE(WEB_AUDIO) |