mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-21 07:47:32 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
72
dom/media/webaudio/test/test_convolverNodeDelay.html
Normal file
72
dom/media/webaudio/test/test_convolverNodeDelay.html
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test convolution to delay a triangle pulse</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
const sampleRate = 48000;
|
||||
const LENGTH = 12800;
|
||||
// tolerate 16-bit math.
|
||||
const EPSILON = 1.0 / Math.pow(2, 15);
|
||||
|
||||
// Triangle pulse
|
||||
var sourceBuffer = new OfflineAudioContext(1, 1, sampleRate).
|
||||
createBuffer(1, 2 * 128, sampleRate);
|
||||
var channelData = sourceBuffer.getChannelData(0);
|
||||
for (var i = 0; i < 128; ++i) {
|
||||
channelData[i] = i/128;
|
||||
channelData[128 + i] = 1.0 - i/128;
|
||||
}
|
||||
|
||||
function test_delay_index(delayIndex) {
|
||||
|
||||
var context = new OfflineAudioContext(2, LENGTH, sampleRate);
|
||||
|
||||
var merger = context.createChannelMerger(2);
|
||||
merger.connect(context.destination);
|
||||
|
||||
var impulse = context.createBuffer(1, delayIndex + 1, sampleRate);
|
||||
impulse.getChannelData(0)[delayIndex] = 1.0;
|
||||
var convolver = context.createConvolver();
|
||||
convolver.normalize = false;
|
||||
convolver.buffer = impulse;
|
||||
convolver.connect(merger, 0, 0);
|
||||
|
||||
var delayTime = delayIndex/sampleRate;
|
||||
var delay = context.createDelay(delayTime || 1/sampleRate);
|
||||
delay.delayTime.value = delayTime;
|
||||
delay.connect(merger, 0, 1);
|
||||
|
||||
var source = context.createBufferSource();
|
||||
source.buffer = sourceBuffer;
|
||||
source.connect(convolver);
|
||||
source.connect(delay);
|
||||
source.start(0);
|
||||
|
||||
return context.startRendering().
|
||||
then((buffer) => {
|
||||
var convolverOutput = buffer.getChannelData(0);
|
||||
var delayOutput = buffer.getChannelData(1);
|
||||
var maxDiff = 0.0;
|
||||
var maxIndex = 0;
|
||||
for (var i = 0; i < buffer.length; ++i) {
|
||||
var diff = Math.abs(convolverOutput[i] - delayOutput[i]);
|
||||
if (diff > maxDiff) {
|
||||
maxDiff = diff;
|
||||
maxIndex = i;
|
||||
}
|
||||
}
|
||||
// The convolver should produce similar output to the delay.
|
||||
assert_approx_equals(convolverOutput[maxIndex], delayOutput[maxIndex],
|
||||
EPSILON, "output at " + maxIndex);
|
||||
});
|
||||
}
|
||||
|
||||
// The 5/4 ratio provides sampling across a range of delays and offsets within
|
||||
// blocks.
|
||||
for (var delayIndex = 0;
|
||||
delayIndex < LENGTH;
|
||||
delayIndex = Math.floor((5 * (delayIndex + 1)) / 4)) {
|
||||
promise_test(test_delay_index.bind(null, delayIndex),
|
||||
"Delay " + delayIndex);
|
||||
}
|
||||
</script>
|
||||
Loading…
Add table
Add a link
Reference in a new issue