Index: third_party/WebKit/LayoutTests/webaudio/realtimeanalyser-fftsize-reset.html |
diff --git a/third_party/WebKit/LayoutTests/webaudio/realtimeanalyser-fftsize-reset.html b/third_party/WebKit/LayoutTests/webaudio/realtimeanalyser-fftsize-reset.html |
deleted file mode 100644 |
index 3fa69ea2cadaca41d83905e8ccf9519996d0aaca..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/LayoutTests/webaudio/realtimeanalyser-fftsize-reset.html |
+++ /dev/null |
@@ -1,133 +0,0 @@ |
-<!doctype html> |
-<html> |
- <head> |
- <title>Test fftSize Changes Resetting AnalyserNode State </title> |
- <script src="../resources/testharness.js"></script> |
- <script src="../resources/testharnessreport.js"></script> |
- <script src="resources/audit-util.js"></script> |
- <script src="resources/audio-testing.js"></script> |
- </head> |
- |
- <body> |
- <script> |
- // Fairly arbitrary sample rate. |
- var sampleRate = 24000; |
- |
- var audit = Audit.createTaskRunner(); |
- |
- // Verify that setting the fftSize resets the memory for the FFT smoothing |
- // operation. Only a few of the possible variations are tested. |
- |
- audit.defineTask("128->1024", function (taskDone) { |
- testFFTSize({ |
- initialFFTSize: 128, |
- finalFFTSize: 1024, |
- errorThreshold: { |
- relativeThreshold: 1.9095e-6 |
- } |
- }).then(taskDone); |
- }); |
- |
- audit.defineTask("512->256", function (taskDone) { |
- testFFTSize({ |
- initialFFTSize: 512, |
- finalFFTSize: 256, |
- errorThreshold: { |
- relativeThreshold: 1.8166e-6 |
- } |
- }).then(taskDone); |
- }); |
- |
- function testFFTSize(options) { |
- var { |
- initialFFTSize, finalFFTSize, errorThreshold |
- } = options; |
- |
- // The duration is fairly arbitrary as long as it's long enough for the |
- // FFT test. |
- var context = new OfflineAudioContext(1, sampleRate, sampleRate); |
- |
- // Actual source doesn't matter but a sawtooth is a nice waveform with |
- // lots of harmonic content. |
- var osc = context.createOscillator(); |
- osc.type = "sawtooth"; |
- |
- // The analyser under test. |
- var testAnalyser = context.createAnalyser(); |
- testAnalyser.fftSize = initialFFTSize; |
- |
- // The reference analyser. The fftSize is fixed to the desired value, |
- // and we turn off smoothing so that we get the FFT of the current time |
- // data. |
- var refAnalyser = context.createAnalyser(); |
- refAnalyser.fftSize = finalFFTSize; |
- refAnalyser.smoothingTimeConstant = 0; |
- |
- // Setup the graph and start the oscillator. |
- osc.connect(testAnalyser) |
- .connect(context.destination); |
- osc.connect(refAnalyser) |
- .connect(context.destination); |
- |
- osc.start(); |
- |
- // Let the analyser smooth a few FFTs (rather arbitrary, but should be |
- // more than one), then switch the size. |
- |
- var suspendFrame = 4 * initialFFTSize; |
- context.suspend(suspendFrame / context.sampleRate) |
- .then(function () { |
- testAnalyser.fftSize = finalFFTSize; |
- }) |
- .then(context.resume.bind(context)); |
- |
- // Wait some frames and grab the FFT data. This is fairly arbitrary |
- // too, and can be independent of the FFT sizes. |
- suspendFrame += 1024; |
- context.suspend(suspendFrame / context.sampleRate) |
- .then(function () { |
- var testFFT = new Float32Array(testAnalyser.frequencyBinCount); |
- var refFFT = new Float32Array(refAnalyser.frequencyBinCount) |
- var testSignal = new Float32Array(testAnalyser.fftSize); |
- var refSignal = new Float32Array(refAnalyser.fftSize); |
- |
- testAnalyser.getFloatTimeDomainData(testSignal); |
- refAnalyser.getFloatTimeDomainData(refSignal); |
- |
- testAnalyser.getFloatFrequencyData(testFFT); |
- refAnalyser.getFloatFrequencyData(refFFT); |
- |
- // Convert the FFT data from dB to linear |
- testFFT = testFFT.map(x => Math.pow(10, x / 20)); |
- refFFT = refFFT.map(x => Math.pow(10, x / 20)); |
- |
- // The test data has smoothing applied, but the reference doesn't. |
- // Apply the smoothing factor to the reference data. |
- var smoothing = 1 - testAnalyser.smoothingTimeConstant; |
- refFFT = refFFT.map(x => x * smoothing); |
- |
- var success = true; |
- |
- // First a basic sanity check that the time domain signals are |
- // exactly the same for both analysers. |
- success = Should("Time data", testSignal) |
- .beCloseToArray(refSignal, 0) && success; |
- |
- success = Should("Linear FFT data after setting fftSize = " + testAnalyser.fftSize, |
- testFFT) |
- .beCloseToArray(refFFT, errorThreshold) && success; |
- |
- Should("*** Changing fftSize from " + initialFFTSize + " to " + finalFFTSize, success) |
- .summarize( |
- "correctly reset the smoothing state", |
- "did not correctly reset the smoothing state"); |
- }) |
- .then(context.resume.bind(context)); |
- |
- return context.startRendering(); |
- } |
- |
- audit.runTasks(); |
- </script> |
- </body> |
-</html> |