tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_waveDecoder.html (1957B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <meta charset=utf-8>
      4 <head>
      5  <title>Test that we decode uint8 and sint16 wave files with correct conversion to float64</title>
      6  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      8 </head>
      9 <body>
     10 <pre id="test">
     11 <script class="testbody" type="text/javascript">
     12 var testsDone = 0;
     13 var tests = ["UklGRjUrAABXQVZFZm10IBAAAAABAAEAESsAABErAAABAAgAZGF0YQMAAAD/AIA=",
     14             "UklGRkZWAABXQVZFZm10IBAAAAABAAEAESsAACJWAAACABAAZGF0YQYAAAD/fwCAAAA="];
     15 
     16 SimpleTest.waitForExplicitFinish();
     17 
     18 function base64ToUint8Buffer(b64) {
     19  var str = atob(b64)
     20  var u8 = new Uint8Array(str.length);
     21  for (var i = 0; i < str.length; ++i) {
     22    u8[i] = str.charCodeAt(i);
     23  }
     24  return u8;
     25 }
     26 
     27 function fixupBufferSampleRate(u8, rate) {
     28  u8[24] = (rate & 0x000000ff) >> 0;
     29  u8[25] = (rate & 0x0000ff00) >> 8;
     30  u8[26] = (rate & 0x00ff0000) >> 16;
     31  u8[27] = (rate & 0xff000000) >> 24;
     32 }
     33 
     34 function finishTest() {
     35  testsDone += 1;
     36  if (testsDone == tests.length) {
     37    SimpleTest.finish();
     38  }
     39 }
     40 
     41 function decodeComplete(b) {
     42  ok(true, "Decoding succeeded.");
     43  is(b.numberOfChannels, 1, "Should have 1 channel.");
     44  is(b.length, 3, "Should have three samples.");
     45  var samples = b.getChannelData(0);
     46  ok(samples[0] >  0.99 && samples[0] <  1.01, "Check near  1.0. Got " + samples[0]);
     47  ok(samples[1] > -1.01 && samples[1] < -0.99, "Check near -1.0. Got " + samples[1]);
     48  ok(samples[2] > -0.01 && samples[2] <  0.01, "Check near  0.0. Got " + samples[2]);
     49  finishTest();
     50 }
     51 
     52 function decodeFailed() {
     53  ok(false, "Decoding failed.");
     54  finishTest();
     55 }
     56 
     57 addLoadEvent(function() {
     58  var context = new AudioContext();
     59 
     60  for (var i = 0; i < tests.length; ++i) {
     61    var u8 = base64ToUint8Buffer(tests[i]);
     62    fixupBufferSampleRate(u8, context.sampleRate);
     63    context.decodeAudioData(u8.buffer, decodeComplete, decodeFailed);
     64  }
     65 });
     66 </script>
     67 </pre>
     68 </body>
     69 </html>