| OLD | NEW |
| 1 <!doctype html> | 1 <!doctype html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="../resources/js-test.js"></script> | 4 <script src="../resources/js-test.js"></script> |
| 5 <script src="resources/compatibility.js"></script> | 5 <script src="resources/compatibility.js"></script> |
| 6 <script src="resources/audio-testing.js"></script> | 6 <script src="resources/audio-testing.js"></script> |
| 7 <script src="resources/realtimeanalyser-testing.js"></script> | 7 <script src="resources/realtimeanalyser-testing.js"></script> |
| 8 <script src="resources/fft.js"></script> | 8 <script src="resources/fft.js"></script> |
| 9 <title>Test Analyser getFloatFrequencyData and getByteFrequencyData, Smoothi
ng</title> | 9 <title>Test Analyser getFloatFrequencyData and getByteFrequencyData, Smoothi
ng</title> |
| 10 | 10 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 | 65 |
| 66 // Test the byte frequency data. | 66 // Test the byte frequency data. |
| 67 var byteFreqData = new Uint8Array(analyser.frequencyBinCount); | 67 var byteFreqData = new Uint8Array(analyser.frequencyBinCount); |
| 68 var expectedByteData = new Float32Array(analyser.frequencyBinCount); | 68 var expectedByteData = new Float32Array(analyser.frequencyBinCount); |
| 69 analyser.getByteFrequencyData(byteFreqData); | 69 analyser.getByteFrequencyData(byteFreqData); |
| 70 | 70 |
| 71 // Convert the expected float frequency data to byte data. | 71 // Convert the expected float frequency data to byte data. |
| 72 var expectedByteData = convertFloatToByte(smoothedFloatResult.map(line
arToDb), | 72 var expectedByteData = convertFloatToByte(smoothedFloatResult.map(line
arToDb), |
| 73 analyser.minDecibels, analyser.maxDecibels); | 73 analyser.minDecibels, analyser.maxDecibels); |
| 74 | 74 |
| 75 success = Should(analyser.fftSize + "-point byte FFT", byteFreqData, { | 75 success = Should(analyser.fftSize + "-point byte FFT", byteFreqData) |
| 76 verbose: true | 76 .beCloseToArray(expectedByteData, 0) && success; |
| 77 }).beCloseToArray(expectedByteData, 0) && success; | |
| 78 | 77 |
| 79 }).then(context.resume.bind(context)); | 78 }).then(context.resume.bind(context)); |
| 80 | 79 |
| 81 // Skip an analyser frame and grab another to verify that the smoothing
is done correctly. | 80 // Skip an analyser frame and grab another to verify that the smoothing
is done correctly. |
| 82 suspendFrame += 2 * analyser.fftSize; | 81 suspendFrame += 2 * analyser.fftSize; |
| 83 context.suspend(suspendFrame / sampleRate).then(function () { | 82 context.suspend(suspendFrame / sampleRate).then(function () { |
| 84 var timeData = new Float32Array(analyser.fftSize); | 83 var timeData = new Float32Array(analyser.fftSize); |
| 85 var freqDataInDb = new Float32Array(analyser.frequencyBinCount); | 84 var freqDataInDb = new Float32Array(analyser.frequencyBinCount); |
| 86 | 85 |
| 87 // Grab the time domain and frequency domain data | 86 // Grab the time domain and frequency domain data |
| (...skipping 16 matching lines...) Expand all Loading... |
| 104 | 103 |
| 105 // Test the byte frequency data. | 104 // Test the byte frequency data. |
| 106 var byteFreqData = new Uint8Array(analyser.frequencyBinCount); | 105 var byteFreqData = new Uint8Array(analyser.frequencyBinCount); |
| 107 var expectedByteData = new Float32Array(analyser.frequencyBinCount); | 106 var expectedByteData = new Float32Array(analyser.frequencyBinCount); |
| 108 analyser.getByteFrequencyData(byteFreqData); | 107 analyser.getByteFrequencyData(byteFreqData); |
| 109 | 108 |
| 110 // Convert the expected float frequency data to byte data. | 109 // Convert the expected float frequency data to byte data. |
| 111 var expectedByteData = convertFloatToByte(smoothedFloatResult.map(line
arToDb), | 110 var expectedByteData = convertFloatToByte(smoothedFloatResult.map(line
arToDb), |
| 112 analyser.minDecibels, analyser.maxDecibels); | 111 analyser.minDecibels, analyser.maxDecibels); |
| 113 | 112 |
| 114 success = Should(analyser.fftSize + "-point byte FFT", byteFreqData, { | 113 success = Should(analyser.fftSize + "-point byte FFT", byteFreqData) |
| 115 verbose: true | 114 .beCloseToArray(expectedByteData, 0) && success; |
| 116 }).beCloseToArray(expectedByteData, 0) && success; | |
| 117 | 115 |
| 118 }).then(context.resume.bind(context)); | 116 }).then(context.resume.bind(context)); |
| 119 | 117 |
| 120 context.startRendering().then(function (buffer) { | 118 context.startRendering().then(function (buffer) { |
| 121 var prefix = "FFT smoothing performed "; | 119 var prefix = "FFT smoothing performed "; |
| 122 var suffix = " with smoothing constant " + analyser.smoothingTimeConst
ant + ".\n" | 120 var suffix = " with smoothing constant " + analyser.smoothingTimeConst
ant + ".\n" |
| 123 | 121 |
| 124 if (success) | 122 if (success) |
| 125 testPassed(prefix + "correctly" + suffix); | 123 testPassed(prefix + "correctly" + suffix); |
| 126 else | 124 else |
| 127 testFailed(prefix + "incorrectly" + suffix); | 125 testFailed(prefix + "incorrectly" + suffix); |
| 128 }).then(done); | 126 }).then(done); |
| 129 }); | 127 }); |
| 130 | 128 |
| 131 audit.defineTask("finish", function (done) { | 129 audit.defineTask("finish", function (done) { |
| 132 finishJSTest(); | 130 finishJSTest(); |
| 133 done(); | 131 done(); |
| 134 }); | 132 }); |
| 135 | 133 |
| 136 audit.runTasks(); | 134 audit.runTasks(); |
| 137 | 135 |
| 138 </script> | 136 </script> |
| 139 </body> | 137 </body> |
| 140 </html> | 138 </html> |
| OLD | NEW |