1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
<!DOCTYPE html>
<html>
<head>
<title>
Test the construction of AudioWorkletNode with real-time context
</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/webaudio/resources/audit.js"></script>
</head>
<body>
<script id="layout-test-code">
const audit = Audit.createTaskRunner();
const context = new AudioContext();
(async function () {
await context.audioWorklet.addModule(
'processors/channel-count-processor.js');
// Test if the output channe count dynamically changes if the input
// and output is 1.
audit.define(
{label: 'Dynamically change the channel count to if unspecified.'},
(task, should) => {
// Use arbitrary parameters for the test.
const buffer = new AudioBuffer({
numberOfChannels: 17,
length: 1,
sampleRate: context.sampleRate,
});
const source = new AudioBufferSourceNode(context);
source.buffer = buffer;
const node = new AudioWorkletNode(context, 'channel-count', {
numberOfInputs: 1,
numberOfOutputs: 1,
});
node.port.onmessage = (message) => {
const expected = message.data;
should(expected.outputChannel,
'The expected output channel count').beEqualTo(17);
task.done();
};
// We need to make an actual connection becasue the channel count
// change happen when the rendering starts. It is to test if the
// channel count adapts to the upstream node correctly.
source.connect(node).connect(context.destination);
source.start();
});
// Test if outputChannelCount is honored as expected even if the input
// and output is 1.
audit.define(
{label: 'Givien outputChannelCount must be honored.'},
(task, should) => {
const node = new AudioWorkletNode(
context, 'channel-count', {
numberOfInputs: 1,
numberOfOutputs: 1,
outputChannelCount: [2],
});
node.port.onmessage = (message) => {
const expected = message.data;
should(expected.outputChannel,
'The expected output channel count').beEqualTo(2);
task.done();
};
// We need to make an actual connection becasue the channel count
// change might happen when the rendering starts. It is to test
// if the specified channel count is kept correctly.
node.connect(context.destination);
});
audit.run();
})();
</script>
</body>
</html>
|