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; |
+} |