Title: [143516] branches/chromium/1364/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp
Revision
143516
Author
cev...@google.com
Date
2013-02-20 15:25:19 -0800 (Wed, 20 Feb 2013)

Log Message

Merge 141851
BUG=172926
Review URL: https://codereview.chromium.org/12317033

Modified Paths

Diff

Modified: branches/chromium/1364/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp (143515 => 143516)


--- branches/chromium/1364/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp	2013-02-20 23:21:49 UTC (rev 143515)
+++ branches/chromium/1364/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp	2013-02-20 23:25:19 UTC (rev 143516)
@@ -101,6 +101,14 @@
             return;
         }
 
+        // After calling setBuffer() with a buffer having a different number of channels, there can in rare cases be a slight delay
+        // before the output bus is updated to the new number of channels because of use of tryLocks() in the context's updating system.
+        // In this case, if the the buffer has just been changed and we're not quite ready yet, then just output silence.
+        if (numberOfChannels() != buffer()->numberOfChannels()) {
+            outputBus->zero();
+            return;
+        }
+
         size_t quantumFrameOffset;
         size_t bufferFramesToProcess;
 
@@ -155,7 +163,7 @@
 bool AudioBufferSourceNode::renderFromBuffer(AudioBus* bus, unsigned destinationFrameOffset, size_t numberOfFrames)
 {
     ASSERT(context()->isAudioThread());
-    
+
     // Basic sanity checking
     ASSERT(bus);
     ASSERT(buffer());
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to