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

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/audiochannelmerger-cycle.html

Issue 2581463002: Refactor WebAudio test directory (Closed)
Patch Set: Use correct path for wav result files Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3
4 <head>
5 <script src="../resources/js-test.js"></script>
6 <script src="resources/compatibility.js"></script>
7 <script src="resources/audit-util.js"></script>
8 <script src="resources/audio-testing.js"></script>
9 </head>
10
11 <body>
12 <script>
13 description("Test if ChannelMergerNode runs correctly in a cycle.");
14 window.jsTestIsAsync = true;
15
16 // This specific sample rate is chosen to avoid the round/truncation error
17 // in delay time. See: crbug.com/448801
18 var sampleRate = 32768;
19
20 // Web Audio API's rendering quantum.
21 var renderingQuantum = 128;
22
23 // 4x of rendering quantum. This is to make the rendered result long enough
24 // so that we can observe the delayed output.
25 var renderLength = renderingQuantum * 4;
26
27 // 1x rendering quantum of delay.
28 var delayTime = renderingQuantum / sampleRate;
29
30 // Use 2 channels as a test case.
31 var numberOfChannels = 2;
32
33 var audit = Audit.createTaskRunner();
34
35 audit.defineTask('merger-cyclic-graph', function (done) {
36
37 var context = new OfflineAudioContext(
38 numberOfChannels, renderLength, sampleRate
39 );
40 var merger = context.createChannelMerger(2);
41 var delay = context.createDelay();
42 var source = context.createBufferSource();
43
44 // Create a mono source buffer filled with '1'.
45 source.buffer = createConstantBuffer(context, renderLength, [1]);
46
47 delay.delayTime.value = delayTime;
48
49 // Connect the source to input 0 of the merger. Connect the output of
50 // the merger to a delay node whose output is then connected to input 1
51 // of the merger. See: crbug.com/442925
52 source.connect(merger, 0, 0);
53 delay.connect(merger, 0, 1);
54 merger.connect(delay);
55 merger.connect(context.destination);
56 source.start();
57
58 context.startRendering().then(function (buffer) {
59 // Expected output values: the output of delay node will be a stereo
60 // signal of [1, 0]. When it feeds back to the 2nd input of merger node,
61 // the stereo channel will be summed to mono resulting in 0.5.
62 var expected_left = [];
63 var expected_right = [];
64
65 for (var i = 0; i < renderLength; i++) {
66 // Note that the delayed channel will be zero for the first 128 sample s
67 // due to the cyclic audio graph, the second 128 sample will be also
68 // zero because of 128 samples delay.
69 expected_left[i] = 1.0;
70 expected_right[i] = (i < renderingQuantum * 2) ? 0.0 : 0.5;
71 }
72
73 for (i = 0; i < buffer.numberOfChannels; i++) {
74 var actual_left = buffer.getChannelData(0);
75 var actual_right = buffer.getChannelData(1);
76 for (var j = 0; j < renderLength; j++) {
77 if (expected_left[j] !== actual_left[j]) {
78 testFailed('The value ' + actual_left[j] +
79 'in the left channel did not match the expected value ' +
80 expected_left[j] + ' at the index ' + j + '.');
81 done();
82 return;
83 }
84 if (expected_right[j] !== actual_right[j]) {
85 testFailed('The value ' + actual_left[j] +
86 'in the right channel did not match the expected value ' +
87 expected_left[j] + ' at the index ' + j + '.');
88 done();
89 return;
90 }
91 }
92 }
93
94 testPassed("ChannerMergerNode passed cyclic audio graph test.");
95 done();
96 });
97
98 });
99
100 audit.defineTask('finish', function (done) {
101 finishJSTest();
102 done();
103 });
104
105 audit.runTasks(
106 'merger-cyclic-graph',
107 'finish'
108 );
109
110 successfullyParsed = true;
111 </script>
112 </body>
113
114 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698