This repository has been archived on 2023-06-18. You can view files and clone it, but cannot push or open issues or pull requests.
ima02/resources/defects4j-checkout-closure-1f/contrib/externs/w3c_audio.js

701 lines
13 KiB
JavaScript

/*
* Copyright 2012 The Closure Compiler Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview Definitions for the API related to audio.
* Definitions for the Web Audio API.
* This file is based on the W3C Working Draft 15 March 2012.
* @see http://www.w3.org/TR/webaudio/
*
* @externs
*/
/**
* @constructor
*/
var AudioContext = function() {};
/** @type {AudioDestinationNode} */
AudioContext.prototype.destination;
/** @type {number} */
AudioContext.prototype.sampleRate;
/** @type {number} */
AudioContext.prototype.currentTime;
/** @type {AudioListener} */
AudioContext.prototype.listener;
/**
* AudioContext.prototype.createBuffer() has 2 syntax:
* * Regular method:
* createBuffer = function(numberOfChannels, length, sampleRate) {};
*
* * ArrayBuffer method:
* createBuffer = function(buffer, mixToMono) {};
*
* @param {number|ArrayBuffer} a
* @param {number|boolean} b
* @param {number=} sampleRate
*/
AudioContext.prototype.createBuffer = function(a, b, sampleRate) {};
/**
* @param {ArrayBuffer} audioData
* @param {Function} successCallback
* @param {Function=} errorCallback
*/
AudioContext.prototype.decodeAudioData = function(audioData, successCallback,
errorCallback) {};
/**
* @return {AudioBufferSourceNode}
*/
AudioContext.prototype.createBufferSource = function() {};
/**
* @param {number} bufferSize
* @param {number} numberOfInputs
* @param {number} numberOfOuputs
* @return {JavaScriptAudioNode}
*/
AudioContext.prototype.createJavaScriptNode = function(bufferSize,
numberOfInputs, numberOfOuputs) {};
/**
* @return {RealtimeAnalyserNode}
*/
AudioContext.prototype.createAnalyser = function() {};
/**
* @return {AudioGainNode}
*/
AudioContext.prototype.createGainNode = function() {};
/**
* @param {number=} maxDelayTime
* @return {DelayNode}
*/
AudioContext.prototype.createDelayNode = function(maxDelayTime) {};
/**
* @return {BiquadFilterNode}
*/
AudioContext.prototype.createBiquadFilter = function() {};
/**
* @return {AudioPannerNode}
*/
AudioContext.prototype.createPanner = function() {};
/**
* @return {ConvolverNode}
*/
AudioContext.prototype.createConvolver = function() {};
/**
* @return {AudioChannelSplitter}
*/
AudioContext.prototype.createChannelSplitter = function() {};
/**
* @return {AudioChannelMerger}
*/
AudioContext.prototype.createChannelMerger = function() {};
/**
* @return {DynamicsCompressorNode}
*/
AudioContext.prototype.createDynamicsCompressor = function() {};
/**
* @param {HTMLMediaElement} mediaElement
* @return {MediaElementAudioSourceNode}
*/
AudioContext.prototype.createMediaElementSource = function(mediaElement) {};
/**
* @constructor
*/
var AudioNode = function() {};
/**
* @param {AudioNode} destination
* @param {number=} output
* @param {number=} input
*/
AudioNode.prototype.connect = function(destination, output, input) {};
/**
* @param {number=} output
*/
AudioNode.prototype.disconnect = function(output) {};
/** @type {AudioContext} */
AudioNode.prototype.context;
/** @type {number} */
AudioNode.prototype.numberOfInputs;
/** @type {number} */
AudioNode.prototype.numberOfOutputs;
/**
* @constructor
* @extends {AudioNode}
* @private
*/
var AudioSourceNode = function() {};
/**
* @constructor
* @extends {AudioNode}
* @private
*/
var AudioDestinationNode = function() {};
/** @type {number} */
AudioDestinationNode.prototype.numberOfChannels;
/**
* @constructor
* @private
*/
var AudioParam = function() {};
/** @type {number} */
AudioParam.prototype.value;
/** @type {number} */
AudioParam.prototype.maxValue;
/** @type {number} */
AudioParam.prototype.minValue;
/** @type {number} */
AudioParam.prototype.defaultValue;
/** @type {number} */
AudioParam.prototype.units;
/**
* @param {number} value
* @param {number} time
*/
AudioParam.prototype.setValueAtTime = function(value, time) {};
/**
* @param {number} value
* @param {number} time
*/
AudioParam.prototype.linearRampToValueAtTime = function(value, time) {};
/**
* @param {number} value
* @param {number} time
*/
AudioParam.prototype.exponentialRampToValueAtTime = function(value, time) {};
/**
* @param {number} targetValue
* @param {number} time
* @param {number} timeConstant
*/
AudioParam.prototype.setTargetValueAtTime = function(targetValue, time,
timeConstant) {};
/**
* @param {Float32Array} values
* @param {number} time
* @param {number} duration
*/
AudioParam.prototype.setValueCurveAtTime = function(values, time, duration) {};
/**
* @param {number} startTime
*/
AudioParam.prototype.cancelScheduledValues = function(startTime) {};
/**
* @constructor
* @extends {AudioParam}
*/
var AudioGain = function() {};
/**
* @constructor
* @extends {AudioNode}
*/
var AudioGainNode = function() {};
/** @type {AudioGain} */
AudioGainNode.prototype.gain;
/**
* @constructor
* @extends {AudioNode}
*/
var DelayNode = function() {};
/** @type {AudioParam} */
DelayNode.prototype.delayTime;
/**
* @constructor
*/
var AudioBuffer = function() {};
/** @type {AudioGain} */
AudioBuffer.prototype.gain;
/** @type {number} */
AudioBuffer.prototype.sampleRate;
/** @type {number} */
AudioBuffer.prototype.length;
/** @type {number} */
AudioBuffer.prototype.duration;
/** @type {number} */
AudioBuffer.prototype.numberOfChannels;
/**
* @param {number} channel
* @return {Float32Array}
*/
AudioBuffer.prototype.getChannelData = function(channel) {};
/**
* @constructor
* @extends {AudioSourceNode}
*/
var AudioBufferSourceNode = function() {};
/** @type {AudioBuffer} */
AudioBufferSourceNode.prototype.buffer;
/** @type {number} */
AudioBufferSourceNode.prototype.gain;
/** @type {AudioParam} */
AudioBufferSourceNode.prototype.playbackRate;
/** @type {boolean} */
AudioBufferSourceNode.prototype.loop;
/**
* @param {number} when
*/
AudioBufferSourceNode.prototype.noteOn = function(when) {};
/**
* @param {number} when
* @param {number} grainOffset
* @param {number} grainDuration
*/
AudioBufferSourceNode.prototype.noteGrainOn = function(when, grainOffset,
grainDuration) {};
/**
* @param {number} when
*/
AudioBufferSourceNode.prototype.noteOff = function(when) {};
/**
* @constructor
* @extends {AudioSourceNode}
*/
var MediaElementAudioSourceNode = function() {};
/**
* @constructor
* @extends {AudioNode}
*/
var JavaScriptAudioNode = function() {};
/** @type {EventListener} */
JavaScriptAudioNode.prototype.onaudioprocess;
/**
* @const
* @type {number}
*/
JavaScriptAudioNode.prototype.bufferSize;
/**
* @constructor
* @extends {Event}
* @private
*/
var AudioProcessingEvent = function() {};
/** @type {JavaScriptAudioNode} */
AudioProcessingEvent.prototype.node;
/** @type {number} */
AudioProcessingEvent.prototype.playbackTime;
/** @type {number} */
AudioProcessingEvent.prototype.inputBuffer;
/** @type {AudioBuffer} */
AudioProcessingEvent.prototype.outputBuffer;
/**
* @constructor
* @extends {AudioNode}
*/
var AudioPannerNode = function() {};
/**
* @const
* @type {number}
*/
AudioPannerNode.prototype.EQUALPOWER = 0;
/**
* @const
* @type {number}
*/
AudioPannerNode.prototype.HRTF = 1;
/**
* @const
* @type {number}
*/
AudioPannerNode.prototype.SOUNDFIELD = 2;
/**
* @const
* @type {number}
*/
AudioPannerNode.prototype.LINEAR_DISTANCE = 0;
/**
* @const
* @type {number}
*/
AudioPannerNode.prototype.INVERSE_DISTANCE = 1;
/**
* @const
* @type {number}
*/
AudioPannerNode.prototype.EXPONENTIAL_DISTANCE = 2;
/** @type {number} */
AudioPannerNode.prototype.panningModel;
/**
* @param {number} x
* @param {number} y
* @param {number} z
*/
AudioPannerNode.prototype.setPosition = function(x, y, z) {};
/**
* @param {number} x
* @param {number} y
* @param {number} z
*/
AudioPannerNode.prototype.setOrientation = function(x, y, z) {};
/**
* @param {number} x
* @param {number} y
* @param {number} z
*/
AudioPannerNode.prototype.setVelocity = function(x, y, z) {};
/** @type {number} */
AudioPannerNode.prototype.distanceModel;
/** @type {number} */
AudioPannerNode.prototype.refDistance;
/** @type {number} */
AudioPannerNode.prototype.maxDistance;
/** @type {number} */
AudioPannerNode.prototype.rolloffFactor;
/** @type {number} */
AudioPannerNode.prototype.coneInnerAngle;
/** @type {number} */
AudioPannerNode.prototype.coneOuterAngle;
/** @type {number} */
AudioPannerNode.prototype.coneOuterGain;
/** @type {AudioGain} */
AudioPannerNode.prototype.coneGain;
/** @type {AudioGain} */
AudioPannerNode.prototype.distanceGain;
/**
* @constructor
*/
var AudioListener = function() {};
/** @type {number} */
AudioListener.prototype.gain;
/** @type {number} */
AudioListener.prototype.dopplerFactor;
/** @type {number} */
AudioListener.prototype.speedOfSound;
/**
* @param {number} x
* @param {number} y
* @param {number} z
*/
AudioListener.prototype.setPosition = function(x, y, z) {};
/**
* @param {number} x
* @param {number} y
* @param {number} z
* @param {number} xUp
* @param {number} yUp
* @param {number} zUp
*/
AudioListener.prototype.setOrientation = function(x, y, z, xUp, yUp, zUp) {};
/**
* @param {number} x
* @param {number} y
* @param {number} z
*/
AudioListener.prototype.setVelocity = function(x, y, z) {};
/**
* @constructor
* @extends {AudioNode}
*/
var ConvolverNode = function() {};
/** @type {AudioBuffer} */
ConvolverNode.prototype.buffer;
/** @type {boolean} */
ConvolverNode.prototype.normalize;
/**
* @constructor
* @extends {AudioNode}
*/
var RealtimeAnalyserNode = function() {};
/**
* @param {Float32Array} array
*/
RealtimeAnalyserNode.prototype.getFloatFrequencyData = function(array) {};
/**
* @param {Uint8Array} array
*/
RealtimeAnalyserNode.prototype.getByteFrequencyData = function(array) {};
/**
* @param {Uint8Array} array
*/
RealtimeAnalyserNode.prototype.getByteTimeDomainData = function(array) {};
/** @type {number} */
RealtimeAnalyserNode.prototype.fftSize;
/** @type {number} */
RealtimeAnalyserNode.prototype.frequencyBinCount;
/** @type {number} */
RealtimeAnalyserNode.prototype.minDecibels;
/** @type {number} */
RealtimeAnalyserNode.prototype.maxDecibels;
/** @type {number} */
RealtimeAnalyserNode.prototype.smoothingTimeConstant;
/**
* @constructor
* @extends {AudioNode}
*/
var AudioChannelSplitter = function() {};
/**
* @constructor
* @extends {AudioNode}
*/
var AudioChannelMerger = function() {};
/**
* @constructor
* @extends {AudioNode}
*/
var DynamicsCompressorNode = function() {};
/** @type {AudioParam} */
DynamicsCompressorNode.prototype.threshold;
/** @type {AudioParam} */
DynamicsCompressorNode.prototype.knee;
/** @type {AudioParam} */
DynamicsCompressorNode.prototype.ratio;
/** @type {AudioParam} */
DynamicsCompressorNode.prototype.reduction;
/** @type {AudioParam} */
DynamicsCompressorNode.prototype.attack;
/** @type {AudioParam} */
DynamicsCompressorNode.prototype.release;
/**
* @constructor
* @extends {AudioNode}
*/
var BiquadFilterNode = function() {};
/**
* @const
* @type {number}
*/
BiquadFilterNode.prototype.LOWPASS = 0;
/**
* @const
* @type {number}
*/
BiquadFilterNode.prototype.HIGHPASS = 1;
/**
* @const
* @type {number}
*/
BiquadFilterNode.prototype.BANDPASS = 2;
/**
* @const
* @type {number}
*/
BiquadFilterNode.prototype.LOWSHELF = 3;
/**
* @const
* @type {number}
*/
BiquadFilterNode.prototype.HIGHSHELF = 4;
/**
* @const
* @type {number}
*/
BiquadFilterNode.prototype.PEAKING = 5;
/**
* @const
* @type {number}
*/
BiquadFilterNode.prototype.NOTCH = 6;
/**
* @const
* @type {number}
*/
BiquadFilterNode.prototype.ALLPASS = 7;
/** @type {number} */
BiquadFilterNode.prototype.type;
/** @type {AudioParam} */
BiquadFilterNode.prototype.frequency;
/** @type {AudioParam} */
BiquadFilterNode.prototype.Q;
/** @type {AudioParam} */
BiquadFilterNode.prototype.gain;
/**
* @param {Float32Array} frequencyHz
* @param {Float32Array} magResponse
* @param {Float32Array} phaseResponse
*/
BiquadFilterNode.prototype.getFrequencyResponse = function(frequencyHz,
magResponse, phaseResponse) {};
/**
* @constructor
* @extends {AudioNode}
*/
var WaveShaperNode = function() {};
/** @type {Float32Array} */
WaveShaperNode.prototype.curve;
/**
* Definitions for the Web Audio API with webkit prefix.
*/
/**
* @constructor
* @extends {AudioContext}
*/
var webkitAudioContext = function() {};
/**
* @constructor
* @extends {AudioPannerNode}
*/
var webkitAudioPannerNode = function() {};
/**
* Definitions for the Audio API as implemented in Firefox.
* Please note that this document describes a non-standard experimental API.
* This API is considered deprecated.
* @see https://developer.mozilla.org/en/DOM/HTMLAudioElement
*/
/**
* @param {string=} src
* @constructor
*/
var Audio = function(src) {};
/**
* @param {number} channels
* @param {number} rate
*/
Audio.prototype.mozSetup = function(channels, rate) {};
/**
* @param {Array|Float32Array} buffer
*/
Audio.prototype.mozWriteAudio = function(buffer) {};
/**
* @return {number}
*/
Audio.prototype.mozCurrentSampleOffset = function() {};