tor-browser

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

test_delayNodeTailIncrease.html (2002B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test increasing delay of DelayNode after input finishes</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script type="text/javascript" src="webaudio.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 
     13 SimpleTest.waitForExplicitFinish();
     14 
     15 const signalLength = 100;
     16 const bufferSize = 1024;
     17 // Delay should be long enough to allow CC to run
     18 const delayBufferCount = 50;
     19 const delayLength = delayBufferCount * bufferSize + 700;
     20 
     21 var count = 0;
     22 
     23 function applySignal(buffer, offset) {
     24  for (var i = 0; i < signalLength; ++i) {
     25    buffer.getChannelData(0)[offset + i] = Math.cos(Math.PI * i / signalLength);
     26  }
     27 }
     28 
     29 function onAudioProcess(e) {
     30  switch(count) {
     31  case 5:
     32    SpecialPowers.forceGC();
     33    SpecialPowers.forceCC();
     34    break;
     35  case delayBufferCount:
     36    var offset = delayLength - count * bufferSize;
     37    var ctx = e.target.context;
     38    var expected = ctx.createBuffer(1, bufferSize, ctx.sampleRate);
     39    applySignal(expected, offset);
     40    compareBuffers(e.inputBuffer, expected);
     41    SimpleTest.finish();
     42  }
     43  count++;
     44 }
     45 
     46 function startTest() {
     47  var ctx = new AudioContext();
     48  var processor = ctx.createScriptProcessor(bufferSize, 1, 0);
     49  processor.onaudioprocess = onAudioProcess;
     50 
     51  // Switch on delay at a time in the future.
     52  var delayDuration = delayLength / ctx.sampleRate;
     53  var delayStartTime = (delayLength - bufferSize) / ctx.sampleRate;
     54  var delay = ctx.createDelay(delayDuration);
     55  delay.delayTime.setValueAtTime(delayDuration, delayStartTime);
     56  delay.connect(processor);
     57 
     58  // Short signal that finishes before switching to long delay
     59  var buffer = ctx.createBuffer(1, signalLength, ctx.sampleRate);
     60  applySignal(buffer, 0);
     61  var source = ctx.createBufferSource();
     62  source.buffer = buffer;
     63  source.start();
     64  source.connect(delay);
     65 };
     66 
     67 startTest();
     68 </script>
     69 </pre>
     70 </body>
     71 </html>