Bug 1842773 - Part 5: Add ArrayBuffer.prototype.{maxByteLength,resizable} getters...
[gecko.git] / dom / webidl / BaseAudioContext.webidl
blob7bdd15ddfc588fbcb403d98ac509f238ccfc593f
1 /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4  * You can obtain one at http://mozilla.org/MPL/2.0/.
5  *
6  * The origin of this IDL file is
7  * https://webaudio.github.io/web-audio-api/#idl-def-BaseAudioContext
8  *
9  * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
10  * liability, trademark and document use rules apply.
11  */
13 callback DecodeSuccessCallback = undefined (AudioBuffer decodedData);
14 callback DecodeErrorCallback = undefined (DOMException error);
16 enum AudioContextState {
17     "suspended",
18     "running",
19     "closed"
22 [Exposed=Window]
23 interface BaseAudioContext : EventTarget {
24     readonly        attribute AudioDestinationNode destination;
25     readonly        attribute float                sampleRate;
26     readonly        attribute double               currentTime;
27     readonly        attribute AudioListener        listener;
28     readonly        attribute AudioContextState    state;
29     [Throws, SameObject, SecureContext]
30     readonly        attribute AudioWorklet         audioWorklet;
32     [NewObject]
33     Promise<undefined> resume();
35                     attribute EventHandler         onstatechange;
37     [NewObject, Throws]
38     AudioBuffer            createBuffer (unsigned long numberOfChannels,
39                                          unsigned long length,
40                                          float sampleRate);
42     [NewObject]
43     Promise<AudioBuffer> decodeAudioData(ArrayBuffer audioData,
44                                          optional DecodeSuccessCallback successCallback,
45                                          optional DecodeErrorCallback errorCallback);
47     // AudioNode creation
48     [NewObject]
49     AudioBufferSourceNode createBufferSource();
51     [NewObject]
52     ConstantSourceNode createConstantSource();
54     [NewObject, Throws]
55     ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize = 0,
56                                               optional unsigned long numberOfInputChannels = 2,
57                                               optional unsigned long numberOfOutputChannels = 2);
59     [NewObject, Throws]
60     AnalyserNode createAnalyser();
62     [NewObject, Throws]
63     GainNode createGain();
65     [NewObject, Throws]
66     DelayNode createDelay(optional double maxDelayTime = 1); // TODO: no = 1
68     [NewObject, Throws]
69     BiquadFilterNode createBiquadFilter();
71     [NewObject, Throws]
72     IIRFilterNode createIIRFilter(sequence<double> feedforward, sequence<double> feedback);
74     [NewObject, Throws]
75     WaveShaperNode createWaveShaper();
77     [NewObject, Throws]
78     PannerNode createPanner();
80     [NewObject, Throws]
81     StereoPannerNode createStereoPanner();
83     [NewObject, Throws]
84     ConvolverNode createConvolver();
86     [NewObject, Throws]
87     ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs = 6);
89     [NewObject, Throws]
90     ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs = 6);
92     [NewObject, Throws]
93     DynamicsCompressorNode createDynamicsCompressor();
95     [NewObject, Throws]
96     OscillatorNode createOscillator();
98     [NewObject, Throws]
99     PeriodicWave createPeriodicWave(sequence<float> real,
100                                     sequence<float> imag,
101                                     optional PeriodicWaveConstraints constraints = {});