AudioWorkletNode.h (2301B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ 6 7 #ifndef AudioWorkletNode_h_ 8 #define AudioWorkletNode_h_ 9 10 #include "AudioNode.h" 11 12 namespace mozilla::dom { 13 14 class AudioParamMap; 15 struct AudioWorkletNodeOptions; 16 class MessagePort; 17 struct NamedAudioParamTimeline; 18 struct ProcessorErrorDetails; 19 template <typename KeyType, typename ValueType> 20 class Record; 21 22 class AudioWorkletNode : public AudioNode { 23 public: 24 NS_DECL_ISUPPORTS_INHERITED 25 NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(AudioWorkletNode, AudioNode) 26 27 IMPL_EVENT_HANDLER(processorerror) 28 29 static already_AddRefed<AudioWorkletNode> Constructor( 30 const GlobalObject& aGlobal, AudioContext& aAudioContext, 31 const nsAString& aName, const AudioWorkletNodeOptions& aOptions, 32 ErrorResult& aRv); 33 34 AudioParamMap* GetParameters(ErrorResult& aRv); 35 36 MessagePort* Port() const { return mPort; }; 37 38 JSObject* WrapObject(JSContext* aCx, 39 JS::Handle<JSObject*> aGivenProto) override; 40 41 // AudioNode methods 42 uint16_t NumberOfInputs() const override { return mInputCount; } 43 uint16_t NumberOfOutputs() const override { return mOutputCount; } 44 const char* NodeType() const override { return "AudioWorkletNode"; } 45 void DispatchProcessorErrorEvent(const ProcessorErrorDetails& aDetails); 46 47 size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const override; 48 size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const override; 49 50 private: 51 AudioWorkletNode(AudioContext* aAudioContext, const nsAString& aName, 52 const AudioWorkletNodeOptions& aOptions); 53 ~AudioWorkletNode() = default; 54 void InitializeParameters(nsTArray<NamedAudioParamTimeline>* aParamTimelines, 55 ErrorResult& aRv); 56 void SendParameterData( 57 const Optional<Record<nsString, double>>& aParameterData); 58 59 nsString mNodeName; 60 RefPtr<MessagePort> mPort; 61 RefPtr<AudioParamMap> mParameters; 62 uint16_t mInputCount; 63 uint16_t mOutputCount; 64 }; 65 66 } // namespace mozilla::dom 67 68 #endif // AudioWorkletNode_h_