ObjC ADM: added RTCAudioDevice protocol [2/N]
Bug: webrtc:14193 Change-Id: I616c4d338a0bbc57c22e1f1dcc4454512aecd967 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/268195 Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org> Reviewed-by: Peter Hanspers <peterhanspers@webrtc.org> Commit-Queue: Yury Yarashevich <yura.yaroshevich@gmail.com> Cr-Commit-Position: refs/heads/main@{#37925}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
9068f456a3
commit
1d0b0aed97
@ -31,18 +31,26 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
(RTCVideoEncoderFactory);
|
||||
@protocol RTC_OBJC_TYPE
|
||||
(RTCSSLCertificateVerifier);
|
||||
@protocol RTC_OBJC_TYPE
|
||||
(RTCAudioDevice);
|
||||
|
||||
RTC_OBJC_EXPORT
|
||||
@interface RTC_OBJC_TYPE (RTCPeerConnectionFactory) : NSObject
|
||||
|
||||
/* Initialize object with default H264 video encoder/decoder factories */
|
||||
/* Initialize object with default H264 video encoder/decoder factories and default ADM */
|
||||
- (instancetype)init;
|
||||
|
||||
/* Initialize object with injectable video encoder/decoder factories */
|
||||
/* Initialize object with injectable video encoder/decoder factories and default ADM */
|
||||
- (instancetype)
|
||||
initWithEncoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoEncoderFactory)>)encoderFactory
|
||||
decoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoDecoderFactory)>)decoderFactory;
|
||||
|
||||
/* Initialize object with injectable video encoder/decoder factories and injectable ADM */
|
||||
- (instancetype)
|
||||
initWithEncoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoEncoderFactory)>)encoderFactory
|
||||
decoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoDecoderFactory)>)decoderFactory
|
||||
audioDevice:(nullable id<RTC_OBJC_TYPE(RTCAudioDevice)>)audioDevice;
|
||||
|
||||
/** Initialize an RTCAudioSource with constraints. */
|
||||
- (RTC_OBJC_TYPE(RTCAudioSource) *)audioSourceWithConstraints:
|
||||
(nullable RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints;
|
||||
|
||||
@ -41,6 +41,7 @@
|
||||
#include "modules/audio_device/include/audio_device.h"
|
||||
#include "modules/audio_processing/include/audio_processing.h"
|
||||
|
||||
#include "sdk/objc/native/api/objc_audio_device_module.h"
|
||||
#include "sdk/objc/native/api/video_decoder_factory.h"
|
||||
#include "sdk/objc/native/api/video_encoder_factory.h"
|
||||
#include "sdk/objc/native/src/objc_video_decoder_factory.h"
|
||||
@ -82,6 +83,16 @@
|
||||
- (instancetype)
|
||||
initWithEncoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoEncoderFactory)>)encoderFactory
|
||||
decoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoDecoderFactory)>)decoderFactory {
|
||||
return [self initWithEncoderFactory:encoderFactory decoderFactory:decoderFactory audioDevice:nil];
|
||||
}
|
||||
|
||||
- (instancetype)
|
||||
initWithEncoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoEncoderFactory)>)encoderFactory
|
||||
decoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoDecoderFactory)>)decoderFactory
|
||||
audioDevice:(nullable id<RTC_OBJC_TYPE(RTCAudioDevice)>)audioDevice {
|
||||
#ifdef HAVE_NO_MEDIA
|
||||
return [self initWithNoMedia];
|
||||
#else
|
||||
std::unique_ptr<webrtc::VideoEncoderFactory> native_encoder_factory;
|
||||
std::unique_ptr<webrtc::VideoDecoderFactory> native_decoder_factory;
|
||||
if (encoderFactory) {
|
||||
@ -90,13 +101,21 @@
|
||||
if (decoderFactory) {
|
||||
native_decoder_factory = webrtc::ObjCToNativeVideoDecoderFactory(decoderFactory);
|
||||
}
|
||||
rtc::scoped_refptr<webrtc::AudioDeviceModule> audio_device_module;
|
||||
if (audioDevice) {
|
||||
audio_device_module = webrtc::CreateAudioDeviceModule(audioDevice);
|
||||
} else {
|
||||
audio_device_module = [self audioDeviceModule];
|
||||
}
|
||||
return [self initWithNativeAudioEncoderFactory:webrtc::CreateBuiltinAudioEncoderFactory()
|
||||
nativeAudioDecoderFactory:webrtc::CreateBuiltinAudioDecoderFactory()
|
||||
nativeVideoEncoderFactory:std::move(native_encoder_factory)
|
||||
nativeVideoDecoderFactory:std::move(native_decoder_factory)
|
||||
audioDeviceModule:[self audioDeviceModule].get()
|
||||
audioDeviceModule:audio_device_module.get()
|
||||
audioProcessingModule:nullptr];
|
||||
#endif
|
||||
}
|
||||
|
||||
- (instancetype)initNative {
|
||||
if (self = [super init]) {
|
||||
_networkThread = rtc::Thread::CreateWithSocketServer();
|
||||
|
||||
Reference in New Issue
Block a user