Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Issue 1140723003: Implement suspend() and resume() for OfflineAudioContext (Closed)

Created:
5 years, 7 months ago by hongchan
Modified:
5 years, 2 months ago
CC:
blink-reviews
Base URL:
https://chromium.googlesource.com/chromium/blink.git@master
Target Ref:
refs/heads/master
Project:
blink
Visibility:
Public.

Description

NOTE: This CL is replaced by https://codereview.chromium.org/1405413004. 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. # Editor's draft spec PR: http://webaudio.github.io/web-audio-api/#the-offlineaudiocontext-interface # Web Audio API issue tracker entry: https://github.com/WebAudio/web-audio-api/issues/302#issuecomment-106101885 BUG=497933 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 Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=199129

Patch Set 1 : Initial Design #

Total comments: 19

Patch Set 2 : Promise Resolution #

Total comments: 8

Patch Set 3 : Using while() instead of recursion #

Patch Set 4 : Initial review + layout tests #

Total comments: 89

Patch Set 5 : Restructured the resolution of suspend promise #

Total comments: 1

Patch Set 6 : Ready for Review #

Total comments: 60

Patch Set 7 : Added UseCounter #

Total comments: 29

Patch Set 8 : Added a layout test for synchronous graph manipulation #

Total comments: 28

Patch Set 9 : Fixed a LO test and minor nits #

Total comments: 40

Patch Set 10 : Making Oilpan-compatible changes #

Total comments: 8

Patch Set 11 : Moving the suspend list manipulation to the render thread (WIP) #

Total comments: 7

Patch Set 12 : Resolving the render thread issue (WIP) #

Total comments: 3

Patch Set 13 : Revering oilpan-compatible changes + HashMap #

Total comments: 35

Patch Set 14 : Ready for Review (1) #

Total comments: 2

Patch Set 15 : Ready for Review (2) #

Total comments: 22

Patch Set 16 : Ready for Review (3): refactor and clean up #

Patch Set 17 : Bring to ToT #

Total comments: 20

Patch Set 18 : Removing ThreadSafeRefCounted from ScheduledSuspendContainer #

Total comments: 3

Patch Set 19 : Allowing cross-thread access for ThreadSafeBind() #

Patch Set 20 : Adapting CL to AbstractAudioContext #

Total comments: 31

Patch Set 21 : Fixing nits #

Total comments: 4

Patch Set 22 : Fixing nits (2) #

Patch Set 23 : Adding missing pre/post render tasks + Fixing minor nits #

Total comments: 2

Patch Set 24 : Fixed minor nits after L-G-T-M #

Patch Set 25 : Added RELEASE_ASSERT_NOT_REACHED() for non-reachable code paths #

Total comments: 2

Patch Set 26 : Introduced ThreadSafeRefCounted again #

Patch Set 27 : Using raw pointer again with the manual reference management. #

Total comments: 15

Patch Set 28 : Adding RELEASE_ASSERT() when resolving/resjecting suspends. #

Patch Set 29 : Bring ToT #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1146 lines, -244 lines) Patch
M LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 chunks +4 lines, -0 lines 0 comments Download
M LayoutTests/webaudio/audiocontext-suspend-resume.html View 1 2 3 4 5 6 7 8 2 chunks +27 lines, -111 lines 0 comments Download
M LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt View 1 2 3 4 5 1 chunk +7 lines, -14 lines 0 comments Download
A LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html View 1 2 3 4 5 6 7 8 1 chunk +99 lines, -0 lines 0 comments Download
A LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 chunk +15 lines, -0 lines 0 comments Download
A LayoutTests/webaudio/offlineaudiocontext-suspend-resume-eventhandler.html View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +67 lines, -0 lines 0 comments Download
A LayoutTests/webaudio/offlineaudiocontext-suspend-resume-eventhandler-expected.txt View 1 2 3 4 5 6 1 chunk +18 lines, -0 lines 0 comments Download
A LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +84 lines, -0 lines 0 comments Download
A LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation-expected.txt View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +14 lines, -0 lines 0 comments Download
A LayoutTests/webaudio/offlineaudiocontext-suspend-resume-promise.html View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +58 lines, -0 lines 0 comments Download
A LayoutTests/webaudio/offlineaudiocontext-suspend-resume-promise-expected.txt View 1 2 3 4 5 6 7 1 chunk +19 lines, -0 lines 0 comments Download
A LayoutTests/webaudio/offlineaudiocontext-suspend-resume-sequence.html View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +74 lines, -0 lines 0 comments Download
A LayoutTests/webaudio/offlineaudiocontext-suspend-resume-sequence-expected.txt View 1 2 3 4 5 6 7 8 1 chunk +16 lines, -0 lines 0 comments Download
M LayoutTests/webaudio/resources/audio-testing.js View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 chunks +31 lines, -2 lines 0 comments Download
M LayoutTests/webexposed/global-interface-listing-expected.txt View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 chunks +4 lines, -0 lines 0 comments Download
M Source/core/frame/UseCounter.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 chunk +3 lines, -0 lines 0 comments Download
M Source/modules/webaudio/AbstractAudioContext.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 5 chunks +14 lines, -5 lines 0 comments Download
M Source/modules/webaudio/AbstractAudioContext.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 3 chunks +38 lines, -34 lines 0 comments Download
M Source/modules/webaudio/AudioContext.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 chunk +5 lines, -2 lines 0 comments Download
M Source/modules/webaudio/AudioContext.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 3 chunks +33 lines, -24 lines 0 comments Download
M Source/modules/webaudio/AudioNode.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 3 chunks +7 lines, -7 lines 0 comments Download
M Source/modules/webaudio/AudioNode.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 chunk +2 lines, -2 lines 0 comments Download
M Source/modules/webaudio/DeferredTaskHandler.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 chunk +7 lines, -0 lines 0 comments Download
M Source/modules/webaudio/DeferredTaskHandler.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 chunk +6 lines, -0 lines 0 comments Download
M Source/modules/webaudio/OfflineAudioContext.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 chunks +86 lines, -1 line 0 comments Download
M Source/modules/webaudio/OfflineAudioContext.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 4 chunks +304 lines, -16 lines 0 comments Download
M Source/modules/webaudio/OfflineAudioContext.idl View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 chunk +3 lines, -1 line 0 comments Download
M Source/modules/webaudio/OfflineAudioDestinationNode.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 4 chunks +27 lines, -5 lines 0 comments Download
M Source/modules/webaudio/OfflineAudioDestinationNode.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 5 chunks +74 lines, -20 lines 0 comments Download

