tor-browser

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

test_waveShaperGain.html (2028B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4 <meta charset="utf-8">
      5  <title>Test that WaveShaperNode doesn't corrupt its inputs when the gain is !=
      6    1.0 (bug 1203616)</title>
      7  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      8  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      9 </head>
     10 <body>
     11 <pre>
     12 </pre>
     13 <script class="testbody" type="text/javascript">
     14 SimpleTest.waitForExplicitFinish();
     15 var samplerate = 44100;
     16 var context = new OfflineAudioContext(1, 44100, samplerate);
     17 
     18 var dc = context.createBufferSource();
     19 
     20 var buffer = context.createBuffer(1, 1, samplerate);
     21 buffer.getChannelData(0)[0] = 1.0;
     22 dc.buffer = buffer;
     23 
     24 var gain = context.createGain();
     25 var ws2 = context.createWaveShaper();
     26 var ws = [];
     27 
     28 // No-op waveshaper curves.
     29 for (var i = 0; i < 2; i++) {
     30  ws[i] = context.createWaveShaper();
     31  var curve = new Float32Array(2);
     32  curve[0] = -1.0;
     33  curve[1] = 1.0;
     34  ws[i].curve = curve;
     35  ws[i].connect(context.destination);
     36  gain.connect(ws[i]);
     37 }
     38 
     39 dc.connect(gain);
     40 dc.start();
     41 
     42 gain.gain.value = 0.5;
     43 
     44 context.startRendering().then(buffer => {
     45  document.querySelector("pre").innerHTML = buffer.getChannelData(0)[0];
     46  ok(buffer.getChannelData(0)[0] == 1.0, "Volume was handled properly");
     47 
     48  context = new OfflineAudioContext(1, 100, samplerate);
     49  var oscillator = context.createOscillator();
     50  var gain = context.createGain();
     51  var waveShaper = context.createWaveShaper();
     52 
     53  oscillator.start(0);
     54  oscillator.connect(gain);
     55 
     56  // to silence
     57  gain.gain.value = 0;
     58  gain.connect(waveShaper);
     59 
     60  // convert all signal into 1.0. The non unity values are to detect the use
     61  // of uninitialized buffers (see Bug 1283910).
     62  waveShaper.curve = new Float32Array([ 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5 ]);
     63  waveShaper.connect(context.destination);
     64 
     65  context.startRendering().then((buffer) => {
     66    var result = buffer.getChannelData(0);
     67    ok(result.every(x => x === 1), "WaveShaper handles zero gain properly");
     68    SimpleTest.finish();
     69  });
     70 });
     71 </script>
     72 </body>