RemoteEncoderModule.h (1840B)
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 #if !defined(RemoteEncoderModule_h_) 8 # define RemoteEncoderModule_h_ 9 10 # include "PlatformEncoderModule.h" 11 # include "RemoteMediaManagerChild.h" 12 13 namespace mozilla { 14 15 class RemoteEncoderModule final : public PlatformEncoderModule { 16 public: 17 static already_AddRefed<PlatformEncoderModule> Create( 18 RemoteMediaIn aLocation); 19 20 already_AddRefed<MediaDataEncoder> CreateVideoEncoder( 21 const EncoderConfig& aConfig, 22 const RefPtr<TaskQueue>& aTaskQueue) const override { 23 return CreateEncoder(aConfig, aTaskQueue); 24 } 25 26 already_AddRefed<MediaDataEncoder> CreateAudioEncoder( 27 const EncoderConfig& aConfig, 28 const RefPtr<TaskQueue>& aTaskQueue) const override { 29 return CreateEncoder(aConfig, aTaskQueue); 30 } 31 32 RefPtr<PlatformEncoderModule::CreateEncoderPromise> AsyncCreateEncoder( 33 const EncoderConfig& aEncoderConfig, 34 const RefPtr<TaskQueue>& aTaskQueue) override; 35 36 media::EncodeSupportSet Supports(const EncoderConfig& aConfig) const override; 37 media::EncodeSupportSet SupportsCodec(CodecType aCodecType) const override; 38 39 const char* GetName() const override; 40 41 private: 42 already_AddRefed<MediaDataEncoder> CreateEncoder( 43 const EncoderConfig& aConfig, const RefPtr<TaskQueue>& aTaskQueue) const; 44 45 template <typename T, typename... Args> 46 friend already_AddRefed<T> MakeAndAddRef(Args&&...); 47 48 explicit RemoteEncoderModule(RemoteMediaIn aLocation); 49 50 const RemoteMediaIn mLocation; 51 }; 52 53 } // namespace mozilla 54 55 #endif /* RemoteEncoderModule_h_ */