Changeset 96270 in webkit
- Timestamp:
- Sep 28, 2011 5:06:06 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r96269 r96270 1 2011-09-28 Chris Rogers <crogers@google.com> 2 3 DelayNode must set the context on delayTime AudioParam to support automation 4 https://bugs.webkit.org/show_bug.cgi?id=68828 5 6 Reviewed by Kenneth Russell. 7 8 * webaudio/delaynode-scheduling-expected.txt: Added. 9 * webaudio/delaynode-scheduling.html: Added. 10 * webaudio/delaynode.html: 11 * webaudio/resources/delay-testing.js: Added. 12 (createToneBuffer): 13 (checkDelayedResult.return.var): 14 (checkDelayedResult): 15 1 16 2011-09-28 Ryosuke Niwa <rniwa@webkit.org> 2 17 -
trunk/LayoutTests/webaudio/delaynode.html
r94969 r96270 5 5 <link rel="stylesheet" href="../fast/js/resources/js-test-style.css"/> 6 6 <script src="../fast/js/resources/js-test-pre.js"></script> 7 <script src="resources/delay-testing.js"></script> 7 8 </head> 8 9 … … 15 16 description("Tests basic functionality of DelayNode."); 16 17 17 var sampleRate = 44100.0;18 19 var context;20 var toneBuffer;21 22 var renderLengthSeconds = 4;23 var delayTimeSeconds = 0.5;24 var toneLengthSeconds = 2;25 26 function createToneBuffer(frequency, numberOfCycles, sampleRate) {27 var duration = numberOfCycles / frequency;28 var sampleFrameLength = duration * sampleRate;29 30 var audioBuffer = context.createBuffer(1, sampleFrameLength, sampleRate);31 32 var n = audioBuffer.length;33 var data = audioBuffer.getChannelData(0);34 35 for (var i = 0; i < n; ++i)36 data[i] = Math.sin(frequency * 2.0*Math.PI * i / sampleRate);37 38 return audioBuffer;39 }40 41 function checkDelayedResult(event) {42 var renderedBuffer = event.renderedBuffer;43 44 var sourceData = toneBuffer.getChannelData(0);45 var renderedData = renderedBuffer.getChannelData(0);46 47 var delayTimeFrames = delayTimeSeconds * sampleRate;48 var toneLengthFrames = toneLengthSeconds * sampleRate;49 50 var success = true;51 52 var n = renderedBuffer.length;53 54 for (var i = 0; i < n; ++i) {55 if (i < delayTimeFrames) {56 // Check that initial portion is 0 (since signal is delayed).57 if (renderedData[i] != 0) {58 success = false;59 break;60 }61 } else if (i >= delayTimeFrames && i < delayTimeFrames + toneLengthFrames) {62 // Make sure that the tone data is delayed by exactly the expected number of frames.63 var j = i - delayTimeFrames;64 if (renderedData[i] != sourceData[j]) {65 success = false;66 break;67 }68 } else {69 // Make sure we have silence after the delayed tone.70 if (renderedData[i] != 0) {71 success = false;72 break;73 }74 }75 }76 77 if (success) {78 testPassed("Test signal was correctly delayed.");79 } else {80 testFailed("Test signal was not correctly delayed.");81 }82 83 finishJSTest();84 }85 86 18 function runTest() { 87 19 if (window.layoutTestController) { … … 93 25 94 26 // Create offline audio context. 95 context = new webkitAudioContext(1, sampleRate * renderLengthSeconds, sampleRate);96 toneBuffer = createToneBuffer(20, 20 * toneLengthSeconds, sampleRate); // 20Hz tone27 var context = new webkitAudioContext(1, sampleRate * renderLengthSeconds, sampleRate); 28 var toneBuffer = createToneBuffer(context, 20, 20 * toneLengthSeconds, sampleRate); // 20Hz tone 97 29 98 30 var bufferSource = context.createBufferSource(); … … 106 38 bufferSource.noteOn(0); 107 39 108 context.oncomplete = checkDelayedResult ;40 context.oncomplete = checkDelayedResult(toneBuffer); 109 41 context.startRendering(); 110 42 } -
trunk/Source/WebCore/ChangeLog
r96260 r96270 1 2011-09-28 Chris Rogers <crogers@google.com> 2 3 DelayNode must set the context on delayTime AudioParam to support automation 4 https://bugs.webkit.org/show_bug.cgi?id=68828 5 6 Reviewed by Kenneth Russell. 7 8 Test: webaudio/delaynode-scheduling.html 9 10 * webaudio/DelayNode.cpp: 11 (WebCore::DelayNode::DelayNode): 12 1 13 2011-09-28 Sergey Glazunov <serg.glazunov@gmail.com> 2 14 -
trunk/Source/WebCore/webaudio/DelayNode.cpp
r95901 r96270 35 35 { 36 36 m_processor = adoptPtr(new DelayProcessor(sampleRate, 1)); 37 delayTime()->setContext(context); 37 38 setType(NodeTypeDelay); 38 39 }
Note: See TracChangeset
for help on using the changeset viewer.