File: audioworkletnode-output-channel-count.https.html

package info (click to toggle)
firefox-esr 68.10.0esr-1~deb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 3,143,932 kB
  • sloc: cpp: 5,227,879; javascript: 4,315,531; ansic: 2,467,042; python: 794,975; java: 349,993; asm: 232,034; xml: 228,320; sh: 82,008; lisp: 41,202; makefile: 22,347; perl: 15,555; objc: 5,277; cs: 4,725; yacc: 1,778; ada: 1,681; pascal: 1,673; lex: 1,417; exp: 527; php: 436; ruby: 225; awk: 162; sed: 53; csh: 44
file content (82 lines) | stat: -rw-r--r-- 3,012 bytes parent folder | download | duplicates (2)
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>