Bug 1265405 - Add a dictionary to specify how PeriodicWave should be normalized (or not); r?smaug
MozReview-Commit-ID: CR5kO8MXdZv
--- a/dom/media/webaudio/AudioContext.cpp
+++ b/dom/media/webaudio/AudioContext.cpp
@@ -523,16 +523,17 @@ AudioContext::CreateOscillator(ErrorResu
RefPtr<OscillatorNode> oscillatorNode =
new OscillatorNode(this);
return oscillatorNode.forget();
}
already_AddRefed<PeriodicWave>
AudioContext::CreatePeriodicWave(const Float32Array& aRealData,
const Float32Array& aImagData,
+ const PeriodicWaveConstraints& aConstraints,
ErrorResult& aRv)
{
aRealData.ComputeLengthAndData();
aImagData.ComputeLengthAndData();
if (aRealData.Length() != aImagData.Length() ||
aRealData.Length() == 0) {
aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
--- a/dom/media/webaudio/AudioContext.h
+++ b/dom/media/webaudio/AudioContext.h
@@ -63,16 +63,17 @@ class GlobalObject;
class MediaStreamAudioDestinationNode;
class MediaStreamAudioSourceNode;
class OscillatorNode;
class PannerNode;
class ScriptProcessorNode;
class StereoPannerNode;
class WaveShaperNode;
class PeriodicWave;
+class PeriodicWaveConstraints;
class Promise;
enum class OscillatorType : uint32_t;
// This is addrefed by the OscillatorNodeEngine on the main thread
// and then used from the MSG thread.
// It can be released either from the graph thread or the main thread.
class BasicWaveFormCache
{
@@ -250,16 +251,17 @@ public:
already_AddRefed<BiquadFilterNode>
CreateBiquadFilter(ErrorResult& aRv);
already_AddRefed<OscillatorNode>
CreateOscillator(ErrorResult& aRv);
already_AddRefed<PeriodicWave>
CreatePeriodicWave(const Float32Array& aRealData, const Float32Array& aImagData,
+ const PeriodicWaveConstraints& aConstraints,
ErrorResult& aRv);
already_AddRefed<Promise>
DecodeAudioData(const ArrayBuffer& aBuffer,
const Optional<OwningNonNull<DecodeSuccessCallback> >& aSuccessCallback,
const Optional<OwningNonNull<DecodeErrorCallback> >& aFailureCallback,
ErrorResult& aRv);
--- a/dom/webidl/AudioContext.webidl
+++ b/dom/webidl/AudioContext.webidl
@@ -14,16 +14,20 @@ callback DecodeSuccessCallback = void (A
callback DecodeErrorCallback = void ();
enum AudioContextState {
"suspended",
"running",
"closed"
};
+dictionary PeriodicWaveConstraints {
+ boolean disableNormalization = false;
+};
+
[Constructor,
Constructor(AudioChannel audioChannelType)]
interface AudioContext : EventTarget {
readonly attribute AudioDestinationNode destination;
readonly attribute float sampleRate;
readonly attribute double currentTime;
readonly attribute AudioListener listener;
@@ -83,17 +87,17 @@ interface AudioContext : EventTarget {
ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs = 6);
[NewObject, Throws]
DynamicsCompressorNode createDynamicsCompressor();
[NewObject, Throws]
OscillatorNode createOscillator();
[NewObject, Throws]
- PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag);
+ PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag, optional PeriodicWaveConstraints constraints);
};
// Mozilla extensions
partial interface AudioContext {
// Read AudioChannel.webidl for more information about this attribute.
[Pref="media.useAudioChannelAPI"]
readonly attribute AudioChannel mozAudioChannelType;