summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/interfaces/webaudio.idl
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/interfaces/webaudio.idl')
-rw-r--r--testing/web-platform/tests/interfaces/webaudio.idl674
1 files changed, 674 insertions, 0 deletions
diff --git a/testing/web-platform/tests/interfaces/webaudio.idl b/testing/web-platform/tests/interfaces/webaudio.idl
new file mode 100644
index 0000000000..1569de204b
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webaudio.idl
@@ -0,0 +1,674 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Web Audio API (https://webaudio.github.io/web-audio-api/)
+
+enum AudioContextState {
+ "suspended",
+ "running",
+ "closed"
+};
+
+callback DecodeErrorCallback = undefined (DOMException error);
+
+callback DecodeSuccessCallback = undefined (AudioBuffer decodedData);
+
+[Exposed=Window]
+interface BaseAudioContext : EventTarget {
+ readonly attribute AudioDestinationNode destination;
+ readonly attribute float sampleRate;
+ readonly attribute double currentTime;
+ readonly attribute AudioListener listener;
+ readonly attribute AudioContextState state;
+ [SameObject, SecureContext]
+ readonly attribute AudioWorklet audioWorklet;
+ attribute EventHandler onstatechange;
+
+ AnalyserNode createAnalyser ();
+ BiquadFilterNode createBiquadFilter ();
+ AudioBuffer createBuffer (unsigned long numberOfChannels,
+ unsigned long length,
+ float sampleRate);
+ AudioBufferSourceNode createBufferSource ();
+ ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6);
+ ChannelSplitterNode createChannelSplitter (
+ optional unsigned long numberOfOutputs = 6);
+ ConstantSourceNode createConstantSource ();
+ ConvolverNode createConvolver ();
+ DelayNode createDelay (optional double maxDelayTime = 1.0);
+ DynamicsCompressorNode createDynamicsCompressor ();
+ GainNode createGain ();
+ IIRFilterNode createIIRFilter (sequence<double> feedforward,
+ sequence<double> feedback);
+ OscillatorNode createOscillator ();
+ PannerNode createPanner ();
+ PeriodicWave createPeriodicWave (sequence<float> real,
+ sequence<float> imag,
+ optional PeriodicWaveConstraints constraints = {});
+ ScriptProcessorNode createScriptProcessor(
+ optional unsigned long bufferSize = 0,
+ optional unsigned long numberOfInputChannels = 2,
+ optional unsigned long numberOfOutputChannels = 2);
+ StereoPannerNode createStereoPanner ();
+ WaveShaperNode createWaveShaper ();
+
+ Promise<AudioBuffer> decodeAudioData (
+ ArrayBuffer audioData,
+ optional DecodeSuccessCallback? successCallback,
+ optional DecodeErrorCallback? errorCallback);
+};
+
+enum AudioContextLatencyCategory {
+ "balanced",
+ "interactive",
+ "playback"
+};
+
+enum AudioSinkType {
+ "none"
+};
+
+[Exposed=Window]
+interface AudioContext : BaseAudioContext {
+ constructor (optional AudioContextOptions contextOptions = {});
+ readonly attribute double baseLatency;
+ readonly attribute double outputLatency;
+ [SecureContext] readonly attribute (DOMString or AudioSinkInfo) sinkId;
+ [SecureContext] readonly attribute AudioRenderCapacity renderCapacity;
+ attribute EventHandler onsinkchange;
+ AudioTimestamp getOutputTimestamp ();
+ Promise<undefined> resume ();
+ Promise<undefined> suspend ();
+ Promise<undefined> close ();
+ [SecureContext] Promise<undefined> setSinkId ((DOMString or AudioSinkOptions) sinkId);
+ MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement mediaElement);
+ MediaStreamAudioSourceNode createMediaStreamSource (MediaStream mediaStream);
+ MediaStreamTrackAudioSourceNode createMediaStreamTrackSource (
+ MediaStreamTrack mediaStreamTrack);
+ MediaStreamAudioDestinationNode createMediaStreamDestination ();
+};
+
+dictionary AudioContextOptions {
+ (AudioContextLatencyCategory or double) latencyHint = "interactive";
+ float sampleRate;
+ (DOMString or AudioSinkOptions) sinkId;
+};
+
+dictionary AudioSinkOptions {
+ required AudioSinkType type;
+};
+
+[Exposed=Window]
+interface AudioSinkInfo {
+ readonly attribute AudioSinkType type;
+};
+
+dictionary AudioTimestamp {
+ double contextTime;
+ DOMHighResTimeStamp performanceTime;
+};
+
+[Exposed=Window]
+interface AudioRenderCapacity : EventTarget {
+ undefined start(optional AudioRenderCapacityOptions options = {});
+ undefined stop();
+ attribute EventHandler onupdate;
+};
+
+dictionary AudioRenderCapacityOptions {
+ double updateInterval = 1;
+};
+
+[Exposed=Window]
+interface AudioRenderCapacityEvent : Event {
+ constructor (DOMString type, optional AudioRenderCapacityEventInit eventInitDict = {});
+ readonly attribute double timestamp;
+ readonly attribute double averageLoad;
+ readonly attribute double peakLoad;
+ readonly attribute double underrunRatio;
+};
+
+dictionary AudioRenderCapacityEventInit : EventInit {
+ double timestamp = 0;
+ double averageLoad = 0;
+ double peakLoad = 0;
+ double underrunRatio = 0;
+};
+
+[Exposed=Window]
+interface OfflineAudioContext : BaseAudioContext {
+ constructor(OfflineAudioContextOptions contextOptions);
+ constructor(unsigned long numberOfChannels, unsigned long length, float sampleRate);
+ Promise<AudioBuffer> startRendering();
+ Promise<undefined> resume();
+ Promise<undefined> suspend(double suspendTime);
+ readonly attribute unsigned long length;
+ attribute EventHandler oncomplete;
+};
+
+dictionary OfflineAudioContextOptions {
+ unsigned long numberOfChannels = 1;
+ required unsigned long length;
+ required float sampleRate;
+};
+
+[Exposed=Window]
+interface OfflineAudioCompletionEvent : Event {
+ constructor (DOMString type, OfflineAudioCompletionEventInit eventInitDict);
+ readonly attribute AudioBuffer renderedBuffer;
+};
+
+dictionary OfflineAudioCompletionEventInit : EventInit {
+ required AudioBuffer renderedBuffer;
+};
+
+[Exposed=Window]
+interface AudioBuffer {
+ constructor (AudioBufferOptions options);
+ readonly attribute float sampleRate;
+ readonly attribute unsigned long length;
+ readonly attribute double duration;
+ readonly attribute unsigned long numberOfChannels;
+ Float32Array getChannelData (unsigned long channel);
+ undefined copyFromChannel (Float32Array destination,
+ unsigned long channelNumber,
+ optional unsigned long bufferOffset = 0);
+ undefined copyToChannel (Float32Array source,
+ unsigned long channelNumber,
+ optional unsigned long bufferOffset = 0);
+};
+
+dictionary AudioBufferOptions {
+ unsigned long numberOfChannels = 1;
+ required unsigned long length;
+ required float sampleRate;
+};
+
+[Exposed=Window]
+interface AudioNode : EventTarget {
+ AudioNode connect (AudioNode destinationNode,
+ optional unsigned long output = 0,
+ optional unsigned long input = 0);
+ undefined connect (AudioParam destinationParam, optional unsigned long output = 0);
+ undefined disconnect ();
+ undefined disconnect (unsigned long output);
+ undefined disconnect (AudioNode destinationNode);
+ undefined disconnect (AudioNode destinationNode, unsigned long output);
+ undefined disconnect (AudioNode destinationNode,
+ unsigned long output,
+ unsigned long input);
+ undefined disconnect (AudioParam destinationParam);
+ undefined disconnect (AudioParam destinationParam, unsigned long output);
+ readonly attribute BaseAudioContext context;
+ readonly attribute unsigned long numberOfInputs;
+ readonly attribute unsigned long numberOfOutputs;
+ attribute unsigned long channelCount;
+ attribute ChannelCountMode channelCountMode;
+ attribute ChannelInterpretation channelInterpretation;
+};
+
+enum ChannelCountMode {
+ "max",
+ "clamped-max",
+ "explicit"
+};
+
+enum ChannelInterpretation {
+ "speakers",
+ "discrete"
+};
+
+dictionary AudioNodeOptions {
+ unsigned long channelCount;
+ ChannelCountMode channelCountMode;
+ ChannelInterpretation channelInterpretation;
+};
+
+enum AutomationRate {
+ "a-rate",
+ "k-rate"
+};
+
+[Exposed=Window]
+interface AudioParam {
+ attribute float value;
+ attribute AutomationRate automationRate;
+ readonly attribute float defaultValue;
+ readonly attribute float minValue;
+ readonly attribute float maxValue;
+ AudioParam setValueAtTime (float value, double startTime);
+ AudioParam linearRampToValueAtTime (float value, double endTime);
+ AudioParam exponentialRampToValueAtTime (float value, double endTime);
+ AudioParam setTargetAtTime (float target, double startTime, float timeConstant);
+ AudioParam setValueCurveAtTime (sequence<float> values,
+ double startTime,
+ double duration);
+ AudioParam cancelScheduledValues (double cancelTime);
+ AudioParam cancelAndHoldAtTime (double cancelTime);
+};
+
+[Exposed=Window]
+interface AudioScheduledSourceNode : AudioNode {
+ attribute EventHandler onended;
+ undefined start(optional double when = 0);
+ undefined stop(optional double when = 0);
+};
+
+[Exposed=Window]
+interface AnalyserNode : AudioNode {
+ constructor (BaseAudioContext context, optional AnalyserOptions options = {});
+ undefined getFloatFrequencyData (Float32Array array);
+ undefined getByteFrequencyData (Uint8Array array);
+ undefined getFloatTimeDomainData (Float32Array array);
+ undefined getByteTimeDomainData (Uint8Array array);
+ attribute unsigned long fftSize;
+ readonly attribute unsigned long frequencyBinCount;
+ attribute double minDecibels;
+ attribute double maxDecibels;
+ attribute double smoothingTimeConstant;
+};
+
+dictionary AnalyserOptions : AudioNodeOptions {
+ unsigned long fftSize = 2048;
+ double maxDecibels = -30;
+ double minDecibels = -100;
+ double smoothingTimeConstant = 0.8;
+};
+
+[Exposed=Window]
+interface AudioBufferSourceNode : AudioScheduledSourceNode {
+ constructor (BaseAudioContext context,
+ optional AudioBufferSourceOptions options = {});
+ attribute AudioBuffer? buffer;
+ readonly attribute AudioParam playbackRate;
+ readonly attribute AudioParam detune;
+ attribute boolean loop;
+ attribute double loopStart;
+ attribute double loopEnd;
+ undefined start (optional double when = 0,
+ optional double offset,
+ optional double duration);
+};
+
+dictionary AudioBufferSourceOptions {
+ AudioBuffer? buffer;
+ float detune = 0;
+ boolean loop = false;
+ double loopEnd = 0;
+ double loopStart = 0;
+ float playbackRate = 1;
+};
+
+[Exposed=Window]
+interface AudioDestinationNode : AudioNode {
+ readonly attribute unsigned long maxChannelCount;
+};
+
+[Exposed=Window]
+interface AudioListener {
+ readonly attribute AudioParam positionX;
+ readonly attribute AudioParam positionY;
+ readonly attribute AudioParam positionZ;
+ readonly attribute AudioParam forwardX;
+ readonly attribute AudioParam forwardY;
+ readonly attribute AudioParam forwardZ;
+ readonly attribute AudioParam upX;
+ readonly attribute AudioParam upY;
+ readonly attribute AudioParam upZ;
+ undefined setPosition (float x, float y, float z);
+ undefined setOrientation (float x, float y, float z, float xUp, float yUp, float zUp);
+};
+
+[Exposed=Window]
+interface AudioProcessingEvent : Event {
+ constructor (DOMString type, AudioProcessingEventInit eventInitDict);
+ readonly attribute double playbackTime;
+ readonly attribute AudioBuffer inputBuffer;
+ readonly attribute AudioBuffer outputBuffer;
+};
+
+dictionary AudioProcessingEventInit : EventInit {
+ required double playbackTime;
+ required AudioBuffer inputBuffer;
+ required AudioBuffer outputBuffer;
+};
+
+enum BiquadFilterType {
+ "lowpass",
+ "highpass",
+ "bandpass",
+ "lowshelf",
+ "highshelf",
+ "peaking",
+ "notch",
+ "allpass"
+};
+
+[Exposed=Window]
+interface BiquadFilterNode : AudioNode {
+ constructor (BaseAudioContext context, optional BiquadFilterOptions options = {});
+ attribute BiquadFilterType type;
+ readonly attribute AudioParam frequency;
+ readonly attribute AudioParam detune;
+ readonly attribute AudioParam Q;
+ readonly attribute AudioParam gain;
+ undefined getFrequencyResponse (Float32Array frequencyHz,
+ Float32Array magResponse,
+ Float32Array phaseResponse);
+};
+
+dictionary BiquadFilterOptions : AudioNodeOptions {
+ BiquadFilterType type = "lowpass";
+ float Q = 1;
+ float detune = 0;
+ float frequency = 350;
+ float gain = 0;
+};
+
+[Exposed=Window]
+interface ChannelMergerNode : AudioNode {
+ constructor (BaseAudioContext context, optional ChannelMergerOptions options = {});
+};
+
+dictionary ChannelMergerOptions : AudioNodeOptions {
+ unsigned long numberOfInputs = 6;
+};
+
+[Exposed=Window]
+interface ChannelSplitterNode : AudioNode {
+ constructor (BaseAudioContext context, optional ChannelSplitterOptions options = {});
+};
+
+dictionary ChannelSplitterOptions : AudioNodeOptions {
+ unsigned long numberOfOutputs = 6;
+};
+
+[Exposed=Window]
+interface ConstantSourceNode : AudioScheduledSourceNode {
+ constructor (BaseAudioContext context, optional ConstantSourceOptions options = {});
+ readonly attribute AudioParam offset;
+};
+
+dictionary ConstantSourceOptions {
+ float offset = 1;
+};
+
+[Exposed=Window]
+interface ConvolverNode : AudioNode {
+ constructor (BaseAudioContext context, optional ConvolverOptions options = {});
+ attribute AudioBuffer? buffer;
+ attribute boolean normalize;
+};
+
+dictionary ConvolverOptions : AudioNodeOptions {
+ AudioBuffer? buffer;
+ boolean disableNormalization = false;
+};
+
+[Exposed=Window]
+interface DelayNode : AudioNode {
+ constructor (BaseAudioContext context, optional DelayOptions options = {});
+ readonly attribute AudioParam delayTime;
+};
+
+dictionary DelayOptions : AudioNodeOptions {
+ double maxDelayTime = 1;
+ double delayTime = 0;
+};
+
+[Exposed=Window]
+interface DynamicsCompressorNode : AudioNode {
+ constructor (BaseAudioContext context,
+ optional DynamicsCompressorOptions options = {});
+ readonly attribute AudioParam threshold;
+ readonly attribute AudioParam knee;
+ readonly attribute AudioParam ratio;
+ readonly attribute float reduction;
+ readonly attribute AudioParam attack;
+ readonly attribute AudioParam release;
+};
+
+dictionary DynamicsCompressorOptions : AudioNodeOptions {
+ float attack = 0.003;
+ float knee = 30;
+ float ratio = 12;
+ float release = 0.25;
+ float threshold = -24;
+};
+
+[Exposed=Window]
+interface GainNode : AudioNode {
+ constructor (BaseAudioContext context, optional GainOptions options = {});
+ readonly attribute AudioParam gain;
+};
+
+dictionary GainOptions : AudioNodeOptions {
+ float gain = 1.0;
+};
+
+[Exposed=Window]
+interface IIRFilterNode : AudioNode {
+ constructor (BaseAudioContext context, IIRFilterOptions options);
+ undefined getFrequencyResponse (Float32Array frequencyHz,
+ Float32Array magResponse,
+ Float32Array phaseResponse);
+};
+
+dictionary IIRFilterOptions : AudioNodeOptions {
+ required sequence<double> feedforward;
+ required sequence<double> feedback;
+};
+
+[Exposed=Window]
+interface MediaElementAudioSourceNode : AudioNode {
+ constructor (AudioContext context, MediaElementAudioSourceOptions options);
+ [SameObject] readonly attribute HTMLMediaElement mediaElement;
+};
+
+dictionary MediaElementAudioSourceOptions {
+ required HTMLMediaElement mediaElement;
+};
+
+[Exposed=Window]
+interface MediaStreamAudioDestinationNode : AudioNode {
+ constructor (AudioContext context, optional AudioNodeOptions options = {});
+ readonly attribute MediaStream stream;
+};
+
+[Exposed=Window]
+interface MediaStreamAudioSourceNode : AudioNode {
+ constructor (AudioContext context, MediaStreamAudioSourceOptions options);
+ [SameObject] readonly attribute MediaStream mediaStream;
+};
+
+dictionary MediaStreamAudioSourceOptions {
+ required MediaStream mediaStream;
+};
+
+[Exposed=Window]
+interface MediaStreamTrackAudioSourceNode : AudioNode {
+ constructor (AudioContext context, MediaStreamTrackAudioSourceOptions options);
+};
+
+dictionary MediaStreamTrackAudioSourceOptions {
+ required MediaStreamTrack mediaStreamTrack;
+};
+
+enum OscillatorType {
+ "sine",
+ "square",
+ "sawtooth",
+ "triangle",
+ "custom"
+};
+
+[Exposed=Window]
+interface OscillatorNode : AudioScheduledSourceNode {
+ constructor (BaseAudioContext context, optional OscillatorOptions options = {});
+ attribute OscillatorType type;
+ readonly attribute AudioParam frequency;
+ readonly attribute AudioParam detune;
+ undefined setPeriodicWave (PeriodicWave periodicWave);
+};
+
+dictionary OscillatorOptions : AudioNodeOptions {
+ OscillatorType type = "sine";
+ float frequency = 440;
+ float detune = 0;
+ PeriodicWave periodicWave;
+};
+
+enum PanningModelType {
+ "equalpower",
+ "HRTF"
+};
+
+enum DistanceModelType {
+ "linear",
+ "inverse",
+ "exponential"
+};
+
+[Exposed=Window]
+interface PannerNode : AudioNode {
+ constructor (BaseAudioContext context, optional PannerOptions options = {});
+ attribute PanningModelType panningModel;
+ readonly attribute AudioParam positionX;
+ readonly attribute AudioParam positionY;
+ readonly attribute AudioParam positionZ;
+ readonly attribute AudioParam orientationX;
+ readonly attribute AudioParam orientationY;
+ readonly attribute AudioParam orientationZ;
+ attribute DistanceModelType distanceModel;
+ attribute double refDistance;
+ attribute double maxDistance;
+ attribute double rolloffFactor;
+ attribute double coneInnerAngle;
+ attribute double coneOuterAngle;
+ attribute double coneOuterGain;
+ undefined setPosition (float x, float y, float z);
+ undefined setOrientation (float x, float y, float z);
+};
+
+dictionary PannerOptions : AudioNodeOptions {
+ PanningModelType panningModel = "equalpower";
+ DistanceModelType distanceModel = "inverse";
+ float positionX = 0;
+ float positionY = 0;
+ float positionZ = 0;
+ float orientationX = 1;
+ float orientationY = 0;
+ float orientationZ = 0;
+ double refDistance = 1;
+ double maxDistance = 10000;
+ double rolloffFactor = 1;
+ double coneInnerAngle = 360;
+ double coneOuterAngle = 360;
+ double coneOuterGain = 0;
+};
+
+[Exposed=Window]
+interface PeriodicWave {
+ constructor (BaseAudioContext context, optional PeriodicWaveOptions options = {});
+};
+
+dictionary PeriodicWaveConstraints {
+ boolean disableNormalization = false;
+};
+
+dictionary PeriodicWaveOptions : PeriodicWaveConstraints {
+ sequence<float> real;
+ sequence<float> imag;
+};
+
+[Exposed=Window]
+interface ScriptProcessorNode : AudioNode {
+ attribute EventHandler onaudioprocess;
+ readonly attribute long bufferSize;
+};
+
+[Exposed=Window]
+interface StereoPannerNode : AudioNode {
+ constructor (BaseAudioContext context, optional StereoPannerOptions options = {});
+ readonly attribute AudioParam pan;
+};
+
+dictionary StereoPannerOptions : AudioNodeOptions {
+ float pan = 0;
+};
+
+enum OverSampleType {
+ "none",
+ "2x",
+ "4x"
+};
+
+[Exposed=Window]
+interface WaveShaperNode : AudioNode {
+ constructor (BaseAudioContext context, optional WaveShaperOptions options = {});
+ attribute Float32Array? curve;
+ attribute OverSampleType oversample;
+};
+
+dictionary WaveShaperOptions : AudioNodeOptions {
+ sequence<float> curve;
+ OverSampleType oversample = "none";
+};
+
+[Exposed=Window, SecureContext]
+interface AudioWorklet : Worklet {
+ readonly attribute MessagePort port;
+};
+
+callback AudioWorkletProcessorConstructor = AudioWorkletProcessor (object options);
+
+[Global=(Worklet, AudioWorklet), Exposed=AudioWorklet]
+interface AudioWorkletGlobalScope : WorkletGlobalScope {
+ undefined registerProcessor (DOMString name,
+ AudioWorkletProcessorConstructor processorCtor);
+ readonly attribute unsigned long long currentFrame;
+ readonly attribute double currentTime;
+ readonly attribute float sampleRate;
+ readonly attribute MessagePort port;
+};
+
+[Exposed=Window]
+interface AudioParamMap {
+ readonly maplike<DOMString, AudioParam>;
+};
+
+[Exposed=Window, SecureContext]
+interface AudioWorkletNode : AudioNode {
+ constructor (BaseAudioContext context, DOMString name,
+ optional AudioWorkletNodeOptions options = {});
+ readonly attribute AudioParamMap parameters;
+ readonly attribute MessagePort port;
+ attribute EventHandler onprocessorerror;
+};
+
+dictionary AudioWorkletNodeOptions : AudioNodeOptions {
+ unsigned long numberOfInputs = 1;
+ unsigned long numberOfOutputs = 1;
+ sequence<unsigned long> outputChannelCount;
+ record<DOMString, double> parameterData;
+ object processorOptions;
+};
+
+[Exposed=AudioWorklet]
+interface AudioWorkletProcessor {
+ constructor ();
+ readonly attribute MessagePort port;
+};
+
+callback AudioWorkletProcessCallback =
+ boolean (FrozenArray<FrozenArray<Float32Array>> inputs,
+ FrozenArray<FrozenArray<Float32Array>> outputs,
+ object parameters);
+
+dictionary AudioParamDescriptor {
+ required DOMString name;
+ float defaultValue = 0;
+ float minValue = -3.4028235e38;
+ float maxValue = 3.4028235e38;
+ AutomationRate automationRate = "a-rate";
+};