Implement suspend() and resume() for OfflineAudioContext
NOTE: This is the second attempt of https://crrev.com/1140723003/ TODO: 1. Edit core/frame/UseCounter.h accordingly. 2. Add UMA metric in OfflineAudioContext.idl. Adds suspend() and resume() feature in OfflineAudioContext to support the synchronous graph manipulation with the render block precision (k-rate) in the non-realtime audio rendering. The benefit of being able to suspend/resume the context with the render block precision is: 1) The audio graph can be modified in a time-accurate way, independent of the hardware. Without this, setTimeout, completion events, or state change events are needed to manipulate the graph, and the results depend on when the events are fired and on how fast the hardware is. 2) Makes an OfflineAudioContext more symmetrical to the AudioContext, which already supports suspend/resume. (There are minor difference required by the difference between offline and online contexts.) This feature also can be used in Blink layout tests to verify the behavior of audio rendering. With this feature in the implementation, several flaky web audio layout tests can be fixed. http://webaudio.github.io/web-audio-api/#the-offlineaudiocontext-interface https://github.com/WebAudio/web-audio-api/issues/302#issuecomment-106101885 BUG=497933, 545686 TEST= webaudio/offlineaudiocontext-suspend-resume-basic.html webaudio/offlineaudiocontext-suspend-resume-eventhandler.html webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html webaudio/offlineaudiocontext-suspend-resume-promise.html webaudio/offlineaudiocontext-suspend-resume-sequence.html Review URL: https://codereview.chromium.org/1405413004 Cr-Commit-Position: refs/heads/master@{#361367}
Showing
This diff is collapsed.
Please register or sign in to comment