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

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

Issue 2895963003: Apply layout-test-tidy to LayoutTests/webaudio (Closed)
Patch Set: Created 3 years, 7 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
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head>
4 <title>
5 audiochannelmerger-cycle.html
6 </title>
7 <script src="../../resources/testharness.js"></script>
8 <script src="../../resources/testharnessreport.js"></script>
9 <script src="../resources/audit-util.js"></script>
10 <script src="../resources/audit.js"></script>
11 </head>
12 <body>
13 <script id="layout-test-code">
14 // This specific sample rate is chosen to avoid the round/truncation error
15 // in delay time. See: crbug.com/448801
16 let sampleRate = 32768;
3 17
4 <head> 18 // Web Audio API's rendering quantum.
5 <script src="../../resources/testharness.js"></script> 19 let renderingQuantum = 128;
6 <script src="../../resources/testharnessreport.js"></script>
7 <script src="../resources/audit-util.js"></script>
8 <script src="../resources/audit.js"></script>
9 </head>
10 20
11 <body> 21 // 4x of rendering quantum. This is to make the rendered result long
12 <script> 22 // enough so that we can observe the delayed output.
23 let renderLength = renderingQuantum * 4;
13 24
14 // This specific sample rate is chosen to avoid the round/truncation error 25 // 1x rendering quantum of delay.
15 // in delay time. See: crbug.com/448801 26 let delayTime = renderingQuantum / sampleRate;
16 var sampleRate = 32768;
17 27
18 // Web Audio API's rendering quantum. 28 // Use 2 channels as a test case.
19 var renderingQuantum = 128; 29 let numberOfChannels = 2;
20 30
21 // 4x of rendering quantum. This is to make the rendered result long enough 31 let audit = Audit.createTaskRunner();
22 // so that we can observe the delayed output.
23 var renderLength = renderingQuantum * 4;
24 32
25 // 1x rendering quantum of delay. 33 audit.define('merger-cyclic-graph', (task, should) => {
26 var delayTime = renderingQuantum / sampleRate;
27 34
28 // Use 2 channels as a test case. 35 let context =
29 var numberOfChannels = 2; 36 new OfflineAudioContext(numberOfChannels, renderLength, sampleRate);
37 let merger = context.createChannelMerger(2);
38 let delay = context.createDelay();
39 let source = context.createBufferSource();
30 40
31 var audit = Audit.createTaskRunner(); 41 // Create a mono source buffer filled with '1'.
42 source.buffer = createConstantBuffer(context, renderLength, [1]);
32 43
33 audit.define('merger-cyclic-graph', (task, should) => { 44 delay.delayTime.value = delayTime;
34 45
35 var context = new OfflineAudioContext( 46 // Connect the source to input 0 of the merger. Connect the output of
36 numberOfChannels, renderLength, sampleRate 47 // the merger to a delay node whose output is then connected to input 1
37 ); 48 // of the merger. See: crbug.com/442925
38 var merger = context.createChannelMerger(2); 49 source.connect(merger, 0, 0);
39 var delay = context.createDelay(); 50 delay.connect(merger, 0, 1);
40 var source = context.createBufferSource(); 51 merger.connect(delay);
52 merger.connect(context.destination);
53 source.start();
41 54
42 // Create a mono source buffer filled with '1'. 55 context.startRendering().then(function(buffer) {
43 source.buffer = createConstantBuffer(context, renderLength, [1]); 56 // Expected output values: the output of delay node will be a stereo
57 // signal of [1, 0]. When it feeds back to the 2nd input of merger
58 // node, the stereo channel will be summed to mono resulting in 0.5.
59 let expected_left = [];
60 let expected_right = [];
44 61
45 delay.delayTime.value = delayTime; 62 for (let i = 0; i < renderLength; i++) {
63 // Note that the delayed channel will be zero for the first 128
64 // samples due to the cyclic audio graph, the second 128 sample will
65 // be also zero because of 128 samples delay.
66 expected_left[i] = 1.0;
67 expected_right[i] = (i < renderingQuantum * 2) ? 0.0 : 0.5;
68 }
46 69
47 // Connect the source to input 0 of the merger. Connect the output of 70 let actual_left = buffer.getChannelData(0);
48 // the merger to a delay node whose output is then connected to input 1 71 let actual_right = buffer.getChannelData(1);
49 // of the merger. See: crbug.com/442925 72 should(actual_left, 'Left channel').beEqualToArray(expected_left);
50 source.connect(merger, 0, 0); 73 should(actual_right, 'Right channel').beEqualToArray(expected_right);
51 delay.connect(merger, 0, 1);
52 merger.connect(delay);
53 merger.connect(context.destination);
54 source.start();
55 74
56 context.startRendering().then(function (buffer) { 75 task.done();
57 // Expected output values: the output of delay node will be a stereo 76 });
58 // signal of [1, 0]. When it feeds back to the 2nd input of merger node,
59 // the stereo channel will be summed to mono resulting in 0.5.
60 var expected_left = [];
61 var expected_right = [];
62 77
63 for (var i = 0; i < renderLength; i++) {
64 // Note that the delayed channel will be zero for the first 128 sample s
65 // due to the cyclic audio graph, the second 128 sample will be also
66 // zero because of 128 samples delay.
67 expected_left[i] = 1.0;
68 expected_right[i] = (i < renderingQuantum * 2) ? 0.0 : 0.5;
69 }
70
71 var actual_left = buffer.getChannelData(0);
72 var actual_right = buffer.getChannelData(1);
73 should(actual_left, "Left channel")
74 .beEqualToArray(expected_left);
75 should(actual_right, "Right channel")
76 .beEqualToArray(expected_right);
77
78 task.done();
79 }); 78 });
80 79
81 }); 80 audit.run();
82 81 </script>
83 audit.run(); 82 </body>
84 </script>
85 </body>
86
87 </html> 83 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698