tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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_