| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_NODE_WIRING_H_ |
| #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_NODE_WIRING_H_ |
| |
| #include "third_party/blink/renderer/modules/modules_export.h" |
| #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" |
| |
| namespace blink { |
| |
| class AudioNodeInput; |
| class AudioNodeOutput; |
| class AudioParamHandler; |
| |
| // Utilities for connecting AudioHandlers to one another, via AudioNodeInput and |
| // AudioNodeOutput. Gathered into one place that can see the internals of both, |
| // to avoid both needing to call one another back and forth. |
| // |
| // An AudioNodeOutput can also be connected to an AudioParamHandler. |
| // |
| // All functions require the graph lock. |
| class MODULES_EXPORT AudioNodeWiring { |
| STATIC_ONLY(AudioNodeWiring); |
| |
| public: |
| // Make or break a connection from an output of one audio node to an input of |
| // another. |
| static void Connect(AudioNodeOutput&, AudioNodeInput&); |
| static void Connect(AudioNodeOutput&, AudioParamHandler&); |
| static void Disconnect(AudioNodeOutput&, AudioNodeInput&); |
| static void Disconnect(AudioNodeOutput&, AudioParamHandler&); |
| |
| // Disable the connection from an output to an input, setting it aside in |
| // a separate list of disabled connections. Enabling does the reverse. |
| // Should be called only from AudioNodeOutput, when its state has changed. |
| static void Disable(AudioNodeOutput&, AudioNodeInput&); |
| static void Enable(AudioNodeOutput&, AudioNodeInput&); |
| |
| // Queries whether a connection exists, disabled or not. |
| static bool IsConnected(AudioNodeOutput&, AudioNodeInput&); |
| static bool IsConnected(AudioNodeOutput&, AudioParamHandler&); |
| |
| // Called before complete destruction to remove any remaining connections. |
| static void WillBeDestroyed(AudioNodeInput&); |
| }; |
| |
| } // namespace blink |
| |
| #endif // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_NODE_WIRING_H_ |