summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html')
-rw-r--r--testing/web-platform/tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html80
1 files changed, 80 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html b/testing/web-platform/tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html
new file mode 100644
index 0000000000..8dafa2f811
--- /dev/null
+++ b/testing/web-platform/tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html
@@ -0,0 +1,80 @@
+<!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();
+
+ setup(function () {
+ context.audioWorklet.addModule(
+ 'processors/channel-count-processor.js').then(() => audit.run());
+
+ // 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);
+ });
+ });
+ </script>
+ </body>
+</html>