OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
| 3 <head> |
| 4 <title> |
| 5 audiobuffersource-playbackrate-modulation.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 <script src="../resources/audiobuffersource-testing.js"></script> |
| 12 <script src="../resources/buffer-loader.js"></script> |
| 13 </head> |
| 14 <body> |
| 15 <script id="layout-test-code"> |
| 16 let sampleRate = 44100; |
| 17 let duration = 0.25; |
3 | 18 |
4 <head> | 19 let context = |
5 <script src="../../resources/testharness.js"></script> | 20 new OfflineAudioContext(1, sampleRate * duration, sampleRate); |
6 <script src="../../resources/testharnessreport.js"></script> | 21 let referenceBuffer; |
7 <script src="../resources/audit-util.js"></script> | |
8 <script src="../resources/audit.js"></script> | |
9 <script src="../resources/audiobuffersource-testing.js"></script> | |
10 <script src="../resources/buffer-loader.js"></script> | |
11 </head> | |
12 | 22 |
13 <body> | 23 let audit = Audit.createTaskRunner(); |
14 <script> | |
15 | 24 |
16 var sampleRate = 44100; | 25 // Task: Load the reference file asynchronously. In order to create a new |
17 var duration = 0.25; | 26 // reference file, use the task 'generate-reference' below. |
| 27 audit.define('load-reference', (task, should) => { |
| 28 let loader = new BufferLoader( |
| 29 context, ['audiobuffersource-playbackrate-modulation-expected.wav'], |
| 30 function(bufferList) { |
| 31 referenceBuffer = bufferList[0]; |
| 32 should(true, 'Loaded reference file').beTrue(); |
| 33 task.done(); |
| 34 }); |
18 | 35 |
19 var context = new OfflineAudioContext(1, sampleRate * duration, sampleRate); | 36 loader.load(); |
20 var referenceBuffer; | 37 }); |
21 | |
22 var audit = Audit.createTaskRunner(); | |
23 | |
24 // Task: Load the reference file asynchronously. In order to create a new | |
25 // reference file, use the task 'generate-reference' below. | |
26 audit.define('load-reference', (task, should) => { | |
27 var loader = new BufferLoader(context, [ | |
28 'audiobuffersource-playbackrate-modulation-expected.wav' | |
29 ], function (bufferList) { | |
30 referenceBuffer = bufferList[0]; | |
31 should(true, "Loaded reference file").beTrue(); | |
32 task.done(); | |
33 }); | |
34 | |
35 loader.load(); | |
36 }); | |
37 | 38 |
38 | 39 |
39 // Task: Render the actual buffer and compare with the reference. | 40 // Task: Render the actual buffer and compare with the reference. |
40 audit.define('generate-verify', (task, should) => { | 41 audit.define('generate-verify', (task, should) => { |
41 | |
42 // With this setting, the playback rate will be changing continuously and | |
43 // repeatedly within the range of [0, 200] around 100Hz, based on the | |
44 // input from the oscillator. | |
45 createSawtoothWithModulation(context, 'playbackRate', 100, 100); | |
46 | 42 |
47 context.startRendering().then(function (renderedBuffer) { | 43 // With this setting, the playback rate will be changing continuously |
48 var actual = renderedBuffer.getChannelData(0); | 44 // and repeatedly within the range of [0, 200] around 100Hz, based on |
49 var expected = referenceBuffer.getChannelData(0); | 45 // the input from the oscillator. |
| 46 createSawtoothWithModulation(context, 'playbackRate', 100, 100); |
50 | 47 |
51 // Compare two buffers with arbitrary (yet reasonable) constraints. | 48 context.startRendering() |
52 // There parameters are determined by try bot experiments. | 49 .then(function(renderedBuffer) { |
53 compareBuffersWithConstraints(should, actual, expected, { | 50 let actual = renderedBuffer.getChannelData(0); |
54 prefix: "Verify", | 51 let expected = referenceBuffer.getChannelData(0); |
55 thresholdSNR: 92.72, | |
56 thresholdDiffULP: 0.985, | |
57 thresholdDiffCount: 0, | |
58 bitDepth: 16 | |
59 }); | |
60 | 52 |
61 var filename = 'audiobuffersource-playbackrate-modulation-actual.wav'; | 53 // Compare two buffers with arbitrary (yet reasonable) |
62 if (downloadAudioBuffer(renderedBuffer, filename)) | 54 // constraints. There parameters are determined by try bot |
63 should(true, "Saved reference file").message(filename, ""); | 55 // experiments. |
64 }).then(() => task.done()); | 56 compareBuffersWithConstraints(should, actual, expected, { |
65 }); | 57 prefix: 'Verify', |
| 58 thresholdSNR: 92.72, |
| 59 thresholdDiffULP: 0.985, |
| 60 thresholdDiffCount: 0, |
| 61 bitDepth: 16 |
| 62 }); |
66 | 63 |
67 audit.run(); | 64 let filename = |
68 </script> | 65 'audiobuffersource-playbackrate-modulation-actual.wav'; |
69 </body> | 66 if (downloadAudioBuffer(renderedBuffer, filename)) |
| 67 should(true, 'Saved reference file').message(filename, ''); |
| 68 }) |
| 69 .then(() => task.done()); |
| 70 }); |
70 | 71 |
| 72 audit.run(); |
| 73 </script> |
| 74 </body> |
71 </html> | 75 </html> |
OLD | NEW |