AudioEncoder.h (2310B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim:set ts=2 sw=2 sts=2 et cindent: */ 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 http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef mozilla_dom_AudioEncoder_h 8 #define mozilla_dom_AudioEncoder_h 9 10 #include "EncoderAgent.h" 11 #include "EncoderTypes.h" 12 #include "js/TypeDecls.h" 13 #include "mozilla/ErrorResult.h" 14 #include "mozilla/RefPtr.h" 15 #include "mozilla/dom/AudioData.h" 16 #include "mozilla/dom/BindingDeclarations.h" 17 #include "mozilla/dom/EncoderTemplate.h" 18 #include "nsCycleCollectionParticipant.h" 19 20 class nsIGlobalObject; 21 22 namespace mozilla::dom { 23 24 class AudioDataOutputCallback; 25 class EncodedAudioChunk; 26 class EncodedAudioChunkData; 27 class EventHandlerNonNull; 28 class GlobalObject; 29 class Promise; 30 class WebCodecsErrorCallback; 31 struct AudioEncoderConfig; 32 struct AudioEncoderInit; 33 34 } // namespace mozilla::dom 35 36 namespace mozilla::dom { 37 38 class AudioEncoder final : public EncoderTemplate<AudioEncoderTraits> { 39 public: 40 NS_DECL_ISUPPORTS_INHERITED 41 NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(AudioEncoder, DOMEventTargetHelper) 42 43 public: 44 AudioEncoder(nsIGlobalObject* aParent, 45 RefPtr<WebCodecsErrorCallback>&& aErrorCallback, 46 RefPtr<EncodedAudioChunkOutputCallback>&& aOutputCallback); 47 48 protected: 49 ~AudioEncoder(); 50 51 public: 52 JSObject* WrapObject(JSContext* aCx, 53 JS::Handle<JSObject*> aGivenProto) override; 54 55 static already_AddRefed<AudioEncoder> Constructor( 56 const GlobalObject& aGlobal, const AudioEncoderInit& aInit, 57 ErrorResult& aRv); 58 59 static already_AddRefed<Promise> IsConfigSupported( 60 const GlobalObject& aGlobal, const AudioEncoderConfig& aConfig, 61 ErrorResult& aRv); 62 63 protected: 64 virtual RefPtr<EncodedAudioChunk> EncodedDataToOutputType( 65 nsIGlobalObject* aGlobalObject, 66 const RefPtr<MediaRawData>& aData) override; 67 68 virtual void EncoderConfigToDecoderConfig( 69 JSContext* aCx, const RefPtr<MediaRawData>& aRawData, 70 const AudioEncoderConfigInternal& aSrcConfig, 71 AudioDecoderConfig& aDestConfig) const override; 72 }; 73 74 } // namespace mozilla::dom 75 76 #endif // mozilla_dom_AudioEncoder_h