| Index: third_party/WebKit/LayoutTests/webaudio/resources/audit-util.js
|
| diff --git a/third_party/WebKit/LayoutTests/webaudio/resources/audit-util.js b/third_party/WebKit/LayoutTests/webaudio/resources/audit-util.js
|
| index 3e261f6d7ad025eb3d21d5b3784d6959d62e6612..74c6972957a5be4e0d4c31175d7d9284d33cfde3 100644
|
| --- a/third_party/WebKit/LayoutTests/webaudio/resources/audit-util.js
|
| +++ b/third_party/WebKit/LayoutTests/webaudio/resources/audit-util.js
|
| @@ -257,3 +257,21 @@ function grainLengthInSampleFrames(grainOffset, duration, sampleRate) {
|
| function isValidNumber(x) {
|
| return !isNaN(x) && (x != Infinity) && (x != -Infinity);
|
| }
|
| +
|
| +// Compute the (linear) signal-to-noise ratio between |actual| and
|
| +// |expected|. The result is NOT in dB! If the |actual| and
|
| +// |expected| have different lengths, the shorter length is used.
|
| +function computeSNR(actual, expected) {
|
| + var signalPower = 0;
|
| + var noisePower = 0;
|
| +
|
| + var length = Math.min(actual.length, expected.length);
|
| +
|
| + for (var k = 0; k < length; ++k) {
|
| + var diff = actual[k] - expected[k];
|
| + signalPower += expected[k] * expected[k];
|
| + noisePower += diff * diff;
|
| + }
|
| +
|
| + return signalPower / noisePower;
|
| +}
|
|
|