| <!DOCTYPE html> |
| <html> |
| <head> |
| <title> |
| Test getFloatFrequencyData With Zero Inputs |
| </title> |
| <script src="../../imported/w3c/web-platform-tests/resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src="../resources/audit-util.js"></script> |
| <script src="../resources/audit.js"></script> |
| </head> |
| <body> |
| <script id="layout-test-code"> |
| let sampleRate = 48000; |
| |
| // Render enough data to run the test. |
| let renderFrames = 2 * 1024; |
| let renderDuration = renderFrames / sampleRate; |
| |
| let audit = Audit.createTaskRunner(); |
| |
| |
| // Test that getFloatFrequencyData returns -Infinity when the input is |
| // all-zeroes. |
| audit.define('zero input', (task, should) => { |
| let context = new OfflineAudioContext(1, renderFrames, sampleRate); |
| |
| // Constant source of 0's. |
| let source = context.createBufferSource(); |
| source.buffer = createConstantBuffer(context, 1, 0); |
| source.loop = true; |
| |
| // Create analyser and use some non-default minDecibels value. |
| let analyser = context.createAnalyser(); |
| analyser.minDecibels = -123; |
| |
| source.connect(analyser); |
| analyser.connect(context.destination); |
| |
| source.start(); |
| |
| // Suspend after some number of frames and grab the float frequency |
| // data. |
| context.suspend(1024 / sampleRate) |
| .then(function() { |
| let f = new Float32Array(analyser.frequencyBinCount); |
| analyser.getFloatFrequencyData(f); |
| |
| should(f, 'getFloatFrequencyData() with zero-valued input') |
| .beConstantValueOf(-Infinity); |
| }) |
| .then(context.resume.bind(context)); |
| |
| context.startRendering().then(() => task.done()); |
| }); |
| |
| audit.run(); |
| </script> |
| </body> |
| </html> |