OLD | NEW |
1 <!doctype html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
| 3 <head> |
| 4 <title> |
| 5 Test webm Decoding |
| 6 </title> |
| 7 <script src="../../../resources/testharness.js"></script> |
| 8 <script src="../../../resources/testharnessreport.js"></script> |
| 9 <script src="../../resources/audit-util.js"></script> |
| 10 <script src="../../resources/audit.js"></script> |
| 11 <script src="../../resources/buffer-loader.js"></script> |
| 12 </head> |
| 13 <body> |
| 14 <script id="layout-test-code"> |
| 15 let audit = Audit.createTaskRunner(); |
| 16 let decodedAudio; |
| 17 let expectedAudio; |
3 | 18 |
4 <head> | 19 audit.define( |
5 <title>Test webm Decoding</title> | 20 {label: 'test', description: 'Test webm decoding'}, |
6 <script src="../../../resources/testharness.js"></script> | 21 function(task, should) { |
7 <script src="../../../resources/testharnessreport.js"></script> | |
8 <script src="../../resources/audit-util.js"></script> | |
9 <script src="../../resources/audit.js"></script> | |
10 <script src="../../resources/buffer-loader.js"></script> | |
11 </head> | |
12 | 22 |
13 <body> | 23 let context = new AudioContext(); |
14 <script> | |
15 let audit = Audit.createTaskRunner(); | |
16 let decodedAudio; | |
17 let expectedAudio; | |
18 | 24 |
19 audit.define( | 25 let bufferLoader = new BufferLoader( |
20 {label: 'test', description: 'Test webm decoding'}, | 26 context, ['webm-decode-expected.wav', 'test-webm.webm'], |
21 function(task, should) { | 27 function(bufferList) { |
| 28 expectedAudio = bufferList[0]; |
| 29 decodedAudio = bufferList[1]; |
22 | 30 |
23 let context = new AudioContext(); | 31 // Verify that we have the right number of channels and |
| 32 // frames. |
| 33 should(decodedAudio.numberOfChannels, 'Number of channels') |
| 34 .beEqualTo(expectedAudio.numberOfChannels); |
| 35 should(decodedAudio.length, 'Decoded number of frames') |
| 36 .beEqualTo(expectedAudio.length); |
24 | 37 |
25 let bufferLoader = new BufferLoader( | 38 // Verify that the actual data matches the expected data very |
26 context, ['webm-decode-expected.wav', 'test-webm.webm'], | 39 // closely. |
27 function(bufferList) { | 40 for (let c = 0; c < expectedAudio.numberOfChannels; ++c) { |
28 expectedAudio = bufferList[0]; | 41 let snrdB = 10 * |
29 decodedAudio = bufferList[1]; | 42 Math.log10(computeSNR( |
| 43 decodedAudio.getChannelData(c), |
| 44 expectedAudio.getChannelData(c))); |
| 45 should(snrdB, 'SNR between actual expected channel ' + c) |
| 46 .beGreaterThanOrEqualTo(109.56); |
| 47 should( |
| 48 decodedAudio.getChannelData(c), 'Decoded channel ' + c) |
| 49 .beCloseToArray( |
| 50 expectedAudio.getChannelData(c), |
| 51 {absoluteThreshold: 4.0234e-5}); |
| 52 } |
| 53 let filename = 'webm-decode-actual.wav'; |
| 54 if (downloadAudioBuffer(decodedAudio, filename)) |
| 55 should(true, 'Saved reference file').message(filename, ''); |
| 56 task.done(); |
| 57 }); |
30 | 58 |
31 // Verify that we have the right number of channels and | 59 bufferLoader.load(); |
32 // frames. | 60 }); |
33 should(decodedAudio.numberOfChannels, 'Number of channels') | |
34 .beEqualTo(expectedAudio.numberOfChannels); | |
35 should(decodedAudio.length, 'Decoded number of frames') | |
36 .beEqualTo(expectedAudio.length); | |
37 | 61 |
38 // Verify that the actual data matches the expected data very | 62 audit.run(); |
39 // closely. | 63 </script> |
40 for (let c = 0; c < expectedAudio.numberOfChannels; ++c) { | 64 </body> |
41 let snrdB = 10 * | 65 </html> |
42 Math.log10(computeSNR( | |
43 decodedAudio.getChannelData(c), | |
44 expectedAudio.getChannelData(c))); | |
45 should(snrdB, 'SNR between actual expected channel ' + c) | |
46 .beGreaterThanOrEqualTo(109.56); | |
47 should(decodedAudio.getChannelData(c), 'Decoded channel ' + c) | |
48 .beCloseToArray( | |
49 expectedAudio.getChannelData(c), | |
50 {absoluteThreshold: 4.0234e-5}); | |
51 } | |
52 var filename = 'webm-decode-actual.wav'; | |
53 if (downloadAudioBuffer(decodedAudio, filename)) | |
54 should(true, 'Saved reference file').message(filename, ''); | |
55 task.done(); | |
56 }); | |
57 | |
58 bufferLoader.load(); | |
59 }); | |
60 | |
61 audit.run(); | |
62 </script> | |
63 </body> | |
64 | |
65 </html> | |
OLD | NEW |