Index: third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp |
diff --git a/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp b/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp |
index f82b93abecc2c78ca57ac9a6d0d8796364db2f99..2363ae5cbf11d7ea48d39286fd470b0e4ee00031 100644 |
--- a/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp |
+++ b/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp |
@@ -163,9 +163,9 @@ void OfflineAudioDestinationHandler::doOfflineRendering() |
// Reset the suspend flag. |
m_shouldSuspend = false; |
- // If there is more to process and there is no suspension at the moment, |
- // do continue to render quanta. Then calling OfflineAudioContext.resume() will pick up |
- // the render loop again from where it was suspended. |
+ // If there is more to process and there is no suspension at the moment, do |
+ // continue to render quanta. Then calling OfflineAudioContext.resume() will |
+ // pick up the render loop again from where it was suspended. |
while (m_framesToProcess > 0 && !m_shouldSuspend) { |
// Suspend the rendering and update m_shouldSuspend if a scheduled |
@@ -271,23 +271,27 @@ bool OfflineAudioDestinationHandler::renderIfNotSuspended(AudioBus* sourceBus, A |
return true; |
} |
- // Prepare the local audio input provider for this render quantum. |
- if (sourceBus) |
- m_localAudioInputProvider.set(sourceBus); |
+ // TODO(hongchan): OfflineAudioContext does not care about the live input. |
+ // Remove this. |
+ // if (sourceBus) |
+ // m_localAudioInputProvider.setSourceBus(sourceBus); |
ASSERT(numberOfInputs() >= 1); |
if (numberOfInputs() < 1) { |
destinationBus->zero(); |
return false; |
} |
+ |
// This will cause the node(s) connected to us to process, which in turn will pull on their input(s), |
// all the way backwards through the rendering graph. |
AudioBus* renderedBus = input(0).pull(destinationBus, numberOfFrames); |
+ // TODO(hongchan): this logic should be a part of AudioNodeInput::pull(). |
if (!renderedBus) { |
destinationBus->zero(); |
} else if (renderedBus != destinationBus) { |
- // in-place processing was not possible - so copy |
+ // If the destination node has multiple inputs, in-place processing is |
+ // not possible. Thus the explicit copy is necessary. |
destinationBus->copyFrom(*renderedBus); |
} |