| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| promise_test(function() { |
| // fftSize <= bufferSize so that the time domain data is full of input after |
| // processing the buffer. |
| const fftSize = 32; |
| const bufferSize = 128; |
| |
| var context = new OfflineAudioContext(1, bufferSize, 48000); |
| |
| var analyser1 = context.createAnalyser(); |
| analyser1.fftSize = fftSize; |
| analyser1.connect(context.destination); |
| var analyser2 = context.createAnalyser(); |
| analyser2.fftSize = fftSize; |
| |
| var gain = context.createGain(); |
| gain.gain.value = 2.0; |
| gain.connect(analyser1); |
| gain.connect(analyser2); |
| |
| // Create a DC input to make getFloatTimeDomainData() output consistent at |
| // any time. |
| var buffer = context.createBuffer(1, 1, context.sampleRate); |
| buffer.getChannelData(0)[0] = 1.0 / gain.gain.value; |
| var source = context.createBufferSource(); |
| source.buffer = buffer; |
| source.loop = true; |
| source.connect(gain); |
| source.start(); |
| |
| return context.startRendering().then(function(buffer) { |
| assert_equals(buffer.getChannelData(0)[0], 1.0, "analyser1 output"); |
| |
| var data = new Float32Array(1); |
| analyser1.getFloatTimeDomainData(data); |
| assert_equals(data[0], 1.0, "analyser1 time domain data"); |
| analyser2.getFloatTimeDomainData(data); |
| assert_equals(data[0], 1.0, "analyser2 time domain data"); |
| }); |
| }, "Test effect of AnalyserNode on GainNode output"); |
| </script> |
| </head> |
| </body> |
| </html> |