From 330a9459ea776e6fddb4dcd9c1a01ba676b84171 Mon Sep 17 00:00:00 2001 From: Karl Tomlinson Date: Wed, 12 Aug 2015 11:26:24 +1200 Subject: [PATCH] bug 1197043 move AudioNodeStream creation to stream class r=padenot --HG-- extra : rebase_source : 2e399f5d59b057a0cca6a423481ac86f6fa2c507 --- dom/media/MediaRecorder.cpp | 4 +-- dom/media/MediaStreamGraph.cpp | 36 ------------------- dom/media/MediaStreamGraph.h | 12 ------- dom/media/webaudio/AnalyserNode.cpp | 5 +-- dom/media/webaudio/AudioBufferSourceNode.cpp | 3 +- dom/media/webaudio/AudioDestinationNode.cpp | 3 +- .../webaudio/AudioNodeExternalInputStream.cpp | 16 ++++++++- .../webaudio/AudioNodeExternalInputStream.h | 5 ++- dom/media/webaudio/AudioNodeStream.cpp | 28 +++++++++++++-- dom/media/webaudio/AudioNodeStream.h | 22 +++++++++--- dom/media/webaudio/AudioParam.cpp | 4 +-- dom/media/webaudio/BiquadFilterNode.cpp | 3 +- dom/media/webaudio/ChannelMergerNode.cpp | 5 +-- dom/media/webaudio/ChannelSplitterNode.cpp | 5 +-- dom/media/webaudio/ConvolverNode.cpp | 3 +- dom/media/webaudio/DelayNode.cpp | 3 +- dom/media/webaudio/DynamicsCompressorNode.cpp | 3 +- dom/media/webaudio/GainNode.cpp | 3 +- .../MediaStreamAudioDestinationNode.cpp | 3 +- .../webaudio/MediaStreamAudioSourceNode.cpp | 2 +- dom/media/webaudio/OscillatorNode.cpp | 3 +- dom/media/webaudio/PannerNode.cpp | 5 +-- dom/media/webaudio/ScriptProcessorNode.cpp | 3 +- dom/media/webaudio/StereoPannerNode.cpp | 4 +-- dom/media/webaudio/WaveShaperNode.cpp | 3 +- 25 files changed, 103 insertions(+), 83 deletions(-) diff --git a/dom/media/MediaRecorder.cpp b/dom/media/MediaRecorder.cpp index 9db1c1760932..bf6919bf6602 100644 --- a/dom/media/MediaRecorder.cpp +++ b/dom/media/MediaRecorder.cpp @@ -776,8 +776,8 @@ MediaRecorder::MediaRecorder(AudioNode& aSrcAudioNode, if (aSrcAudioNode.NumberOfOutputs() > 0) { AudioContext* ctx = aSrcAudioNode.Context(); AudioNodeEngine* engine = new AudioNodeEngine(nullptr); - mPipeStream = ctx->Graph()->CreateAudioNodeStream(engine, - MediaStreamGraph::EXTERNAL_STREAM); + mPipeStream = AudioNodeStream::Create(ctx->Graph(), engine, + AudioNodeStream::EXTERNAL_STREAM); AudioNodeStream* ns = aSrcAudioNode.GetStream(); if (ns) { mInputPort = mPipeStream->AllocateInputPort(aSrcAudioNode.GetStream(), diff --git a/dom/media/MediaStreamGraph.cpp b/dom/media/MediaStreamGraph.cpp index 39480ff42a56..6ade109fafc2 100644 --- a/dom/media/MediaStreamGraph.cpp +++ b/dom/media/MediaStreamGraph.cpp @@ -20,7 +20,6 @@ #include "ImageContainer.h" #include "AudioCaptureStream.h" #include "AudioChannelService.h" -#include "AudioNodeEngine.h" #include "AudioNodeStream.h" #include "AudioNodeExternalInputStream.h" #include "mozilla/dom/AudioContextBinding.h" @@ -3120,41 +3119,6 @@ MediaStreamGraph::CreateAudioCaptureStream(DOMMediaStream* aWrapper) return stream; } -AudioNodeExternalInputStream* -MediaStreamGraph::CreateAudioNodeExternalInputStream(AudioNodeEngine* aEngine) -{ - MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(GraphRate() == aEngine->NodeMainThread()->Context()->SampleRate()); - - AudioNodeExternalInputStream* stream = new AudioNodeExternalInputStream( - aEngine, GraphRate(), aEngine->NodeMainThread()->Context()->Id()); - AddStream(stream); - return stream; -} - -AudioNodeStream* -MediaStreamGraph::CreateAudioNodeStream(AudioNodeEngine* aEngine, - AudioNodeStreamKind aKind) -{ - MOZ_ASSERT(NS_IsMainThread()); - - // MediaRecorders use an AudioNodeStream, but no AudioNode - AudioNode* node = aEngine->NodeMainThread(); - MOZ_ASSERT(!node || GraphRate() == node->Context()->SampleRate()); - - dom::AudioContext::AudioContextId contextIdForStream = node ? node->Context()->Id() : - NO_AUDIO_CONTEXT; - AudioNodeStream* stream = new AudioNodeStream(aEngine, aKind, GraphRate(), - contextIdForStream); - if (aEngine->HasNode()) { - stream->SetChannelMixingParametersImpl(aEngine->NodeMainThread()->ChannelCount(), - aEngine->NodeMainThread()->ChannelCountModeValue(), - aEngine->NodeMainThread()->ChannelInterpretationValue()); - } - AddStream(stream); - return stream; -} - void MediaStreamGraph::AddStream(MediaStream* aStream) { diff --git a/dom/media/MediaStreamGraph.h b/dom/media/MediaStreamGraph.h index 30c99ebef8f2..b81e7a21e4db 100644 --- a/dom/media/MediaStreamGraph.h +++ b/dom/media/MediaStreamGraph.h @@ -1240,19 +1240,7 @@ public: * Create a stream that will mix all its audio input. */ ProcessedMediaStream* CreateAudioCaptureStream(DOMMediaStream* aWrapper); - // Internal AudioNodeStreams can only pass their output to another - // AudioNode, whereas external AudioNodeStreams can pass their output - // to an nsAudioStream for playback. - enum AudioNodeStreamKind { SOURCE_STREAM, INTERNAL_STREAM, EXTERNAL_STREAM }; - /** - * Create a stream that will process audio for an AudioNode. - * Takes ownership of aEngine. - */ - AudioNodeStream* CreateAudioNodeStream(AudioNodeEngine* aEngine, - AudioNodeStreamKind aKind); - AudioNodeExternalInputStream* - CreateAudioNodeExternalInputStream(AudioNodeEngine* aEngine); /** * Add a new stream to the graph. Main thread. */ diff --git a/dom/media/webaudio/AnalyserNode.cpp b/dom/media/webaudio/AnalyserNode.cpp index 373d605792f6..b277ea310570 100644 --- a/dom/media/webaudio/AnalyserNode.cpp +++ b/dom/media/webaudio/AnalyserNode.cpp @@ -85,8 +85,9 @@ AnalyserNode::AnalyserNode(AudioContext* aContext) , mMaxDecibels(-30.) , mSmoothingTimeConstant(.8) { - mStream = aContext->Graph()->CreateAudioNodeStream(new AnalyserNodeEngine(this), - MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), + new AnalyserNodeEngine(this), + AudioNodeStream::INTERNAL_STREAM); // Enough chunks must be recorded to handle the case of fftSize being // increased to maximum immediately before getFloatTimeDomainData() is diff --git a/dom/media/webaudio/AudioBufferSourceNode.cpp b/dom/media/webaudio/AudioBufferSourceNode.cpp index b3346542c1c0..f3b64a9dacab 100644 --- a/dom/media/webaudio/AudioBufferSourceNode.cpp +++ b/dom/media/webaudio/AudioBufferSourceNode.cpp @@ -542,7 +542,8 @@ AudioBufferSourceNode::AudioBufferSourceNode(AudioContext* aContext) , mStartCalled(false) { AudioBufferSourceNodeEngine* engine = new AudioBufferSourceNodeEngine(this, aContext->Destination()); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::SOURCE_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::SOURCE_STREAM); engine->SetSourceStream(mStream); mStream->AddMainThreadListener(this); } diff --git a/dom/media/webaudio/AudioDestinationNode.cpp b/dom/media/webaudio/AudioDestinationNode.cpp index 4a01e6443315..f647fd82408c 100644 --- a/dom/media/webaudio/AudioDestinationNode.cpp +++ b/dom/media/webaudio/AudioDestinationNode.cpp @@ -346,7 +346,8 @@ AudioDestinationNode::AudioDestinationNode(AudioContext* aContext, aLength, aSampleRate) : static_cast(new DestinationNodeEngine(this)); - mStream = graph->CreateAudioNodeStream(engine, MediaStreamGraph::EXTERNAL_STREAM); + mStream = AudioNodeStream::Create(graph, engine, + AudioNodeStream::EXTERNAL_STREAM); mStream->AddMainThreadListener(this); mStream->AddAudioOutput(&gWebAudioOutputKey); diff --git a/dom/media/webaudio/AudioNodeExternalInputStream.cpp b/dom/media/webaudio/AudioNodeExternalInputStream.cpp index 9ba790487685..7f6019d87ecc 100644 --- a/dom/media/webaudio/AudioNodeExternalInputStream.cpp +++ b/dom/media/webaudio/AudioNodeExternalInputStream.cpp @@ -13,7 +13,7 @@ using namespace mozilla::dom; namespace mozilla { AudioNodeExternalInputStream::AudioNodeExternalInputStream(AudioNodeEngine* aEngine, TrackRate aSampleRate, uint32_t aContextId) - : AudioNodeStream(aEngine, MediaStreamGraph::INTERNAL_STREAM, aSampleRate, aContextId) + : AudioNodeStream(aEngine, INTERNAL_STREAM, aSampleRate, aContextId) { MOZ_COUNT_CTOR(AudioNodeExternalInputStream); } @@ -23,6 +23,20 @@ AudioNodeExternalInputStream::~AudioNodeExternalInputStream() MOZ_COUNT_DTOR(AudioNodeExternalInputStream); } +/* static */ already_AddRefed +AudioNodeExternalInputStream::Create(MediaStreamGraph* aGraph, + AudioNodeEngine* aEngine) +{ + MOZ_ASSERT(NS_IsMainThread()); + MOZ_ASSERT(aGraph->GraphRate() == aEngine->NodeMainThread()->Context()->SampleRate()); + + nsRefPtr stream = + new AudioNodeExternalInputStream(aEngine, aGraph->GraphRate(), + aEngine->NodeMainThread()->Context()->Id()); + aGraph->AddStream(stream); + return stream.forget(); +} + /** * Copies the data in aInput to aOffsetInBlock within aBlock. * aBlock must have been allocated with AllocateInputBlock and have a channel diff --git a/dom/media/webaudio/AudioNodeExternalInputStream.h b/dom/media/webaudio/AudioNodeExternalInputStream.h index 84b81320b3ce..4de2664574ce 100644 --- a/dom/media/webaudio/AudioNodeExternalInputStream.h +++ b/dom/media/webaudio/AudioNodeExternalInputStream.h @@ -21,9 +21,12 @@ namespace mozilla { class AudioNodeExternalInputStream final : public AudioNodeStream { public: + static already_AddRefed + Create(MediaStreamGraph* aGraph, AudioNodeEngine* aEngine); + +protected: AudioNodeExternalInputStream(AudioNodeEngine* aEngine, TrackRate aSampleRate, uint32_t aContextId); -protected: ~AudioNodeExternalInputStream(); public: diff --git a/dom/media/webaudio/AudioNodeStream.cpp b/dom/media/webaudio/AudioNodeStream.cpp index 3e9ccc89f59f..b91afd370107 100644 --- a/dom/media/webaudio/AudioNodeStream.cpp +++ b/dom/media/webaudio/AudioNodeStream.cpp @@ -26,7 +26,7 @@ namespace mozilla { */ AudioNodeStream::AudioNodeStream(AudioNodeEngine* aEngine, - MediaStreamGraph::AudioNodeStreamKind aKind, + AudioNodeStreamKind aKind, TrackRate aSampleRate, AudioContext::AudioContextId aContextId) : ProcessedMediaStream(nullptr), @@ -53,6 +53,30 @@ AudioNodeStream::~AudioNodeStream() MOZ_COUNT_DTOR(AudioNodeStream); } +/* static */ already_AddRefed +AudioNodeStream::Create(MediaStreamGraph* aGraph, AudioNodeEngine* aEngine, + AudioNodeStreamKind aKind) +{ + MOZ_ASSERT(NS_IsMainThread()); + + // MediaRecorders use an AudioNodeStream, but no AudioNode + AudioNode* node = aEngine->NodeMainThread(); + MOZ_ASSERT(!node || aGraph->GraphRate() == node->Context()->SampleRate()); + + dom::AudioContext::AudioContextId contextIdForStream = node ? node->Context()->Id() : + NO_AUDIO_CONTEXT; + nsRefPtr stream = + new AudioNodeStream(aEngine, aKind, aGraph->GraphRate(), + contextIdForStream); + if (aEngine->HasNode()) { + stream->SetChannelMixingParametersImpl(aEngine->NodeMainThread()->ChannelCount(), + aEngine->NodeMainThread()->ChannelCountModeValue(), + aEngine->NodeMainThread()->ChannelInterpretationValue()); + } + aGraph->AddStream(stream); + return stream.forget(); +} + size_t AudioNodeStream::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const { @@ -571,7 +595,7 @@ AudioNodeStream::AdvanceOutputSegment() StreamBuffer::Track* track = EnsureTrack(AUDIO_TRACK); AudioSegment* segment = track->Get(); - if (mKind == MediaStreamGraph::EXTERNAL_STREAM) { + if (mKind == EXTERNAL_STREAM) { segment->AppendAndConsumeChunk(&mLastChunks[0]); } else { segment->AppendNullData(mLastChunks[0].GetDuration()); diff --git a/dom/media/webaudio/AudioNodeStream.h b/dom/media/webaudio/AudioNodeStream.h index 0b8b1cfa91b4..80829553e4d3 100644 --- a/dom/media/webaudio/AudioNodeStream.h +++ b/dom/media/webaudio/AudioNodeStream.h @@ -43,15 +43,27 @@ public: typedef nsAutoTArray OutputChunks; + // Internal AudioNodeStreams can only pass their output to another + // AudioNode, whereas external AudioNodeStreams can pass their output + // to an nsAudioStream for playback. + enum AudioNodeStreamKind { SOURCE_STREAM, INTERNAL_STREAM, EXTERNAL_STREAM }; + /** + * Create a stream that will process audio for an AudioNode. + * Takes ownership of aEngine. + */ + static already_AddRefed + Create(MediaStreamGraph* aGraph, AudioNodeEngine* aEngine, + AudioNodeStreamKind aKind); + +protected: /** * Transfers ownership of aEngine to the new AudioNodeStream. */ AudioNodeStream(AudioNodeEngine* aEngine, - MediaStreamGraph::AudioNodeStreamKind aKind, + AudioNodeStreamKind aKind, TrackRate aSampleRate, AudioContext::AudioContextId aContextId); -protected: ~AudioNodeStream(); public: @@ -112,8 +124,8 @@ public: virtual bool MainThreadNeedsUpdates() const override { // Only source and external streams need updates on the main thread. - return (mKind == MediaStreamGraph::SOURCE_STREAM && mFinished) || - mKind == MediaStreamGraph::EXTERNAL_STREAM; + return (mKind == SOURCE_STREAM && mFinished) || + mKind == EXTERNAL_STREAM; } virtual bool IsIntrinsicallyConsumed() const override { @@ -174,7 +186,7 @@ protected: // AudioContext. It is set on the main thread, in the constructor. const AudioContext::AudioContextId mAudioContextId; // Whether this is an internal or external stream - const MediaStreamGraph::AudioNodeStreamKind mKind; + const AudioNodeStreamKind mKind; // The number of input channels that this stream requires. 0 means don't care. uint32_t mNumberOfInputChannels; // The mixing modes diff --git a/dom/media/webaudio/AudioParam.cpp b/dom/media/webaudio/AudioParam.cpp index a94036f4901a..e35aa95f3c81 100644 --- a/dom/media/webaudio/AudioParam.cpp +++ b/dom/media/webaudio/AudioParam.cpp @@ -100,8 +100,8 @@ AudioParam::Stream() AudioNodeEngine* engine = new AudioNodeEngine(nullptr); nsRefPtr stream = - mNode->Context()->Graph()->CreateAudioNodeStream(engine, - MediaStreamGraph::INTERNAL_STREAM); + AudioNodeStream::Create(mNode->Context()->Graph(), engine, + AudioNodeStream::INTERNAL_STREAM); // Force the input to have only one channel, and make it down-mix using // the speaker rules if needed. diff --git a/dom/media/webaudio/BiquadFilterNode.cpp b/dom/media/webaudio/BiquadFilterNode.cpp index 42bb08831747..0fcb17690d65 100644 --- a/dom/media/webaudio/BiquadFilterNode.cpp +++ b/dom/media/webaudio/BiquadFilterNode.cpp @@ -250,7 +250,8 @@ BiquadFilterNode::BiquadFilterNode(AudioContext* aContext) , mGain(new AudioParam(this, SendGainToStream, 0.f, "gain")) { BiquadFilterNodeEngine* engine = new BiquadFilterNodeEngine(this, aContext->Destination()); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::INTERNAL_STREAM); engine->SetSourceStream(mStream); } diff --git a/dom/media/webaudio/ChannelMergerNode.cpp b/dom/media/webaudio/ChannelMergerNode.cpp index 64defdb36c21..f9762da93683 100644 --- a/dom/media/webaudio/ChannelMergerNode.cpp +++ b/dom/media/webaudio/ChannelMergerNode.cpp @@ -73,8 +73,9 @@ ChannelMergerNode::ChannelMergerNode(AudioContext* aContext, ChannelInterpretation::Speakers) , mInputCount(aInputCount) { - mStream = aContext->Graph()->CreateAudioNodeStream(new ChannelMergerNodeEngine(this), - MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), + new ChannelMergerNodeEngine(this), + AudioNodeStream::INTERNAL_STREAM); } ChannelMergerNode::~ChannelMergerNode() diff --git a/dom/media/webaudio/ChannelSplitterNode.cpp b/dom/media/webaudio/ChannelSplitterNode.cpp index 2a9b2cff3c3d..c1f0e61b52c5 100644 --- a/dom/media/webaudio/ChannelSplitterNode.cpp +++ b/dom/media/webaudio/ChannelSplitterNode.cpp @@ -60,8 +60,9 @@ ChannelSplitterNode::ChannelSplitterNode(AudioContext* aContext, ChannelInterpretation::Speakers) , mOutputCount(aOutputCount) { - mStream = aContext->Graph()->CreateAudioNodeStream(new ChannelSplitterNodeEngine(this), - MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), + new ChannelSplitterNodeEngine(this), + AudioNodeStream::INTERNAL_STREAM); } ChannelSplitterNode::~ChannelSplitterNode() diff --git a/dom/media/webaudio/ConvolverNode.cpp b/dom/media/webaudio/ConvolverNode.cpp index 67e2cc22f45f..0d6749f5e506 100644 --- a/dom/media/webaudio/ConvolverNode.cpp +++ b/dom/media/webaudio/ConvolverNode.cpp @@ -191,7 +191,8 @@ ConvolverNode::ConvolverNode(AudioContext* aContext) , mNormalize(true) { ConvolverNodeEngine* engine = new ConvolverNodeEngine(this, mNormalize); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::INTERNAL_STREAM); } ConvolverNode::~ConvolverNode() diff --git a/dom/media/webaudio/DelayNode.cpp b/dom/media/webaudio/DelayNode.cpp index 2a4d8c1cf5a2..aa56285eae66 100644 --- a/dom/media/webaudio/DelayNode.cpp +++ b/dom/media/webaudio/DelayNode.cpp @@ -198,7 +198,8 @@ DelayNode::DelayNode(AudioContext* aContext, double aMaxDelay) DelayNodeEngine* engine = new DelayNodeEngine(this, aContext->Destination(), aContext->SampleRate() * aMaxDelay); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::INTERNAL_STREAM); engine->SetSourceStream(mStream); } diff --git a/dom/media/webaudio/DynamicsCompressorNode.cpp b/dom/media/webaudio/DynamicsCompressorNode.cpp index 378a18cd85ad..093df93dc71d 100644 --- a/dom/media/webaudio/DynamicsCompressorNode.cpp +++ b/dom/media/webaudio/DynamicsCompressorNode.cpp @@ -203,7 +203,8 @@ DynamicsCompressorNode::DynamicsCompressorNode(AudioContext* aContext) , mRelease(new AudioParam(this, SendReleaseToStream, 0.25f, "release")) { DynamicsCompressorNodeEngine* engine = new DynamicsCompressorNodeEngine(this, aContext->Destination()); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::INTERNAL_STREAM); engine->SetSourceStream(mStream); } diff --git a/dom/media/webaudio/GainNode.cpp b/dom/media/webaudio/GainNode.cpp index f42636a8618d..0e9ec74aab58 100644 --- a/dom/media/webaudio/GainNode.cpp +++ b/dom/media/webaudio/GainNode.cpp @@ -128,7 +128,8 @@ GainNode::GainNode(AudioContext* aContext) , mGain(new AudioParam(this, SendGainToStream, 1.0f, "gain")) { GainNodeEngine* engine = new GainNodeEngine(this, aContext->Destination()); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::INTERNAL_STREAM); engine->SetSourceStream(mStream); } diff --git a/dom/media/webaudio/MediaStreamAudioDestinationNode.cpp b/dom/media/webaudio/MediaStreamAudioDestinationNode.cpp index 0172e1e3d092..b924c67e815c 100644 --- a/dom/media/webaudio/MediaStreamAudioDestinationNode.cpp +++ b/dom/media/webaudio/MediaStreamAudioDestinationNode.cpp @@ -39,7 +39,8 @@ MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode(AudioContext* a ProcessedMediaStream* outputStream = mDOMStream->GetStream()->AsProcessedStream(); MOZ_ASSERT(!!outputStream); AudioNodeEngine* engine = new AudioNodeEngine(this); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::EXTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::EXTERNAL_STREAM); mPort = outputStream->AllocateInputPort(mStream); nsIDocument* doc = aContext->GetParentObject()->GetExtantDoc(); diff --git a/dom/media/webaudio/MediaStreamAudioSourceNode.cpp b/dom/media/webaudio/MediaStreamAudioSourceNode.cpp index 20ce3f37bb3d..7a2a21635c5f 100644 --- a/dom/media/webaudio/MediaStreamAudioSourceNode.cpp +++ b/dom/media/webaudio/MediaStreamAudioSourceNode.cpp @@ -39,7 +39,7 @@ MediaStreamAudioSourceNode::MediaStreamAudioSourceNode(AudioContext* aContext, mInputStream(aMediaStream) { AudioNodeEngine* engine = new MediaStreamAudioSourceNodeEngine(this); - mStream = aContext->Graph()->CreateAudioNodeExternalInputStream(engine); + mStream = AudioNodeExternalInputStream::Create(aContext->Graph(), engine); ProcessedMediaStream* outputStream = static_cast(mStream.get()); mInputPort = outputStream->AllocateInputPort(aMediaStream->GetStream(), MediaInputPort::FLAG_BLOCK_INPUT); diff --git a/dom/media/webaudio/OscillatorNode.cpp b/dom/media/webaudio/OscillatorNode.cpp index 7d3156d3e2dd..84427e8efb37 100644 --- a/dom/media/webaudio/OscillatorNode.cpp +++ b/dom/media/webaudio/OscillatorNode.cpp @@ -384,7 +384,8 @@ OscillatorNode::OscillatorNode(AudioContext* aContext) , mStartCalled(false) { OscillatorNodeEngine* engine = new OscillatorNodeEngine(this, aContext->Destination()); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::SOURCE_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::SOURCE_STREAM); engine->SetSourceStream(mStream); mStream->AddMainThreadListener(this); } diff --git a/dom/media/webaudio/PannerNode.cpp b/dom/media/webaudio/PannerNode.cpp index a48d16da77ce..4ab8365c8881 100644 --- a/dom/media/webaudio/PannerNode.cpp +++ b/dom/media/webaudio/PannerNode.cpp @@ -240,8 +240,9 @@ PannerNode::PannerNode(AudioContext* aContext) , mConeOuterAngle(360.) , mConeOuterGain(0.) { - mStream = aContext->Graph()->CreateAudioNodeStream(new PannerNodeEngine(this), - MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), + new PannerNodeEngine(this), + AudioNodeStream::INTERNAL_STREAM); // We should register once we have set up our stream and engine. Context()->Listener()->RegisterPannerNode(this); } diff --git a/dom/media/webaudio/ScriptProcessorNode.cpp b/dom/media/webaudio/ScriptProcessorNode.cpp index 49facabdb094..b35684ec6caf 100644 --- a/dom/media/webaudio/ScriptProcessorNode.cpp +++ b/dom/media/webaudio/ScriptProcessorNode.cpp @@ -520,7 +520,8 @@ ScriptProcessorNode::ScriptProcessorNode(AudioContext* aContext, aContext->Destination(), BufferSize(), aNumberOfInputChannels); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::INTERNAL_STREAM); engine->SetSourceStream(mStream); } diff --git a/dom/media/webaudio/StereoPannerNode.cpp b/dom/media/webaudio/StereoPannerNode.cpp index f405f0ad79bf..885eaaac5a18 100644 --- a/dom/media/webaudio/StereoPannerNode.cpp +++ b/dom/media/webaudio/StereoPannerNode.cpp @@ -181,8 +181,8 @@ StereoPannerNode::StereoPannerNode(AudioContext* aContext) , mPan(new AudioParam(this, SendPanToStream, 0.f, "pan")) { StereoPannerNodeEngine* engine = new StereoPannerNodeEngine(this, aContext->Destination()); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, - MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::INTERNAL_STREAM); engine->SetSourceStream(mStream); } diff --git a/dom/media/webaudio/WaveShaperNode.cpp b/dom/media/webaudio/WaveShaperNode.cpp index a2379fb10a23..31eb030dd04a 100644 --- a/dom/media/webaudio/WaveShaperNode.cpp +++ b/dom/media/webaudio/WaveShaperNode.cpp @@ -288,7 +288,8 @@ WaveShaperNode::WaveShaperNode(AudioContext* aContext) mozilla::HoldJSObjects(this); WaveShaperNodeEngine* engine = new WaveShaperNodeEngine(this); - mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM); + mStream = AudioNodeStream::Create(aContext->Graph(), engine, + AudioNodeStream::INTERNAL_STREAM); } WaveShaperNode::~WaveShaperNode()