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

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/AudioBufferSource/audiobuffersource-loop-grain-no-duration.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 Test AudioBufferSourceNode looping without explicit duration
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 // Reasonably low sample rate for the optimum test speed.
15 let sampleRate = 4096;
3 16
4 <head> 17 let audit = Audit.createTaskRunner();
5 <title>Test AudioBufferSourceNode looping without explicit duration</title>
6 <script src="../../resources/testharness.js"></script>
7 <script src="../../resources/testharnessreport.js"></script>
8 <script src="../resources/audit-util.js"></script>
9 <script src="../resources/audit.js"></script>
10 </head>
11 18
12 <body> 19 // Task: create a short linear ramp and enable looping. The test will
13 <script> 20 // verify that the ramp was looped the appropriate number of times.
21 audit.define('loop-count', (task, should) => {
22 // How many loops of the source we want to render. Any whole number
23 // greater than 1 will work.
24 let loopCount = 4;
25 let sourceFrames = 8;
26 let renderFrames = sourceFrames * loopCount;
14 27
15 // Reasonably low sample rate for the optimum test speed. 28 let context = new OfflineAudioContext(1, renderFrames, sampleRate);
16 var sampleRate = 4096; 29 let source = context.createBufferSource();
30 let linearRampBuffer = createLinearRampBuffer(context, sourceFrames);
17 31
18 var audit = Audit.createTaskRunner(); 32 source.buffer = linearRampBuffer;
33 source.connect(context.destination);
19 34
20 // Task: create a short linear ramp and enable looping. The test will 35 // Enable looping and start the source with an offset, but without a
21 // verify that the ramp was looped the appropriate number of times. 36 // duration. In this case, the source should loop "forever".
22 audit.define('loop-count', (task, should) => { 37 // See crbug.com/457009.
23 // How many loops of the source we want to render. Any whole number 38 source.loop = true;
24 // greater than 1 will work. 39 source.start(0, 0);
25 var loopCount = 4;
26 var sourceFrames = 8;
27 var renderFrames = sourceFrames * loopCount;
28 40
29 var context = new OfflineAudioContext(1, renderFrames, sampleRate); 41 context.startRendering()
30 var source = context.createBufferSource(); 42 .then(function(renderedBuffer) {
31 var linearRampBuffer = createLinearRampBuffer(context, sourceFrames); 43 let badIndex = -1;
44 let success = true;
32 45
33 source.buffer = linearRampBuffer; 46 let actual = renderedBuffer.getChannelData(0);
34 source.connect(context.destination); 47 let linearRamp = linearRampBuffer.getChannelData(0);
35 48
36 // Enable looping and start the source with an offset, but without a 49 // Manually create a |loopCount| copies of linear ramps.
37 // duration. In this case, the source should loop "forever". 50 let expected = new Float32Array(linearRamp.length * loopCount);
38 // See crbug.com/457009. 51 for (let i = 0; i < loopCount; i++)
39 source.loop = true; 52 expected.set(linearRamp, linearRamp.length * i);
40 source.start(0, 0);
41 53
42 context.startRendering().then(function (renderedBuffer) { 54 // The actual output should match the created loop.
43 var badIndex = -1; 55 should(actual, 'The output of actual and expected loops')
44 var success = true; 56 .beEqualToArray(expected);
45 57 })
46 var actual = renderedBuffer.getChannelData(0); 58 .then(() => task.done());
47 var linearRamp = linearRampBuffer.getChannelData(0);
48
49 // Manually create a |loopCount| copies of linear ramps.
50 var expected = new Float32Array(linearRamp.length * loopCount);
51 for (var i = 0; i < loopCount; i++)
52 expected.set(linearRamp, linearRamp.length * i);
53
54 // The actual output should match the created loop.
55 should(actual, 'The output of actual and expected loops')
56 .beEqualToArray(expected);
57 }).then(() => task.done());
58 });
59
60 // Task: Test that looping an AudioBufferSource works correctly if the
61 // source is started and the buffer is assigned later, but before the source
62 // would start.
63 audit.define('delayed-start', (task, should) => {
64 var renderDuration = 2;
65 var context = new OfflineAudioContext(2, sampleRate * renderDuration, samp leRate);
66 var linearRampBuffer = createLinearRampBuffer(context, 128);
67
68 var normal = context.createBufferSource();
69 var delayed = context.createBufferSource();
70 var merger = context.createChannelMerger(2);
71
72 // Connect the normally started source to the left channel, and the
73 // delayed to the right channel.
74 normal.connect(merger, 0, 0);
75 delayed.connect(merger, 0, 1);
76 merger.connect(context.destination);
77
78 normal.buffer = linearRampBuffer;
79 normal.loop = true;
80 delayed.loop = true;
81
82 normal.start(1, 0);
83 delayed.start(1, 0);
84
85 // Assign the buffer to the delayed source node at 0.5 second.
86 context.suspend(0.5).then(function () {
87 delayed.buffer = linearRampBuffer;
88 context.resume();
89 }); 59 });
90 60
91 context.startRendering().then(function (buffer) { 61 // Task: Test that looping an AudioBufferSource works correctly if the
92 // The left and right channel must match regardless of the timing 62 // source is started and the buffer is assigned later, but before the
93 // of buffer assignment. 63 // source would start.
94 should(buffer.getChannelData(0), 64 audit.define('delayed-start', (task, should) => {
95 'The content of the left and right channel') 65 let renderDuration = 2;
96 .beEqualToArray(buffer.getChannelData(1)); 66 let context =
97 }) 67 new OfflineAudioContext(2, sampleRate * renderDuration, sampleRate);
98 .then(() => task.done()); 68 let linearRampBuffer = createLinearRampBuffer(context, 128);
99 });
100 69
101 audit.run(); 70 let normal = context.createBufferSource();
102 </script> 71 let delayed = context.createBufferSource();
103 </body> 72 let merger = context.createChannelMerger(2);
104 73
74 // Connect the normally started source to the left channel, and the
75 // delayed to the right channel.
76 normal.connect(merger, 0, 0);
77 delayed.connect(merger, 0, 1);
78 merger.connect(context.destination);
79
80 normal.buffer = linearRampBuffer;
81 normal.loop = true;
82 delayed.loop = true;
83
84 normal.start(1, 0);
85 delayed.start(1, 0);
86
87 // Assign the buffer to the delayed source node at 0.5 second.
88 context.suspend(0.5).then(function() {
89 delayed.buffer = linearRampBuffer;
90 context.resume();
91 });
92
93 context.startRendering()
94 .then(function(buffer) {
95 // The left and right channel must match regardless of the timing
96 // of buffer assignment.
97 should(
98 buffer.getChannelData(0),
99 'The content of the left and right channel')
100 .beEqualToArray(buffer.getChannelData(1));
101 })
102 .then(() => task.done());
103 });
104
105 audit.run();
106 </script>
107 </body>
105 </html> 108 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698