Messages

Total messages: 138 (31 generated)
hongchan
No rush - PTAL if you're interested.
5 years, 7 months ago (2015-05-12 21:22:21 UTC) #2
Raymond Toy
Just a quick preliminary review. Looks good so far. We'll have to look over the ...
5 years, 7 months ago (2015-05-13 17:16:09 UTC) #3
hongchan
In the initial patch does not consider the partial render buffer. I have to think ...
5 years, 7 months ago (2015-05-13 17:30:53 UTC) #4
hongchan
PS2 is crashing audiocontext-suspend-resume.html and I am working on it. rtoy@ suggested to programmtically compute ...
5 years, 7 months ago (2015-05-19 20:52:05 UTC) #6
Raymond Toy
Perhaps there should also be a short test that promises and events are handled properly ...
5 years, 7 months ago (2015-05-19 21:46:41 UTC) #7
Raymond Toy
Just some random comments. We'll need to fix this eventually, but not right away. https://codereview.chromium.org/1140723003/diff/40001/Source/modules/webaudio/OfflineAudioContext.cpp ...
5 years, 7 months ago (2015-05-19 22:04:46 UTC) #8
hongchan
Note that this PS made layout tests flaky. It fails 3~4 out of 10 iterations ...
5 years, 7 months ago (2015-05-20 22:09:41 UTC) #9
hongchan
PTAL - no rush.
5 years, 7 months ago (2015-05-27 23:09:56 UTC) #10
Raymond Toy
https://codereview.chromium.org/1140723003/diff/100001/LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt File LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt (right): https://codereview.chromium.org/1140723003/diff/100001/LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt#newcode17 LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt:17: PASS offlineContext.suspend() on a closed context rejected: InvalidStateError: cannot ...
5 years, 6 months ago (2015-05-28 16:37:37 UTC) #11
hongchan
PTAL. No rush. PS6 is an intermediate patch to demonstrate the stability: - Promise rejection ...
5 years, 6 months ago (2015-06-09 20:50:00 UTC) #12
Raymond Toy
https://codereview.chromium.org/1140723003/diff/100001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html File LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html (right): https://codereview.chromium.org/1140723003/diff/100001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html#newcode44 LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html:44: context.suspend(1.0); On 2015/06/09 20:49:58, hoch wrote: > On 2015/05/28 ...
5 years, 6 months ago (2015-06-09 22:34:59 UTC) #13
Raymond Toy
Go ahead and add the use counter now.
5 years, 6 months ago (2015-06-09 22:37:34 UTC) #14
hongchan
On 2015/06/09 22:34:59, Raymond Toy wrote: > https://codereview.chromium.org/1140723003/diff/100001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html > File LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html (right): > > https://codereview.chromium.org/1140723003/diff/100001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html#newcode44 ...
5 years, 6 months ago (2015-06-09 22:53:20 UTC) #15
hongchan
Although the proper decoupling between AC and OAC is needed, I believe this CL is ...
5 years, 6 months ago (2015-06-12 17:51:44 UTC) #17
Raymond Toy
https://codereview.chromium.org/1140723003/diff/160001/Source/modules/webaudio/OfflineAudioContext.idl File Source/modules/webaudio/OfflineAudioContext.idl (right): https://codereview.chromium.org/1140723003/diff/160001/Source/modules/webaudio/OfflineAudioContext.idl#newcode35 Source/modules/webaudio/OfflineAudioContext.idl:35: [CallWith=ScriptState,ImplementedAs=suspendOfflineRendering] Promise<void> suspend(double suspendTime); On 2015/06/12 17:51:44, hoch wrote: ...
5 years, 6 months ago (2015-06-12 17:58:22 UTC) #18
Raymond Toy
https://codereview.chromium.org/1140723003/diff/160001/LayoutTests/webaudio/audiocontext-suspend-resume.html File LayoutTests/webaudio/audiocontext-suspend-resume.html (right): https://codereview.chromium.org/1140723003/diff/160001/LayoutTests/webaudio/audiocontext-suspend-resume.html#newcode45 LayoutTests/webaudio/audiocontext-suspend-resume.html:45: // }).notThrow(); Remove the commented-out code. And update comment ...
5 years, 6 months ago (2015-06-12 21:11:37 UTC) #19
hongchan
https://codereview.chromium.org/1140723003/diff/160001/LayoutTests/webaudio/audiocontext-suspend-resume.html File LayoutTests/webaudio/audiocontext-suspend-resume.html (right): https://codereview.chromium.org/1140723003/diff/160001/LayoutTests/webaudio/audiocontext-suspend-resume.html#newcode45 LayoutTests/webaudio/audiocontext-suspend-resume.html:45: // }).notThrow(); On 2015/06/12 21:11:36, Raymond Toy wrote: > ...
5 years, 6 months ago (2015-06-15 18:40:46 UTC) #21
Raymond Toy
https://codereview.chromium.org/1140723003/diff/160001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/160001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode342 Source/modules/webaudio/OfflineAudioContext.cpp:342: setContextState(Running); On 2015/06/15 18:40:46, hoch wrote: > On 2015/06/12 ...
5 years, 6 months ago (2015-06-15 20:42:14 UTC) #23
hongchan
I've changed error messages to include more details on the timing information. https://codereview.chromium.org/1140723003/diff/200001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html File LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html ...
5 years, 6 months ago (2015-06-15 21:44:20 UTC) #24
Raymond Toy
https://codereview.chromium.org/1140723003/diff/200001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html File LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html (right): https://codereview.chromium.org/1140723003/diff/200001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html#newcode35 LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html:35: context.suspend(context.currentTime - 0.1)).beRejected(); On 2015/06/15 21:44:20, hoch wrote: > ...
5 years, 6 months ago (2015-06-15 22:03:17 UTC) #25
hongchan
https://codereview.chromium.org/1140723003/diff/200001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html File LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html (right): https://codereview.chromium.org/1140723003/diff/200001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html#newcode35 LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic.html:35: context.suspend(context.currentTime - 0.1)).beRejected(); On 2015/06/15 22:03:17, Raymond Toy wrote: ...
5 years, 6 months ago (2015-06-15 22:15:42 UTC) #27
hongchan
haraken@ Could you take a look at Oilpan part in AudioContext and OfflineAudioContext? I've made ...
5 years, 6 months ago (2015-06-16 15:41:56 UTC) #29
Raymond Toy
Can you add an additional test with graph manipulation? Similar to the example you did ...
5 years, 6 months ago (2015-06-16 15:44:41 UTC) #30
hongchan
PTAL. Just added oac-suspend-resume-graph-manipulation.html It worked! Can't wait to resolve all the flaky tests!
5 years, 6 months ago (2015-06-16 17:07:04 UTC) #33
Raymond Toy
https://codereview.chromium.org/1140723003/diff/300001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html File LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html (right): https://codereview.chromium.org/1140723003/diff/300001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html#newcode27 LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html:27: constantSource.buffer = dcOffsetBuffer; dcOffsetBuffer? How did this work? https://codereview.chromium.org/1140723003/diff/300001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html#newcode60 ...
5 years, 6 months ago (2015-06-16 17:12:23 UTC) #34
hongchan
https://codereview.chromium.org/1140723003/diff/300001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html File LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html (right): https://codereview.chromium.org/1140723003/diff/300001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html#newcode27 LayoutTests/webaudio/offlineaudiocontext-suspend-resume-graph-manipulation.html:27: constantSource.buffer = dcOffsetBuffer; On 2015/06/16 17:12:23, Raymond Toy wrote: ...
5 years, 6 months ago (2015-06-16 17:34:36 UTC) #35
Raymond Toy
https://codereview.chromium.org/1140723003/diff/300001/LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt File LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt (right): https://codereview.chromium.org/1140723003/diff/300001/LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt#newcode11 LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt:11: PASS Calling context.resume() after close() rejected correctly (with InvalidAccessError: ...
5 years, 6 months ago (2015-06-16 17:57:10 UTC) #36
hongchan
https://codereview.chromium.org/1140723003/diff/300001/LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt File LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt (right): https://codereview.chromium.org/1140723003/diff/300001/LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt#newcode11 LayoutTests/webaudio/audiocontext-suspend-resume-expected.txt:11: PASS Calling context.resume() after close() rejected correctly (with InvalidAccessError: ...
5 years, 6 months ago (2015-06-16 21:31:21 UTC) #40
Raymond Toy
https://codereview.chromium.org/1140723003/diff/300001/Source/modules/webaudio/DeferredTaskHandler.cpp File Source/modules/webaudio/DeferredTaskHandler.cpp (right): https://codereview.chromium.org/1140723003/diff/300001/Source/modules/webaudio/DeferredTaskHandler.cpp#newcode47 Source/modules/webaudio/DeferredTaskHandler.cpp:47: // This allows the regular lock in non-real-time audio ...
5 years, 6 months ago (2015-06-16 21:46:38 UTC) #41
yhirano
https://codereview.chromium.org/1140723003/diff/370001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/370001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode236 Source/modules/webaudio/OfflineAudioContext.cpp:236: m_completeResolver = ScriptPromiseResolver::create(scriptState); Shouldn't this statement be placed after ...
5 years, 6 months ago (2015-06-17 01:07:51 UTC) #42
haraken
Sorry about the review delay... https://codereview.chromium.org/1140723003/diff/370001/Source/modules/webaudio/AudioContext.h File Source/modules/webaudio/AudioContext.h (right): https://codereview.chromium.org/1140723003/diff/370001/Source/modules/webaudio/AudioContext.h#newcode239 Source/modules/webaudio/AudioContext.h:239: // FIXME: Refactoring needed. ...
5 years, 6 months ago (2015-06-17 06:46:09 UTC) #43
Raymond Toy
https://codereview.chromium.org/1140723003/diff/370001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/370001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode318 Source/modules/webaudio/OfflineAudioContext.cpp:318: AutoLocker locker(this); destination()->audioDestinationHandler().startRendering() is run while this lock is ...
5 years, 6 months ago (2015-06-17 15:56:10 UTC) #44
hongchan
My local compilation setting does not have 'enable_oilpan=1' so all the oil pan changes did ...
5 years, 6 months ago (2015-06-17 20:10:40 UTC) #45
haraken
https://codereview.chromium.org/1140723003/diff/370001/Source/modules/webaudio/OfflineAudioContext.h File Source/modules/webaudio/OfflineAudioContext.h (right): https://codereview.chromium.org/1140723003/diff/370001/Source/modules/webaudio/OfflineAudioContext.h#newcode65 Source/modules/webaudio/OfflineAudioContext.h:65: : public NoBaseWillBeGarbageCollected<ScheduledSuspendContainer> { On 2015/06/17 20:10:39, hoch wrote: ...
5 years, 6 months ago (2015-06-17 20:13:53 UTC) #46
hongchan
@haraken PTAL patch set 13. Thanks for your help!
5 years, 6 months ago (2015-06-17 20:52:56 UTC) #47
yhirano
https://codereview.chromium.org/1140723003/diff/370001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/370001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode256 Source/modules/webaudio/OfflineAudioContext.cpp:256: ASSERT(isMainThread()); On 2015/06/17 20:10:39, hoch wrote: > On 2015/06/17 ...
5 years, 6 months ago (2015-06-18 13:40:52 UTC) #48
hongchan
5 years, 6 months ago (2015-06-18 17:26:42 UTC) #49
hongchan
This is the error that I am getting with PS13: ../../third_party/WebKit/Source/modules/webaudio/OfflineAudioContext.cpp:108:1: error: [blink-gc] Base class ...
5 years, 6 months ago (2015-06-18 17:27:33 UTC) #50
haraken
On 2015/06/18 17:27:33, hoch wrote: > This is the error that I am getting with ...
5 years, 6 months ago (2015-06-18 18:02:36 UTC) #51
hongchan
@haraken Thanks. Now it compiles correctly. https://codereview.chromium.org/1140723003/diff/410001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/410001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode114 Source/modules/webaudio/OfflineAudioContext.cpp:114: bool OfflineAudioContext::shouldSuspendNow() On ...
5 years, 6 months ago (2015-06-18 18:22:31 UTC) #52
yhirano
https://codereview.chromium.org/1140723003/diff/410001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/410001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode114 Source/modules/webaudio/OfflineAudioContext.cpp:114: bool OfflineAudioContext::shouldSuspendNow() On 2015/06/18 18:22:31, hoch wrote: > On ...
5 years, 6 months ago (2015-06-19 02:31:59 UTC) #53
hongchan
@yhirano PTAL patch set 14. https://codereview.chromium.org/1140723003/diff/410001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/410001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode114 Source/modules/webaudio/OfflineAudioContext.cpp:114: bool OfflineAudioContext::shouldSuspendNow() On 2015/06/19 ...
5 years, 6 months ago (2015-06-19 22:15:40 UTC) #55
yhirano
https://codereview.chromium.org/1140723003/diff/450001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/450001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode225 Source/modules/webaudio/OfflineAudioContext.cpp:225: threadSafeBind(&OfflineAudioContext::validateSuspend, this, when, resolver)); On 2015/06/19 22:15:40, hoch wrote: ...
5 years, 6 months ago (2015-06-22 02:26:19 UTC) #56
hongchan
@yhirano PTAL at PS15. When the duplication check by OfflineAudioContext on the render thread touches ...
5 years, 6 months ago (2015-06-22 18:23:59 UTC) #57
yhirano
https://codereview.chromium.org/1140723003/diff/470001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/470001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode313 Source/modules/webaudio/OfflineAudioContext.cpp:313: m_scheduledSuspends.append(suspendContainer); On 2015/06/22 18:23:59, hoch wrote: > This actually ...
5 years, 6 months ago (2015-06-23 02:33:42 UTC) #58
hongchan
https://codereview.chromium.org/1140723003/diff/470001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/470001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode313 Source/modules/webaudio/OfflineAudioContext.cpp:313: m_scheduledSuspends.append(suspendContainer); On 2015/06/23 02:33:42, yhirano wrote: > On 2015/06/22 ...
5 years, 6 months ago (2015-06-23 17:57:38 UTC) #59
Raymond Toy
On 2015/06/23 17:57:38, hoch wrote: > https://codereview.chromium.org/1140723003/diff/470001/Source/modules/webaudio/OfflineAudioContext.cpp > File Source/modules/webaudio/OfflineAudioContext.cpp (right): > > https://codereview.chromium.org/1140723003/diff/470001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode313 > ...
5 years, 6 months ago (2015-06-23 20:34:12 UTC) #60
hongchan
On 2015/06/23 20:34:12, Raymond Toy wrote: > On 2015/06/23 17:57:38, hoch wrote: > > > ...
5 years, 6 months ago (2015-06-23 20:40:27 UTC) #61
haraken
On 2015/06/23 20:40:27, hoch wrote: > On 2015/06/23 20:34:12, Raymond Toy wrote: > > On ...
5 years, 6 months ago (2015-06-24 00:17:55 UTC) #62
haraken
5 years, 6 months ago (2015-06-24 00:18:16 UTC) #64
hongchan
haraken@ yhirano@ PTAL at PS16. Based on your suggestions, I brought the non-oilpan code back ...
5 years, 6 months ago (2015-06-24 21:14:12 UTC) #65
haraken
https://codereview.chromium.org/1140723003/diff/490001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/490001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode113 Source/modules/webaudio/OfflineAudioContext.cpp:113: visitor->trace(m_scheduledSuspends); On 2015/06/24 21:14:12, hoch wrote: > This gives ...
5 years, 6 months ago (2015-06-24 23:25:58 UTC) #66
yhirano
https://codereview.chromium.org/1140723003/diff/490001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/490001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode147 Source/modules/webaudio/OfflineAudioContext.cpp:147: RefPtrWillBeRawPtr<ScheduledSuspendContainer> suspendContainer = it->value; This should be just RefPtr. ...
5 years, 6 months ago (2015-06-25 04:00:53 UTC) #67
hongchan
yhirano@, haraken@ - Thanks so much for your help! Now the CL is ready for ...
5 years, 6 months ago (2015-06-25 23:34:14 UTC) #68
yhirano
https://codereview.chromium.org/1140723003/diff/510001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/510001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode320 Source/modules/webaudio/OfflineAudioContext.cpp:320: AutoLocker locker(this); Can you tell me why this lock ...
5 years, 6 months ago (2015-06-26 02:29:10 UTC) #69
hongchan
On 2015/06/26 at 02:29:10, yhirano wrote: > https://codereview.chromium.org/1140723003/diff/510001/Source/modules/webaudio/OfflineAudioContext.cpp > File Source/modules/webaudio/OfflineAudioContext.cpp (right): > > https://codereview.chromium.org/1140723003/diff/510001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode320 ...
5 years, 6 months ago (2015-06-26 04:10:29 UTC) #70
yhirano
LGTM On 2015/06/26 04:10:29, hoch wrote: > On 2015/06/26 at 02:29:10, yhirano wrote: > > ...
5 years, 6 months ago (2015-06-26 06:47:21 UTC) #71
hongchan
On 2015/06/26 at 06:47:21, yhirano wrote: > LGTM > > On 2015/06/26 04:10:29, hoch wrote: ...
5 years, 5 months ago (2015-06-29 15:42:32 UTC) #72
hongchan
@yhirano Thanks for your patience in reviewing the oil-pan part. @haraken PTAL at the last ...
5 years, 5 months ago (2015-06-29 15:47:24 UTC) #73
haraken
Given the complexity of the CL, I might want to wait for rtoy@ to get ...
5 years, 5 months ago (2015-06-30 07:41:51 UTC) #74
hongchan
haraken@ I've changed |checkDuplicateSuspend()| to |validateSuspendOnTheMainThread()|. Now the duplicate check and the timing check happens ...
5 years, 5 months ago (2015-06-30 18:52:10 UTC) #75
hongchan
PTAL at PS20. I refactored and cleaned up |ScheduledSuspendContainer| a bit. Please note that try ...
5 years, 5 months ago (2015-07-01 17:12:24 UTC) #76
hongchan
haraken@ Could you take a look at PS22 to confirm the oilpan or GC related ...
5 years, 5 months ago (2015-07-07 16:23:01 UTC) #77
haraken
Here is the final round of comments! tkent-san for API owner review. https://codereview.chromium.org/1140723003/diff/610001/Source/modules/webaudio/AudioContext.cpp File Source/modules/webaudio/AudioContext.cpp ...
5 years, 5 months ago (2015-07-08 04:05:42 UTC) #79
hongchan
haraken@ I removed the ref-counting mechanism (ThreadSafeRefCounted) from |ScheduledSuspendContainer|, but am getting some errors with ...
5 years, 5 months ago (2015-07-08 17:47:32 UTC) #80
haraken
+hiroshige for the threadSafeBind issue.
5 years, 5 months ago (2015-07-08 23:35:24 UTC) #82
hiroshige
https://codereview.chromium.org/1140723003/diff/630001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/630001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode141 Source/modules/webaudio/OfflineAudioContext.cpp:141: threadSafeBind(&OfflineAudioContext::resolveSuspendContainerOnMainThread, this, suspendContainer)); IIUC, - |suspendContainer| is created/managed/destructed on ...
5 years, 5 months ago (2015-07-09 05:20:15 UTC) #83
hongchan
hiroshige@: Thanks for your help on ThreadSafeBind() issue. haraken@: PTAL at PS24. https://codereview.chromium.org/1140723003/diff/630001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp ...
5 years, 5 months ago (2015-07-09 17:08:37 UTC) #84
hongchan
rtoy@, tkent@ PTAL at PS20. It includes the newly introduced AbstractAudioContext class while keeping the ...
5 years, 5 months ago (2015-07-15 19:13:49 UTC) #97
Raymond Toy
https://codereview.chromium.org/1140723003/diff/810001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt File LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt (right): https://codereview.chromium.org/1140723003/diff/810001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt#newcode8 LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt:8: PASS Scheduling a suspend in the past rejected correctly ...
5 years, 5 months ago (2015-07-15 20:59:14 UTC) #98
hongchan
https://codereview.chromium.org/1140723003/diff/810001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt File LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt (right): https://codereview.chromium.org/1140723003/diff/810001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt#newcode8 LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt:8: PASS Scheduling a suspend in the past rejected correctly ...
5 years, 5 months ago (2015-07-15 23:24:23 UTC) #99
tkent
web-exposed API change LGTM https://codereview.chromium.org/1140723003/diff/830001/Source/modules/webaudio/AbstractAudioContext.h File Source/modules/webaudio/AbstractAudioContext.h (right): https://codereview.chromium.org/1140723003/diff/830001/Source/modules/webaudio/AbstractAudioContext.h#newcode252 Source/modules/webaudio/AbstractAudioContext.h:252: // RefPtrWillBeMember<ScriptPromiseResolver> m_offlineResolver; Remove this ...
5 years, 5 months ago (2015-07-16 00:33:43 UTC) #100
hongchan
rtoy@: PTAL. Fixing nits based on tkent@ comments after L-G-T-M. https://codereview.chromium.org/1140723003/diff/830001/Source/modules/webaudio/AbstractAudioContext.h File Source/modules/webaudio/AbstractAudioContext.h (right): https://codereview.chromium.org/1140723003/diff/830001/Source/modules/webaudio/AbstractAudioContext.h#newcode252 ...
5 years, 5 months ago (2015-07-16 16:22:18 UTC) #101
Raymond Toy
https://codereview.chromium.org/1140723003/diff/810001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt File LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt (right): https://codereview.chromium.org/1140723003/diff/810001/LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt#newcode8 LayoutTests/webaudio/offlineaudiocontext-suspend-resume-basic-expected.txt:8: PASS Scheduling a suspend in the past rejected correctly ...
5 years, 5 months ago (2015-07-16 16:24:23 UTC) #102
Raymond Toy
https://codereview.chromium.org/1140723003/diff/810001/Source/modules/webaudio/DeferredTaskHandler.cpp File Source/modules/webaudio/DeferredTaskHandler.cpp (right): https://codereview.chromium.org/1140723003/diff/810001/Source/modules/webaudio/DeferredTaskHandler.cpp#newcode46 Source/modules/webaudio/DeferredTaskHandler.cpp:46: // This allows the regular lock in offline audio ...
5 years, 5 months ago (2015-07-16 16:52:04 UTC) #103
hongchan
https://codereview.chromium.org/1140723003/diff/810001/Source/modules/webaudio/DeferredTaskHandler.cpp File Source/modules/webaudio/DeferredTaskHandler.cpp (right): https://codereview.chromium.org/1140723003/diff/810001/Source/modules/webaudio/DeferredTaskHandler.cpp#newcode46 Source/modules/webaudio/DeferredTaskHandler.cpp:46: // This allows the regular lock in offline audio ...
5 years, 5 months ago (2015-07-16 17:24:38 UTC) #104
Raymond Toy
lgtm with nit. https://codereview.chromium.org/1140723003/diff/870001/Source/modules/webaudio/DeferredTaskHandler.h File Source/modules/webaudio/DeferredTaskHandler.h (right): https://codereview.chromium.org/1140723003/diff/870001/Source/modules/webaudio/DeferredTaskHandler.h#newcode113 Source/modules/webaudio/DeferredTaskHandler.h:113: // lock the offline audio render ...
5 years, 5 months ago (2015-07-17 15:44:03 UTC) #105
hongchan
Thank you all for the review! https://codereview.chromium.org/1140723003/diff/870001/Source/modules/webaudio/DeferredTaskHandler.h File Source/modules/webaudio/DeferredTaskHandler.h (right): https://codereview.chromium.org/1140723003/diff/870001/Source/modules/webaudio/DeferredTaskHandler.h#newcode113 Source/modules/webaudio/DeferredTaskHandler.h:113: // lock the ...
5 years, 5 months ago (2015-07-17 15:51:17 UTC) #106
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1140723003/910001
5 years, 5 months ago (2015-07-17 19:16:03 UTC) #109
commit-bot: I haz the power
Committed patchset #25 (id:910001) as https://src.chromium.org/viewvc/blink?view=rev&revision=199129
5 years, 5 months ago (2015-07-17 19:25:00 UTC) #110
hongchan
A revert of this CL (patchset #25 id:910001) has been created in https://codereview.chromium.org/1237383004/ by hongchan@chromium.org. ...
5 years, 5 months ago (2015-07-17 21:55:54 UTC) #111
hongchan
haraken@ PTAL at the latest PS. I had to revert all the raw pointer approach ...
5 years, 5 months ago (2015-07-20 20:34:11 UTC) #112
haraken
On 2015/07/20 20:34:11, hoch wrote: > haraken@ > > PTAL at the latest PS. I ...
5 years, 5 months ago (2015-07-20 23:19:44 UTC) #113
blink-reviews
I've been looking at it but wasn't able to find the cause in the raw-pointer ...
5 years, 5 months ago (2015-07-20 23:39:48 UTC) #114
hiroshige
On 2015/07/20 23:39:48, blink-reviews wrote: > I've been looking at it but wasn't able to ...
5 years, 5 months ago (2015-07-21 08:37:33 UTC) #115
hiroshige
https://codereview.chromium.org/1140723003/diff/910001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/910001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode277 Source/modules/webaudio/OfflineAudioContext.cpp:277: threadSafeBind(&OfflineAudioContext::validateSuspendContainerOnRenderThread, this, AllowCrossThreadAccess(suspendContainer))); My solution of using OwnPtr doesn't ...
5 years, 5 months ago (2015-07-21 10:50:48 UTC) #116
hongchan
hiroshige@ and rtoy@ PTAL at PS27. Now it became meaningless to keep |ScheduledSuspendContainer| class because ...
5 years, 5 months ago (2015-07-21 18:34:19 UTC) #117
hiroshige
https://codereview.chromium.org/1140723003/diff/950001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/950001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode154 Source/modules/webaudio/OfflineAudioContext.cpp:154: // be alive until the task is finished somewhere ...
5 years, 5 months ago (2015-07-22 17:32:13 UTC) #118
hiroshige
https://codereview.chromium.org/1140723003/diff/950001/Source/modules/webaudio/OfflineAudioContext.cpp File Source/modules/webaudio/OfflineAudioContext.cpp (right): https://codereview.chromium.org/1140723003/diff/950001/Source/modules/webaudio/OfflineAudioContext.cpp#newcode291 Source/modules/webaudio/OfflineAudioContext.cpp:291: threadSafeBind(&OfflineAudioContext::validateSuspendContainerOnRenderThread, this, IIUC, 1. OfflineAudioContext is GarbageCollected. 2. offlineRenderThread() ...
5 years, 5 months ago (2015-07-22 17:51:17 UTC) #119
hongchan
hiroshige@ PTAL at PS28. Basically I accepted your suggestion and will wait for the review ...
5 years, 5 months ago (2015-07-22 20:36:35 UTC) #120
hongchan
On 2015/07/22 20:36:35, hoch wrote: > hiroshige@ > > PTAL at PS28. Basically I accepted ...
5 years, 5 months ago (2015-07-22 22:09:53 UTC) #121
hongchan
haraken@ hiroshige@: PTAL at PS29. There are two issues: 1) Based on the hiroshige@'s suggestion, ...
5 years, 4 months ago (2015-07-27 18:41:26 UTC) #122
haraken
On 2015/07/27 18:41:26, hoch wrote: > haraken@ hiroshige@: PTAL at PS29. > > There are ...
5 years, 4 months ago (2015-07-27 19:34:08 UTC) #123
blink-reviews
haraken@ I gather that this is your suggestion for the ThreadSafeBind() issue here: > CrossThreadPersistent ...
5 years, 4 months ago (2015-07-27 20:14:02 UTC) #124
Raymond Toy
On 2015/07/27 20:14:02, blink-reviews wrote: > haraken@ > > I gather that this is your ...
5 years, 4 months ago (2015-07-27 22:48:22 UTC) #125
hiroshige
On 2015/07/27 18:41:26, hoch wrote: > 1) Based on the hiroshige@'s suggestion, I've added RELEASE_ASSERT() ...
5 years, 4 months ago (2015-07-28 01:43:09 UTC) #126
haraken
On 2015/07/27 20:14:02, blink-reviews wrote: > haraken@ > > I gather that this is your ...
5 years, 4 months ago (2015-07-28 05:17:46 UTC) #127
hongchan
On 2015/07/28 01:43:09, hiroshige wrote: > On 2015/07/27 18:41:26, hoch wrote: > > 1) Based ...
5 years, 4 months ago (2015-07-28 15:32:56 UTC) #128
hongchan
> The only restriction is that you cannot use the CrossThreadPersistent (i.e., > you cannot ...
5 years, 4 months ago (2015-07-28 16:39:52 UTC) #129
haraken
On 2015/07/28 16:39:52, hoch wrote: > > The only restriction is that you cannot use ...
5 years, 4 months ago (2015-07-28 16:41:42 UTC) #130
hongchan
> Sorry, I'm getting lost :) Would you help me remember what our current problem ...
5 years, 4 months ago (2015-07-28 17:31:20 UTC) #131
haraken
Thanks for a lot of explanations. Now I understand the problem. On 2015/07/28 17:31:20, hoch ...
5 years, 4 months ago (2015-07-28 20:23:24 UTC) #132
hongchan
> This is unsafe either. You're not allowed to touch any on-heap object from a ...
5 years, 4 months ago (2015-07-28 22:49:06 UTC) #133
haraken
On 2015/07/28 22:49:06, hoch wrote: > > This is unsafe either. You're not allowed to ...
5 years, 4 months ago (2015-07-29 05:56:20 UTC) #134
hongchan
> This sounds like a reasonable design. > > - DeferredTaskHandler is ThreadSafeRefCounted > - ...
5 years, 4 months ago (2015-07-29 15:21:54 UTC) #135
haraken
On 2015/07/29 15:21:54, hoch wrote: > > This sounds like a reasonable design. > > ...
5 years, 4 months ago (2015-07-29 15:23:43 UTC) #136
hongchan
5 years, 4 months ago (2015-07-29 15:32:08 UTC) #137
On 2015/07/29 15:23:43, haraken wrote:
> On 2015/07/29 15:21:54, hoch wrote:
> > > This sounds like a reasonable design.
> > > 
> > > - DeferredTaskHandler is ThreadSafeRefCounted
> > > - AudioContext is GarbageCollected.
> > > - The AudioContext is read/written only by the main thread (i.e., when the
> > > real-time render thread wants to read/write the AudioContext, it needs to
> ask
> > > the DeferredTaskHandler to do the work in the main thread).
> > > 
> > > Before talking about oilpan, we must design OfflineAudioContext in a way
in
> > > which it is read/written only by one thread.
> > >
> > > But the real-time render thread uses AudioContext only via the
> > > DeferredTaskHandler and thus it's guaranteed that the AudioContext is
> > > read/written only by the main thread, right?
> > 
> > Yes, I should have thought about the design more carefully. Since
> > DeferredTaskHandler is a part of AbstractAudioContext, so
OfflineAudioContext
> > can also benefit from it.
> > It seems like a high level change from the current status of this CL, so I
> might
> > have to start a new CL from scratch.
> > 
> > Thanks for your review.
> 
> Yeah, sorry about that -- I should have noticed that problem earlier.
> 
> Even without oilpan, we need to design a class so that it is not shared
between
> threads...

Well. Don't be! Now I have better understanding on threading in Web Audio API,
so that is already a huge win for me.

Powered by Google App Engine
This is Rietveld 408576698