summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortkent@chromium.org <tkent@chromium.org>2015-04-08 01:13:45 +0000
committertkent@chromium.org <tkent@chromium.org>2015-04-08 01:13:45 +0000
commit4c7926a2d6378266483743d507c9feabb0c306fb (patch)
tree2d5c6f0f90121f7bc5050dc75c9f92b464852f08
parent3b69a72a149297903b014e7a1f4fab0f97af97f1 (diff)
downloadchromium_src-4c7926a2d6378266483743d507c9feabb0c306fb.zip
chromium_src-4c7926a2d6378266483743d507c9feabb0c306fb.tar.gz
chromium_src-4c7926a2d6378266483743d507c9feabb0c306fb.tar.bz2
Web Audio: Move m_connectedNodes, m_connectedParams, connect(), and disconnect() from AudioHandler to AudioNode
We need to introduce AudioBasicInspectorNode in order to override AudioNode::connect and AudioNode:disconnect. AnalyserNode and MediaStreamAudioDestinationNode inherit from AudioBasicInspectorNode again. BUG=474081 Review URL: https://codereview.chromium.org/1068713002 git-svn-id: svn://svn.chromium.org/blink/trunk@193314 bbb929c8-8fbe-4397-9dbb-9b2b20218538
-rw-r--r--third_party/WebKit/Source/modules/webaudio/AnalyserNode.cpp2
-rw-r--r--third_party/WebKit/Source/modules/webaudio/AnalyserNode.h2
-rw-r--r--third_party/WebKit/Source/modules/webaudio/AudioBasicInspectorNode.cpp12
-rw-r--r--third_party/WebKit/Source/modules/webaudio/AudioBasicInspectorNode.h16
-rw-r--r--third_party/WebKit/Source/modules/webaudio/AudioContext.cpp2
-rw-r--r--third_party/WebKit/Source/modules/webaudio/AudioNode.cpp121
-rw-r--r--third_party/WebKit/Source/modules/webaudio/AudioNode.h45
-rw-r--r--third_party/WebKit/Source/modules/webaudio/MediaStreamAudioDestinationNode.cpp2
-rw-r--r--third_party/WebKit/Source/modules/webaudio/MediaStreamAudioDestinationNode.h2
9 files changed, 83 insertions, 121 deletions
diff --git a/third_party/WebKit/Source/modules/webaudio/AnalyserNode.cpp b/third_party/WebKit/Source/modules/webaudio/AnalyserNode.cpp
index 43903af..9705c46 100644
--- a/third_party/WebKit/Source/modules/webaudio/AnalyserNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AnalyserNode.cpp
@@ -118,7 +118,7 @@ void AnalyserHandler::setSmoothingTimeConstant(double k, ExceptionState& excepti
// ----------------------------------------------------------------
AnalyserNode::AnalyserNode(AudioContext& context, float sampleRate)
- : AudioNode(context)
+ : AudioBasicInspectorNode(context)
{
setHandler(new AnalyserHandler(*this, sampleRate));
}
diff --git a/third_party/WebKit/Source/modules/webaudio/AnalyserNode.h b/third_party/WebKit/Source/modules/webaudio/AnalyserNode.h
index a71d9c4..b5c3de4 100644
--- a/third_party/WebKit/Source/modules/webaudio/AnalyserNode.h
+++ b/third_party/WebKit/Source/modules/webaudio/AnalyserNode.h
@@ -65,7 +65,7 @@ private:
RealtimeAnalyser m_analyser;
};
-class AnalyserNode final : public AudioNode {
+class AnalyserNode final : public AudioBasicInspectorNode {
DEFINE_WRAPPERTYPEINFO();
public:
static AnalyserNode* create(AudioContext&, float sampleRate);
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioBasicInspectorNode.cpp b/third_party/WebKit/Source/modules/webaudio/AudioBasicInspectorNode.cpp
index acaae77..4420bc6 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioBasicInspectorNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioBasicInspectorNode.cpp
@@ -49,24 +49,24 @@ void AudioBasicInspectorHandler::pullInputs(size_t framesToProcess)
input(0)->pull(output(0)->bus(), framesToProcess);
}
-void AudioBasicInspectorHandler::connect(AudioHandler* destination, unsigned outputIndex, unsigned inputIndex, ExceptionState& exceptionState)
+void AudioBasicInspectorNode::connect(AudioNode* destination, unsigned outputIndex, unsigned inputIndex, ExceptionState& exceptionState)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
- AudioHandler::connect(destination, outputIndex, inputIndex, exceptionState);
- updatePullStatus();
+ AudioNode::connect(destination, outputIndex, inputIndex, exceptionState);
+ static_cast<AudioBasicInspectorHandler&>(handler()).updatePullStatus();
}
-void AudioBasicInspectorHandler::disconnect(unsigned outputIndex, ExceptionState& exceptionState)
+void AudioBasicInspectorNode::disconnect(unsigned outputIndex, ExceptionState& exceptionState)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
- AudioHandler::disconnect(outputIndex, exceptionState);
- updatePullStatus();
+ AudioNode::disconnect(outputIndex, exceptionState);
+ static_cast<AudioBasicInspectorHandler&>(handler()).updatePullStatus();
}
void AudioBasicInspectorHandler::checkNumberOfChannelsForInput(AudioNodeInput* input)
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioBasicInspectorNode.h b/third_party/WebKit/Source/modules/webaudio/AudioBasicInspectorNode.h
index 2c9e4ed..e5ebfee 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioBasicInspectorNode.h
+++ b/third_party/WebKit/Source/modules/webaudio/AudioBasicInspectorNode.h
@@ -40,15 +40,25 @@ public:
// AudioHandler
virtual void pullInputs(size_t framesToProcess) override final;
- virtual void connect(AudioHandler*, unsigned outputIndex, unsigned inputIndex, ExceptionState&) override final;
- virtual void disconnect(unsigned outputIndex, ExceptionState&) override final;
virtual void checkNumberOfChannelsForInput(AudioNodeInput*) override final;
-private:
void updatePullStatus();
+
+private:
bool m_needAutomaticPull; // When setting to true, AudioBasicInspectorHandler will be pulled automaticlly by AudioContext before the end of each render quantum.
};
+class AudioBasicInspectorNode : public AudioNode {
+protected:
+ explicit AudioBasicInspectorNode(AudioContext& context) : AudioNode(context) { }
+
+private:
+ // TODO(tkent): Should AudioBasicInspectorNode override other variants of
+ // connect() and disconnect()?
+ void connect(AudioNode*, unsigned outputIndex, unsigned inputIndex, ExceptionState&) final;
+ void disconnect(unsigned outputIndex, ExceptionState&) final;
+};
+
} // namespace blink
#endif // AudioBasicInspectorNode_h
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioContext.cpp b/third_party/WebKit/Source/modules/webaudio/AudioContext.cpp
index 6c6325b..b93dd56 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioContext.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioContext.cpp
@@ -1280,7 +1280,7 @@ ScriptPromise AudioContext::closeContext(ScriptState* scriptState)
for (auto& node : m_liveNodes) {
if (node) {
for (unsigned k = 0; k < node->numberOfOutputs(); ++k)
- node->handler().disconnectWithoutException(k);
+ node->disconnectWithoutException(k);
}
}
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioNode.cpp b/third_party/WebKit/Source/modules/webaudio/AudioNode.cpp
index 5b3c78e..a95f84e 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioNode.cpp
@@ -174,11 +174,9 @@ void AudioHandler::addInput()
void AudioHandler::addOutput(unsigned numberOfChannels)
{
+ ASSERT(isMainThread());
m_outputs.append(AudioNodeOutput::create(this, numberOfChannels));
- m_connectedNodes.append(nullptr);
- ASSERT(numberOfOutputs() == m_connectedNodes.size());
- m_connectedParams.append(nullptr);
- ASSERT(numberOfOutputs() == m_connectedParams.size());
+ node()->didAddOutput(numberOfOutputs());
}
AudioNodeInput* AudioHandler::input(unsigned i)
@@ -195,7 +193,7 @@ AudioNodeOutput* AudioHandler::output(unsigned i)
return nullptr;
}
-void AudioHandler::connect(AudioHandler* destination, unsigned outputIndex, unsigned inputIndex, ExceptionState& exceptionState)
+void AudioNode::connect(AudioNode* destination, unsigned outputIndex, unsigned inputIndex, ExceptionState& exceptionState)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
@@ -236,16 +234,16 @@ void AudioHandler::connect(AudioHandler* destination, unsigned outputIndex, unsi
return;
}
- destination->input(inputIndex)->connect(*output(outputIndex));
+ destination->handler().input(inputIndex)->connect(*handler().output(outputIndex));
if (!m_connectedNodes[outputIndex])
- m_connectedNodes[outputIndex] = new HeapHashSet<Member<AudioHandler>>();
+ m_connectedNodes[outputIndex] = new HeapHashSet<Member<AudioNode>>();
m_connectedNodes[outputIndex]->add(destination);
// Let context know that a connection has been made.
context()->incrementConnectionCount();
}
-void AudioHandler::connect(AudioParam* param, unsigned outputIndex, ExceptionState& exceptionState)
+void AudioNode::connect(AudioParam* param, unsigned outputIndex, ExceptionState& exceptionState)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
@@ -278,26 +276,26 @@ void AudioHandler::connect(AudioParam* param, unsigned outputIndex, ExceptionSta
return;
}
- param->handler().connect(*output(outputIndex));
+ param->handler().connect(*handler().output(outputIndex));
if (!m_connectedParams[outputIndex])
m_connectedParams[outputIndex] = new HeapHashSet<Member<AudioParam>>();
m_connectedParams[outputIndex]->add(param);
}
-void AudioHandler::disconnect()
+void AudioNode::disconnect()
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
// Disconnect all outgoing connections.
for (unsigned i = 0; i < numberOfOutputs(); ++i) {
- this->output(i)->disconnectAll();
+ handler().output(i)->disconnectAll();
m_connectedNodes[i] = nullptr;
m_connectedParams[i] = nullptr;
}
}
-void AudioHandler::disconnect(unsigned outputIndex, ExceptionState& exceptionState)
+void AudioNode::disconnect(unsigned outputIndex, ExceptionState& exceptionState)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
@@ -317,12 +315,12 @@ void AudioHandler::disconnect(unsigned outputIndex, ExceptionState& exceptionSta
}
// Disconnect all outgoing connections from the given output.
- output(outputIndex)->disconnectAll();
+ handler().output(outputIndex)->disconnectAll();
m_connectedNodes[outputIndex] = nullptr;
m_connectedParams[outputIndex] = nullptr;
}
-void AudioHandler::disconnect(AudioHandler* destination, ExceptionState& exceptionState)
+void AudioNode::disconnect(AudioNode* destination, ExceptionState& exceptionState)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
@@ -332,9 +330,9 @@ void AudioHandler::disconnect(AudioHandler* destination, ExceptionState& excepti
// FIXME: Can this be optimized? ChannelSplitter and ChannelMerger can have
// 32 ports and that requires 1024 iterations to validate entire connections.
for (unsigned i = 0; i < numberOfOutputs(); ++i) {
- AudioNodeOutput* output = this->output(i);
- for (unsigned j = 0; j < destination->numberOfInputs(); ++j) {
- AudioNodeInput* input = destination->input(j);
+ AudioNodeOutput* output = handler().output(i);
+ for (unsigned j = 0; j < destination->handler().numberOfInputs(); ++j) {
+ AudioNodeInput* input = destination->handler().input(j);
if (output->isConnectedToInput(*input)) {
output->disconnectInput(*input);
m_connectedNodes[i]->remove(destination);
@@ -352,7 +350,7 @@ void AudioHandler::disconnect(AudioHandler* destination, ExceptionState& excepti
}
}
-void AudioHandler::disconnect(AudioHandler* destination, unsigned outputIndex, ExceptionState& exceptionState)
+void AudioNode::disconnect(AudioNode* destination, unsigned outputIndex, ExceptionState& exceptionState)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
@@ -362,11 +360,11 @@ void AudioHandler::disconnect(AudioHandler* destination, unsigned outputIndex, E
// If the output index is valid, proceed to disconnect.
if (isOutputIndexInRange) {
unsigned numberOfDisconnections = 0;
- AudioNodeOutput* output = this->output(outputIndex);
+ AudioNodeOutput* output = handler().output(outputIndex);
// Sanity check on destination inputs and disconnect when possible.
for (unsigned i = 0; i < destination->numberOfInputs(); ++i) {
- AudioNodeInput* input = destination->input(i);
+ AudioNodeInput* input = destination->handler().input(i);
if (output->isConnectedToInput(*input)) {
output->disconnectInput(*input);
m_connectedNodes[outputIndex]->remove(destination);
@@ -398,18 +396,18 @@ void AudioHandler::disconnect(AudioHandler* destination, unsigned outputIndex, E
}
}
-void AudioHandler::disconnect(AudioHandler* destination, unsigned outputIndex, unsigned inputIndex, ExceptionState& exceptionState)
+void AudioNode::disconnect(AudioNode* destination, unsigned outputIndex, unsigned inputIndex, ExceptionState& exceptionState)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
bool isOutputIndexInRange = outputIndex < numberOfOutputs();
- bool isInputIndexInRange = inputIndex < destination->numberOfInputs();
+ bool isInputIndexInRange = inputIndex < destination->handler().numberOfInputs();
// If both indices are valid, proceed to disconnect.
if (isOutputIndexInRange && isInputIndexInRange) {
- AudioNodeOutput* output = this->output(outputIndex);
- AudioNodeInput* input = destination->input(inputIndex);
+ AudioNodeOutput* output = handler().output(outputIndex);
+ AudioNodeInput* input = destination->handler().input(inputIndex);
// Sanity check on the connection between the output and the destination input.
if (!output->isConnectedToInput(*input)) {
@@ -451,7 +449,7 @@ void AudioHandler::disconnect(AudioHandler* destination, unsigned outputIndex, u
}
}
-void AudioHandler::disconnect(AudioParam* destinationParam, ExceptionState& exceptionState)
+void AudioNode::disconnect(AudioParam* destinationParam, ExceptionState& exceptionState)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
@@ -461,8 +459,8 @@ void AudioHandler::disconnect(AudioParam* destinationParam, ExceptionState& exce
// Check if the node output is connected the destination AudioParam.
// Disconnect if connected and increase |numberOfDisconnectios| by 1.
- for (unsigned i = 0; i < numberOfOutputs(); ++i) {
- AudioNodeOutput* output = this->output(i);
+ for (unsigned i = 0; i < handler().numberOfOutputs(); ++i) {
+ AudioNodeOutput* output = handler().output(i);
if (output->isConnectedToAudioParam(destinationParam->handler())) {
output->disconnectAudioParam(destinationParam->handler());
m_connectedParams[i]->remove(destinationParam);
@@ -479,16 +477,16 @@ void AudioHandler::disconnect(AudioParam* destinationParam, ExceptionState& exce
}
}
-void AudioHandler::disconnect(AudioParam* destinationParam, unsigned outputIndex, ExceptionState& exceptionState)
+void AudioNode::disconnect(AudioParam* destinationParam, unsigned outputIndex, ExceptionState& exceptionState)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
- bool isOutputIndexInRange = outputIndex < numberOfOutputs();
+ bool isOutputIndexInRange = outputIndex < handler().numberOfOutputs();
// If the output index is valid, proceed to disconnect.
if (isOutputIndexInRange) {
- AudioNodeOutput* output = this->output(outputIndex);
+ AudioNodeOutput* output = handler().output(outputIndex);
// Sanity check on the connection between the output and the destination.
if (!output->isConnectedToAudioParam(destinationParam->handler())) {
@@ -516,15 +514,15 @@ void AudioHandler::disconnect(AudioParam* destinationParam, unsigned outputIndex
}
}
-void AudioHandler::disconnectWithoutException(unsigned outputIndex)
+void AudioNode::disconnectWithoutException(unsigned outputIndex)
{
ASSERT(isMainThread());
AudioContext::AutoLocker locker(context());
// Sanity check input and output indices.
- if (outputIndex >= numberOfOutputs())
+ if (outputIndex >= handler().numberOfOutputs())
return;
- output(outputIndex)->disconnectAll();
+ handler().output(outputIndex)->disconnectAll();
m_connectedNodes[outputIndex] = nullptr;
m_connectedParams[outputIndex] = nullptr;
}
@@ -831,8 +829,6 @@ DEFINE_TRACE(AudioHandler)
visitor->trace(input->renderingOutput(i)->node());
}
}
- visitor->trace(m_connectedNodes);
- visitor->trace(m_connectedParams);
}
void AudioHandler::updateChannelCountMode()
@@ -874,54 +870,11 @@ DEFINE_TRACE(AudioNode)
{
visitor->trace(m_context);
visitor->trace(m_handler);
+ visitor->trace(m_connectedNodes);
+ visitor->trace(m_connectedParams);
RefCountedGarbageCollectedEventTargetWithInlineData<AudioNode>::trace(visitor);
}
-void AudioNode::connect(AudioNode* node, unsigned outputIndex, unsigned inputIndex, ExceptionState& exceptionState)
-{
- handler().connect(&node->handler(), outputIndex, inputIndex, exceptionState);
-}
-
-void AudioNode::connect(AudioParam* param, unsigned outputIndex, ExceptionState& exceptionState)
-{
- handler().connect(param, outputIndex, exceptionState);
-}
-
-void AudioNode::disconnect()
-{
- handler().disconnect();
-}
-
-void AudioNode::disconnect(unsigned outputIndex, ExceptionState& exceptionState)
-{
- handler().disconnect(outputIndex, exceptionState);
-}
-
-void AudioNode::disconnect(AudioNode* node, ExceptionState& exceptionState)
-{
- handler().disconnect(&node->handler(), exceptionState);
-}
-
-void AudioNode::disconnect(AudioNode* node, unsigned outputIndex, ExceptionState& exceptionState)
-{
- handler().disconnect(&node->handler(), outputIndex, exceptionState);
-}
-
-void AudioNode::disconnect(AudioNode* node, unsigned outputIndex, unsigned inputIndex, ExceptionState& exceptionState)
-{
- handler().disconnect(&node->handler(), outputIndex, inputIndex, exceptionState);
-}
-
-void AudioNode::disconnect(AudioParam* param, ExceptionState& exceptionState)
-{
- handler().disconnect(param, exceptionState);
-}
-
-void AudioNode::disconnect(AudioParam* param, unsigned outputIndex, ExceptionState& exceptionState)
-{
- handler().disconnect(param, outputIndex, exceptionState);
-}
-
AudioContext* AudioNode::context() const
{
return m_context;
@@ -977,6 +930,14 @@ ExecutionContext* AudioNode::executionContext() const
return context()->executionContext();
}
+void AudioNode::didAddOutput(unsigned numberOfOutputs)
+{
+ m_connectedNodes.append(nullptr);
+ ASSERT_UNUSED(numberOfOutputs, numberOfOutputs == m_connectedNodes.size());
+ m_connectedParams.append(nullptr);
+ ASSERT_UNUSED(numberOfOutputs, numberOfOutputs == m_connectedParams.size());
+}
+
} // namespace blink
#endif // ENABLE(WEB_AUDIO)
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioNode.h b/third_party/WebKit/Source/modules/webaudio/AudioNode.h
index e68b7ff..64bfc49 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioNode.h
+++ b/third_party/WebKit/Source/modules/webaudio/AudioNode.h
@@ -136,22 +136,6 @@ public:
AudioNodeInput* input(unsigned);
AudioNodeOutput* output(unsigned);
- // Called from main thread by corresponding JavaScript methods.
- virtual void connect(AudioHandler*, unsigned outputIndex, unsigned inputIndex, ExceptionState&);
- void connect(AudioParam*, unsigned outputIndex, ExceptionState&);
-
- virtual void disconnect();
- virtual void disconnect(unsigned outputIndex, ExceptionState&);
- virtual void disconnect(AudioHandler*, ExceptionState&);
- virtual void disconnect(AudioHandler*, unsigned outputIndex, ExceptionState&);
- virtual void disconnect(AudioHandler*, unsigned outputIndex, unsigned inputIndex, ExceptionState&);
- virtual void disconnect(AudioParam*, ExceptionState&);
- virtual void disconnect(AudioParam*, unsigned outputIndex, ExceptionState&);
-
- // Like disconnect, but no exception is thrown if the outputIndex is invalid. Just do nothing
- // in that case.
- virtual void disconnectWithoutException(unsigned outputIndex);
-
virtual float sampleRate() const { return m_sampleRate; }
// processIfNecessary() is called by our output(s) when the rendering graph needs this AudioNode to process.
@@ -208,7 +192,8 @@ public:
DECLARE_VIRTUAL_TRACE();
protected:
- // Inputs and outputs must be created before the AudioNode is initialized.
+ // Inputs and outputs must be created before the AudioHandler is
+ // initialized.
void addInput();
void addOutput(unsigned numberOfChannels);
@@ -230,14 +215,6 @@ private:
float m_sampleRate;
Vector<OwnPtr<AudioNodeInput>> m_inputs;
Vector<OwnPtr<AudioNodeOutput>> m_outputs;
- // Represents audio node graph with Oilpan references. N-th HeapHashSet
- // represents a set of AudioNode objects connected to this AudioNode's N-th
- // output.
- HeapVector<Member<HeapHashSet<Member<AudioHandler>>>> m_connectedNodes;
- // Represents audio node graph with Oilpan references. N-th HeapHashSet
- // represents a set of AudioParam objects connected to this AudioNode's N-th
- // output.
- HeapVector<Member<HeapHashSet<Member<AudioParam>>>> m_connectedParams;
double m_lastProcessingTime;
double m_lastNonSilentTime;
@@ -269,10 +246,10 @@ public:
DECLARE_VIRTUAL_TRACE();
AudioHandler& handler() const;
- void connect(AudioNode*, unsigned outputIndex, unsigned inputIndex, ExceptionState&);
+ virtual void connect(AudioNode*, unsigned outputIndex, unsigned inputIndex, ExceptionState&);
void connect(AudioParam*, unsigned outputIndex, ExceptionState&);
void disconnect();
- void disconnect(unsigned outputIndex, ExceptionState&);
+ virtual void disconnect(unsigned outputIndex, ExceptionState&);
void disconnect(AudioNode*, ExceptionState&);
void disconnect(AudioNode*, unsigned outputIndex, ExceptionState&);
void disconnect(AudioNode*, unsigned outputIndex, unsigned inputIndex, ExceptionState&);
@@ -292,6 +269,12 @@ public:
virtual const AtomicString& interfaceName() const override final;
virtual ExecutionContext* executionContext() const override final;
+ // Called inside AudioHandler constructors.
+ void didAddOutput(unsigned numberOfOutputs);
+ // Like disconnect, but no exception is thrown if the outputIndex is invalid. Just do nothing
+ // in that case.
+ void disconnectWithoutException(unsigned outputIndex);
+
protected:
explicit AudioNode(AudioContext&);
// This should be called in a constructor.
@@ -302,6 +285,14 @@ private:
Member<AudioContext> m_context;
Member<AudioHandler> m_handler;
+ // Represents audio node graph with Oilpan references. N-th HeapHashSet
+ // represents a set of AudioNode objects connected to this AudioNode's N-th
+ // output.
+ HeapVector<Member<HeapHashSet<Member<AudioNode>>>> m_connectedNodes;
+ // Represents audio node graph with Oilpan references. N-th HeapHashSet
+ // represents a set of AudioParam objects connected to this AudioNode's N-th
+ // output.
+ HeapVector<Member<HeapHashSet<Member<AudioParam>>>> m_connectedParams;
};
} // namespace blink
diff --git a/third_party/WebKit/Source/modules/webaudio/MediaStreamAudioDestinationNode.cpp b/third_party/WebKit/Source/modules/webaudio/MediaStreamAudioDestinationNode.cpp
index dc41ab2..c9f7e9e 100644
--- a/third_party/WebKit/Source/modules/webaudio/MediaStreamAudioDestinationNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/MediaStreamAudioDestinationNode.cpp
@@ -77,7 +77,7 @@ void MediaStreamAudioDestinationHandler::process(size_t numberOfFrames)
// ----------------------------------------------------------------
MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode(AudioContext& context, size_t numberOfChannels)
- : AudioNode(context)
+ : AudioBasicInspectorNode(context)
{
setHandler(new MediaStreamAudioDestinationHandler(*this, numberOfChannels));
}
diff --git a/third_party/WebKit/Source/modules/webaudio/MediaStreamAudioDestinationNode.h b/third_party/WebKit/Source/modules/webaudio/MediaStreamAudioDestinationNode.h
index 6181142..27ab1f0 100644
--- a/third_party/WebKit/Source/modules/webaudio/MediaStreamAudioDestinationNode.h
+++ b/third_party/WebKit/Source/modules/webaudio/MediaStreamAudioDestinationNode.h
@@ -58,7 +58,7 @@ private:
RefPtr<AudioBus> m_mixBus;
};
-class MediaStreamAudioDestinationNode final : public AudioNode {
+class MediaStreamAudioDestinationNode final : public AudioBasicInspectorNode {
DEFINE_WRAPPERTYPEINFO();
public:
static MediaStreamAudioDestinationNode* create(AudioContext&, size_t numberOfChannels);