blob: 6277c253ec0daffea06fa924d11e4e6f8d5b03f1 [file] [log] [blame]
<!doctype html>
<html>
<head>
<title>Test DelayNode Delay</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/webaudio/resources/audit-util.js"></script>
<script src="/webaudio/resources/audit.js"></script>
</head>
<body>
<script>
let audit = Audit.createTaskRunner();
audit.define(
{label: 'test0', description: 'Test delay of 3 frames'},
async (task, should) => {
// Only need a few outputs samples. The sample rate is arbitrary.
const context =
new OfflineAudioContext(1, RENDER_QUANTUM_FRAMES, 8192);
let src;
let delay;
should(
() => {
src = new ConstantSourceNode(context);
delay = new DelayNode(context);
},
'Creating ConstantSourceNode(context) and DelayNode(context)')
.notThrow();
// The number of frames to delay for the DelayNode. Should be a
// whole number, but is otherwise arbitrary.
const delayFrames = 3;
should(() => {
delay.delayTime.value = delayFrames / context.sampleRate;
}, `Setting delayTime to ${delayFrames} frames`).notThrow();
src.connect(delay).connect(context.destination);
src.start();
let buffer = await context.startRendering();
let output = buffer.getChannelData(0);
// Verify output was delayed the correct number of frames.
should(output.slice(0, delayFrames), `output[0:${delayFrames - 1}]`)
.beConstantValueOf(0);
should(
output.slice(delayFrames),
`output[${delayFrames}:${output.length - 1}]`)
.beConstantValueOf(1);
task.done();
});
audit.run();
</script>
</body>
</html>