Index: third_party/WebKit/LayoutTests/webaudio/codec-tests/webm/webm-decode.html |
diff --git a/third_party/WebKit/LayoutTests/webaudio/codec-tests/webm/webm-decode.html b/third_party/WebKit/LayoutTests/webaudio/codec-tests/webm/webm-decode.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1f3232a6030053bd66aa16723276ff1e4e82fd30 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/webaudio/codec-tests/webm/webm-decode.html |
@@ -0,0 +1,61 @@ |
+<!doctype html> |
+<html> |
+ |
+<head> |
+ <title>Test webm Decoding</title> |
+ <script src="../../../resources/testharness.js"></script> |
+ <script src="../../../resources/testharnessreport.js"></script> |
+ <script src="../../resources/audit-util.js"></script> |
+ <script src="../../resources/audit.js"></script> |
+ <script src="../../resources/buffer-loader.js"></script> |
+</head> |
+ |
+<body> |
+ <script> |
+ let audit = Audit.createTaskRunner(); |
+ let decodedAudio; |
+ let expectedAudio; |
+ |
+ audit.define('test', function(task, should) { |
+ task.describe('Test webm decoding'); |
+ |
+ let context = new AudioContext(); |
+ |
+ let bufferLoader = new BufferLoader( |
+ context, ['webm-decode-expected.wav', 'test-webm.webm'], |
+ function(bufferList) { |
+ expectedAudio = bufferList[0]; |
+ decodedAudio = bufferList[1]; |
+ |
+ // Verify that we have the right number of channels and frames. |
+ should(decodedAudio.numberOfChannels, 'Number of channels') |
+ .beEqualTo(expectedAudio.numberOfChannels); |
+ should(decodedAudio.length, 'Decoded number of frames') |
+ .beEqualTo(expectedAudio.length); |
+ |
+ // Verify that the actual data matches the expected data very |
+ // closely. |
+ for (let c = 0; c < expectedAudio.numberOfChannels; ++c) { |
+ let snrdB = 10 * |
+ Math.log10(computeSNR( |
+ decodedAudio.getChannelData(c), |
+ expectedAudio.getChannelData(c))); |
+ should(snrdB, 'SNR between actual expected channel ' + c) |
+ .beGreaterThanOrEqualTo(109.56); |
+ should(decodedAudio.getChannelData(c), 'Decoded channel ' + c) |
+ .beCloseToArray( |
+ expectedAudio.getChannelData(c), |
+ {absoluteThreshold: 4.0234e-5}); |
+ } |
+ |
+ task.done(); |
+ }); |
+ |
+ bufferLoader.load(); |
+ }); |
+ |
+ audit.run(); |
+ </script> |
+</body> |
+ |
+</html> |