| Index: Source/modules/webaudio/AudioBuffer.cpp
|
| diff --git a/Source/modules/webaudio/AudioBuffer.cpp b/Source/modules/webaudio/AudioBuffer.cpp
|
| index d01c8c6d812b672dd146005e749bcce25996636c..0ab62ca1c1b27e2b9c1f64f87f2b5fc138e87c18 100644
|
| --- a/Source/modules/webaudio/AudioBuffer.cpp
|
| +++ b/Source/modules/webaudio/AudioBuffer.cpp
|
| @@ -67,6 +67,7 @@ AudioBuffer::AudioBuffer(unsigned numberOfChannels, size_t numberOfFrames, float
|
|
|
| for (unsigned i = 0; i < numberOfChannels; ++i) {
|
| RefPtr<Float32Array> channelDataArray = Float32Array::create(m_length);
|
| + channelDataArray->setNeuterable(false);
|
| m_channels.append(channelDataArray);
|
| }
|
| }
|
| @@ -82,6 +83,7 @@ AudioBuffer::AudioBuffer(AudioBus* bus)
|
| m_channels.reserveCapacity(numberOfChannels);
|
| for (unsigned i = 0; i < numberOfChannels; ++i) {
|
| RefPtr<Float32Array> channelDataArray = Float32Array::create(m_length);
|
| + channelDataArray->setNeuterable(false);
|
| channelDataArray->setRange(bus->channel(i)->data(), m_length, 0);
|
| m_channels.append(channelDataArray);
|
| }
|
| @@ -92,14 +94,15 @@ void AudioBuffer::releaseMemory()
|
| m_channels.clear();
|
| }
|
|
|
| -Float32Array* AudioBuffer::getChannelData(unsigned channelIndex, ExceptionState& es)
|
| +PassRefPtr<Float32Array> AudioBuffer::getChannelData(unsigned channelIndex, ExceptionState& es)
|
| {
|
| if (channelIndex >= m_channels.size()) {
|
| es.throwDOMException(SyntaxError);
|
| return 0;
|
| }
|
|
|
| - return m_channels[channelIndex].get();
|
| + Float32Array* channelData = m_channels[channelIndex].get();
|
| + return Float32Array::create(channelData->buffer(), channelData->byteOffset(), channelData->length());
|
| }
|
|
|
| Float32Array* AudioBuffer::getChannelData(unsigned channelIndex)
|
|
|