Extend ios RTCPeerConnectionFactoryBuilder to have custom audio processing builder and field trials
Bug: webrtc:369904700 Change-Id: I1f2914b231d16948e571d8967a38f62080538fe0 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/367020 Reviewed-by: Kári Helgason <kthelgason@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43358}
This commit is contained in:
parent
3bd3815c4d
commit
1a93080b8d
@ -1066,6 +1066,7 @@ if (is_ios || is_mac) {
|
|||||||
":videotoolbox_objc",
|
":videotoolbox_objc",
|
||||||
"../api:dtmf_sender_interface",
|
"../api:dtmf_sender_interface",
|
||||||
"../api:enable_media",
|
"../api:enable_media",
|
||||||
|
"../api:field_trials_view",
|
||||||
"../api:libjingle_peerconnection_api",
|
"../api:libjingle_peerconnection_api",
|
||||||
"../api:media_stream_interface",
|
"../api:media_stream_interface",
|
||||||
"../api:rtc_event_log_output_file",
|
"../api:rtc_event_log_output_file",
|
||||||
@ -1075,6 +1076,7 @@ if (is_ios || is_mac) {
|
|||||||
"../api:scoped_refptr",
|
"../api:scoped_refptr",
|
||||||
"../api/audio:audio_device",
|
"../api/audio:audio_device",
|
||||||
"../api/audio:audio_processing",
|
"../api/audio:audio_processing",
|
||||||
|
"../api/audio:builtin_audio_processing_builder",
|
||||||
"../api/audio_codecs:audio_codecs_api",
|
"../api/audio_codecs:audio_codecs_api",
|
||||||
"../api/audio_codecs:builtin_audio_decoder_factory",
|
"../api/audio_codecs:builtin_audio_decoder_factory",
|
||||||
"../api/audio_codecs:builtin_audio_encoder_factory",
|
"../api/audio_codecs:builtin_audio_encoder_factory",
|
||||||
@ -1091,7 +1093,6 @@ if (is_ios || is_mac) {
|
|||||||
"../common_video",
|
"../common_video",
|
||||||
"../media:media_constants",
|
"../media:media_constants",
|
||||||
"../media:rtc_media_base",
|
"../media:rtc_media_base",
|
||||||
"../modules/audio_processing",
|
|
||||||
"../modules/video_coding:video_codec_interface",
|
"../modules/video_coding:video_codec_interface",
|
||||||
"../pc:peer_connection_factory",
|
"../pc:peer_connection_factory",
|
||||||
"../pc:webrtc_sdp",
|
"../pc:webrtc_sdp",
|
||||||
|
|||||||
@ -14,17 +14,12 @@
|
|||||||
#include "api/audio/audio_processing.h"
|
#include "api/audio/audio_processing.h"
|
||||||
#include "api/audio_codecs/audio_decoder_factory.h"
|
#include "api/audio_codecs/audio_decoder_factory.h"
|
||||||
#include "api/audio_codecs/audio_encoder_factory.h"
|
#include "api/audio_codecs/audio_encoder_factory.h"
|
||||||
|
#include "api/peer_connection_interface.h"
|
||||||
#include "api/scoped_refptr.h"
|
#include "api/scoped_refptr.h"
|
||||||
#include "api/transport/network_control.h"
|
#include "api/transport/network_control.h"
|
||||||
#include "api/video_codecs/video_decoder_factory.h"
|
#include "api/video_codecs/video_decoder_factory.h"
|
||||||
#include "api/video_codecs/video_encoder_factory.h"
|
#include "api/video_codecs/video_encoder_factory.h"
|
||||||
|
|
||||||
namespace webrtc {
|
|
||||||
|
|
||||||
struct PeerConnectionDependencies;
|
|
||||||
|
|
||||||
} // namespace webrtc
|
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -33,11 +28,13 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
@interface RTC_OBJC_TYPE (RTCPeerConnectionFactory)
|
@interface RTC_OBJC_TYPE (RTCPeerConnectionFactory)
|
||||||
()
|
()
|
||||||
|
|
||||||
- (instancetype)initNative NS_DESIGNATED_INITIALIZER;
|
|
||||||
|
|
||||||
/* Initializer used when WebRTC is compiled with no media support */
|
/* Initializer used when WebRTC is compiled with no media support */
|
||||||
- (instancetype)initWithNoMedia;
|
- (instancetype)initWithNoMedia;
|
||||||
|
|
||||||
|
/* Initialize object with provided dependencies and with media support. */
|
||||||
|
- (instancetype)initWithMediaAndDependencies:
|
||||||
|
(webrtc::PeerConnectionFactoryDependencies)dependencies;
|
||||||
|
|
||||||
/* Initialize object with injectable native audio/video encoder/decoder factories */
|
/* Initialize object with injectable native audio/video encoder/decoder factories */
|
||||||
- (instancetype)initWithNativeAudioEncoderFactory:
|
- (instancetype)initWithNativeAudioEncoderFactory:
|
||||||
(rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory
|
(rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory
|
||||||
|
|||||||
@ -29,10 +29,10 @@
|
|||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "sdk/objc/native/api/network_monitor_factory.h"
|
#include "sdk/objc/native/api/network_monitor_factory.h"
|
||||||
#include "sdk/objc/native/api/ssl_certificate_verifier.h"
|
#include "sdk/objc/native/api/ssl_certificate_verifier.h"
|
||||||
#include "system_wrappers/include/field_trial.h"
|
|
||||||
|
|
||||||
#include "api/audio/audio_device.h"
|
#include "api/audio/audio_device.h"
|
||||||
#include "api/audio/audio_processing.h"
|
#include "api/audio/audio_processing.h"
|
||||||
|
#include "api/audio/builtin_audio_processing_builder.h"
|
||||||
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
|
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
|
||||||
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
|
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
|
||||||
#include "api/enable_media.h"
|
#include "api/enable_media.h"
|
||||||
@ -71,15 +71,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)init {
|
- (instancetype)init {
|
||||||
return [self
|
webrtc::PeerConnectionFactoryDependencies dependencies;
|
||||||
initWithNativeAudioEncoderFactory:webrtc::CreateBuiltinAudioEncoderFactory()
|
dependencies.audio_encoder_factory = webrtc::CreateBuiltinAudioEncoderFactory();
|
||||||
nativeAudioDecoderFactory:webrtc::CreateBuiltinAudioDecoderFactory()
|
dependencies.audio_decoder_factory = webrtc::CreateBuiltinAudioDecoderFactory();
|
||||||
nativeVideoEncoderFactory:webrtc::ObjCToNativeVideoEncoderFactory([[RTC_OBJC_TYPE(
|
dependencies.video_encoder_factory = webrtc::ObjCToNativeVideoEncoderFactory(
|
||||||
RTCVideoEncoderFactoryH264) alloc] init])
|
[[RTC_OBJC_TYPE(RTCVideoEncoderFactoryH264) alloc] init]);
|
||||||
nativeVideoDecoderFactory:webrtc::ObjCToNativeVideoDecoderFactory([[RTC_OBJC_TYPE(
|
dependencies.video_decoder_factory = webrtc::ObjCToNativeVideoDecoderFactory(
|
||||||
RTCVideoDecoderFactoryH264) alloc] init])
|
[[RTC_OBJC_TYPE(RTCVideoDecoderFactoryH264) alloc] init]);
|
||||||
audioDeviceModule:[self audioDeviceModule].get()
|
dependencies.adm = [self audioDeviceModule];
|
||||||
audioProcessingModule:nullptr];
|
return [self initWithMediaAndDependencies:std::move(dependencies)];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)
|
- (instancetype)
|
||||||
@ -95,30 +95,25 @@
|
|||||||
#ifdef HAVE_NO_MEDIA
|
#ifdef HAVE_NO_MEDIA
|
||||||
return [self initWithNoMedia];
|
return [self initWithNoMedia];
|
||||||
#else
|
#else
|
||||||
std::unique_ptr<webrtc::VideoEncoderFactory> native_encoder_factory;
|
webrtc::PeerConnectionFactoryDependencies dependencies;
|
||||||
std::unique_ptr<webrtc::VideoDecoderFactory> native_decoder_factory;
|
dependencies.audio_encoder_factory = webrtc::CreateBuiltinAudioEncoderFactory();
|
||||||
|
dependencies.audio_decoder_factory = webrtc::CreateBuiltinAudioDecoderFactory();
|
||||||
if (encoderFactory) {
|
if (encoderFactory) {
|
||||||
native_encoder_factory = webrtc::ObjCToNativeVideoEncoderFactory(encoderFactory);
|
dependencies.video_encoder_factory = webrtc::ObjCToNativeVideoEncoderFactory(encoderFactory);
|
||||||
}
|
}
|
||||||
if (decoderFactory) {
|
if (decoderFactory) {
|
||||||
native_decoder_factory = webrtc::ObjCToNativeVideoDecoderFactory(decoderFactory);
|
dependencies.video_decoder_factory = webrtc::ObjCToNativeVideoDecoderFactory(decoderFactory);
|
||||||
}
|
}
|
||||||
rtc::scoped_refptr<webrtc::AudioDeviceModule> audio_device_module;
|
|
||||||
if (audioDevice) {
|
if (audioDevice) {
|
||||||
audio_device_module = webrtc::CreateAudioDeviceModule(audioDevice);
|
dependencies.adm = webrtc::CreateAudioDeviceModule(audioDevice);
|
||||||
} else {
|
} else {
|
||||||
audio_device_module = [self audioDeviceModule];
|
dependencies.adm = [self audioDeviceModule];
|
||||||
}
|
}
|
||||||
return [self initWithNativeAudioEncoderFactory:webrtc::CreateBuiltinAudioEncoderFactory()
|
return [self initWithMediaAndDependencies:std::move(dependencies)];
|
||||||
nativeAudioDecoderFactory:webrtc::CreateBuiltinAudioDecoderFactory()
|
|
||||||
nativeVideoEncoderFactory:std::move(native_encoder_factory)
|
|
||||||
nativeVideoDecoderFactory:std::move(native_decoder_factory)
|
|
||||||
audioDeviceModule:audio_device_module.get()
|
|
||||||
audioProcessingModule:nullptr];
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initNative {
|
- (instancetype)initWithNativeDependencies:(webrtc::PeerConnectionFactoryDependencies)dependencies {
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if (self) {
|
if (self) {
|
||||||
_networkThread = rtc::Thread::CreateWithSocketServer();
|
_networkThread = rtc::Thread::CreateWithSocketServer();
|
||||||
@ -135,24 +130,27 @@
|
|||||||
_signalingThread->SetName("signaling_thread", _signalingThread.get());
|
_signalingThread->SetName("signaling_thread", _signalingThread.get());
|
||||||
result = _signalingThread->Start();
|
result = _signalingThread->Start();
|
||||||
RTC_DCHECK(result) << "Failed to start signaling thread.";
|
RTC_DCHECK(result) << "Failed to start signaling thread.";
|
||||||
|
|
||||||
|
// Set fields that are relevant both to 'no media' and 'with media' scenarios.
|
||||||
|
dependencies.network_thread = _networkThread.get();
|
||||||
|
dependencies.worker_thread = _workerThread.get();
|
||||||
|
dependencies.signaling_thread = _signalingThread.get();
|
||||||
|
if (dependencies.trials == nullptr) {
|
||||||
|
dependencies.trials = std::make_unique<webrtc::FieldTrialBasedConfig>();
|
||||||
|
}
|
||||||
|
if (dependencies.network_monitor_factory == nullptr &&
|
||||||
|
dependencies.trials->IsEnabled("WebRTC-Network-UseNWPathMonitor")) {
|
||||||
|
dependencies.network_monitor_factory = webrtc::CreateNetworkMonitorFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
_nativeFactory = webrtc::CreateModularPeerConnectionFactory(std::move(dependencies));
|
||||||
|
NSAssert(_nativeFactory, @"Failed to initialize PeerConnectionFactory!");
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initWithNoMedia {
|
- (instancetype)initWithNoMedia {
|
||||||
self = [self initNative];
|
return [self initWithNativeDependencies:webrtc::PeerConnectionFactoryDependencies()];
|
||||||
if (self) {
|
|
||||||
webrtc::PeerConnectionFactoryDependencies dependencies;
|
|
||||||
dependencies.network_thread = _networkThread.get();
|
|
||||||
dependencies.worker_thread = _workerThread.get();
|
|
||||||
dependencies.signaling_thread = _signalingThread.get();
|
|
||||||
if (webrtc::field_trial::IsEnabled("WebRTC-Network-UseNWPathMonitor")) {
|
|
||||||
dependencies.network_monitor_factory = webrtc::CreateNetworkMonitorFactory();
|
|
||||||
}
|
|
||||||
_nativeFactory = webrtc::CreateModularPeerConnectionFactory(std::move(dependencies));
|
|
||||||
NSAssert(_nativeFactory, @"Failed to initialize PeerConnectionFactory!");
|
|
||||||
}
|
|
||||||
return self;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initWithNativeAudioEncoderFactory:
|
- (instancetype)initWithNativeAudioEncoderFactory:
|
||||||
@ -166,14 +164,18 @@
|
|||||||
audioDeviceModule:(webrtc::AudioDeviceModule *)audioDeviceModule
|
audioDeviceModule:(webrtc::AudioDeviceModule *)audioDeviceModule
|
||||||
audioProcessingModule:
|
audioProcessingModule:
|
||||||
(rtc::scoped_refptr<webrtc::AudioProcessing>)audioProcessingModule {
|
(rtc::scoped_refptr<webrtc::AudioProcessing>)audioProcessingModule {
|
||||||
return [self initWithNativeAudioEncoderFactory:audioEncoderFactory
|
webrtc::PeerConnectionFactoryDependencies dependencies;
|
||||||
nativeAudioDecoderFactory:audioDecoderFactory
|
dependencies.audio_encoder_factory = std::move(audioEncoderFactory);
|
||||||
nativeVideoEncoderFactory:std::move(videoEncoderFactory)
|
dependencies.audio_decoder_factory = std::move(audioDecoderFactory);
|
||||||
nativeVideoDecoderFactory:std::move(videoDecoderFactory)
|
dependencies.video_encoder_factory = std::move(videoEncoderFactory);
|
||||||
audioDeviceModule:audioDeviceModule
|
dependencies.video_decoder_factory = std::move(videoDecoderFactory);
|
||||||
audioProcessingModule:audioProcessingModule
|
dependencies.adm = std::move(audioDeviceModule);
|
||||||
networkControllerFactory:nullptr];
|
if (audioProcessingModule != nullptr) {
|
||||||
|
dependencies.audio_processing_builder = CustomAudioProcessing(std::move(audioProcessingModule));
|
||||||
|
}
|
||||||
|
return [self initWithMediaAndDependencies:std::move(dependencies)];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initWithNativeAudioEncoderFactory:
|
- (instancetype)initWithNativeAudioEncoderFactory:
|
||||||
(rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory
|
(rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory
|
||||||
nativeAudioDecoderFactory:
|
nativeAudioDecoderFactory:
|
||||||
@ -188,35 +190,34 @@
|
|||||||
networkControllerFactory:
|
networkControllerFactory:
|
||||||
(std::unique_ptr<webrtc::NetworkControllerFactoryInterface>)
|
(std::unique_ptr<webrtc::NetworkControllerFactoryInterface>)
|
||||||
networkControllerFactory {
|
networkControllerFactory {
|
||||||
self = [self initNative];
|
webrtc::PeerConnectionFactoryDependencies dependencies;
|
||||||
if (self) {
|
dependencies.adm = std::move(audioDeviceModule);
|
||||||
webrtc::PeerConnectionFactoryDependencies dependencies;
|
dependencies.audio_encoder_factory = std::move(audioEncoderFactory);
|
||||||
dependencies.network_thread = _networkThread.get();
|
dependencies.audio_decoder_factory = std::move(audioDecoderFactory);
|
||||||
dependencies.worker_thread = _workerThread.get();
|
dependencies.video_encoder_factory = std::move(videoEncoderFactory);
|
||||||
dependencies.signaling_thread = _signalingThread.get();
|
dependencies.video_decoder_factory = std::move(videoDecoderFactory);
|
||||||
if (webrtc::field_trial::IsEnabled("WebRTC-Network-UseNWPathMonitor")) {
|
if (audioProcessingModule != nullptr) {
|
||||||
dependencies.network_monitor_factory = webrtc::CreateNetworkMonitorFactory();
|
dependencies.audio_processing_builder = CustomAudioProcessing(std::move(audioProcessingModule));
|
||||||
}
|
|
||||||
dependencies.trials = std::make_unique<webrtc::FieldTrialBasedConfig>();
|
|
||||||
dependencies.task_queue_factory =
|
|
||||||
webrtc::CreateDefaultTaskQueueFactory(dependencies.trials.get());
|
|
||||||
dependencies.adm = std::move(audioDeviceModule);
|
|
||||||
dependencies.audio_encoder_factory = std::move(audioEncoderFactory);
|
|
||||||
dependencies.audio_decoder_factory = std::move(audioDecoderFactory);
|
|
||||||
dependencies.video_encoder_factory = std::move(videoEncoderFactory);
|
|
||||||
dependencies.video_decoder_factory = std::move(videoDecoderFactory);
|
|
||||||
if (audioProcessingModule) {
|
|
||||||
dependencies.audio_processing = std::move(audioProcessingModule);
|
|
||||||
} else {
|
|
||||||
dependencies.audio_processing = webrtc::AudioProcessingBuilder().Create();
|
|
||||||
}
|
|
||||||
webrtc::EnableMedia(dependencies);
|
|
||||||
dependencies.event_log_factory = std::make_unique<webrtc::RtcEventLogFactory>();
|
|
||||||
dependencies.network_controller_factory = std::move(networkControllerFactory);
|
|
||||||
_nativeFactory = webrtc::CreateModularPeerConnectionFactory(std::move(dependencies));
|
|
||||||
NSAssert(_nativeFactory, @"Failed to initialize PeerConnectionFactory!");
|
|
||||||
}
|
}
|
||||||
return self;
|
dependencies.network_controller_factory = std::move(networkControllerFactory);
|
||||||
|
return [self initWithMediaAndDependencies:std::move(dependencies)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithMediaAndDependencies:
|
||||||
|
(webrtc::PeerConnectionFactoryDependencies)dependencies {
|
||||||
|
// audio_processing_builder should be used instead in new code.
|
||||||
|
RTC_CHECK(dependencies.audio_processing == nullptr);
|
||||||
|
#ifndef WEBRTC_EXCLUDE_AUDIO_PROCESSING_MODULE
|
||||||
|
if (dependencies.audio_processing_builder == nullptr) {
|
||||||
|
dependencies.audio_processing_builder =
|
||||||
|
std::make_unique<webrtc::BuiltinAudioProcessingBuilder>();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (dependencies.event_log_factory == nullptr) {
|
||||||
|
dependencies.event_log_factory = std::make_unique<webrtc::RtcEventLogFactory>();
|
||||||
|
}
|
||||||
|
webrtc::EnableMedia(dependencies);
|
||||||
|
return [self initWithNativeDependencies:std::move(dependencies)];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (RTC_OBJC_TYPE(RTCRtpCapabilities) *)rtpSenderCapabilitiesForKind:(NSString *)kind {
|
- (RTC_OBJC_TYPE(RTCRtpCapabilities) *)rtpSenderCapabilitiesForKind:(NSString *)kind {
|
||||||
|
|||||||
@ -14,6 +14,7 @@
|
|||||||
#include "api/audio/audio_processing.h"
|
#include "api/audio/audio_processing.h"
|
||||||
#include "api/audio_codecs/audio_decoder_factory.h"
|
#include "api/audio_codecs/audio_decoder_factory.h"
|
||||||
#include "api/audio_codecs/audio_encoder_factory.h"
|
#include "api/audio_codecs/audio_encoder_factory.h"
|
||||||
|
#include "api/field_trials_view.h"
|
||||||
#include "api/scoped_refptr.h"
|
#include "api/scoped_refptr.h"
|
||||||
#include "api/video_codecs/video_decoder_factory.h"
|
#include "api/video_codecs/video_decoder_factory.h"
|
||||||
#include "api/video_codecs/video_encoder_factory.h"
|
#include "api/video_codecs/video_encoder_factory.h"
|
||||||
@ -26,6 +27,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
|
|
||||||
- (RTC_OBJC_TYPE(RTCPeerConnectionFactory) *)createPeerConnectionFactory;
|
- (RTC_OBJC_TYPE(RTCPeerConnectionFactory) *)createPeerConnectionFactory;
|
||||||
|
|
||||||
|
- (void)setFieldTrials:(std::unique_ptr<webrtc::FieldTrialsView>)fieldTrials;
|
||||||
|
|
||||||
- (void)setVideoEncoderFactory:(std::unique_ptr<webrtc::VideoEncoderFactory>)videoEncoderFactory;
|
- (void)setVideoEncoderFactory:(std::unique_ptr<webrtc::VideoEncoderFactory>)videoEncoderFactory;
|
||||||
|
|
||||||
- (void)setVideoDecoderFactory:(std::unique_ptr<webrtc::VideoDecoderFactory>)videoDecoderFactory;
|
- (void)setVideoDecoderFactory:(std::unique_ptr<webrtc::VideoDecoderFactory>)videoDecoderFactory;
|
||||||
@ -38,6 +41,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
|
|
||||||
- (void)setAudioProcessingModule:(rtc::scoped_refptr<webrtc::AudioProcessing>)audioProcessingModule;
|
- (void)setAudioProcessingModule:(rtc::scoped_refptr<webrtc::AudioProcessing>)audioProcessingModule;
|
||||||
|
|
||||||
|
- (void)setAudioProcessingBuilder:
|
||||||
|
(std::unique_ptr<webrtc::AudioProcessingBuilderInterface>)audioProcessingBuilder;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@ -19,12 +19,7 @@
|
|||||||
#include "api/video_codecs/video_encoder_factory.h"
|
#include "api/video_codecs/video_encoder_factory.h"
|
||||||
|
|
||||||
@implementation RTCPeerConnectionFactoryBuilder {
|
@implementation RTCPeerConnectionFactoryBuilder {
|
||||||
std::unique_ptr<webrtc::VideoEncoderFactory> _videoEncoderFactory;
|
webrtc::PeerConnectionFactoryDependencies _dependencies;
|
||||||
std::unique_ptr<webrtc::VideoDecoderFactory> _videoDecoderFactory;
|
|
||||||
rtc::scoped_refptr<webrtc::AudioEncoderFactory> _audioEncoderFactory;
|
|
||||||
rtc::scoped_refptr<webrtc::AudioDecoderFactory> _audioDecoderFactory;
|
|
||||||
rtc::scoped_refptr<webrtc::AudioDeviceModule> _audioDeviceModule;
|
|
||||||
rtc::scoped_refptr<webrtc::AudioProcessing> _audioProcessingModule;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (RTCPeerConnectionFactoryBuilder *)builder {
|
+ (RTCPeerConnectionFactoryBuilder *)builder {
|
||||||
@ -32,41 +27,44 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (RTC_OBJC_TYPE(RTCPeerConnectionFactory) *)createPeerConnectionFactory {
|
- (RTC_OBJC_TYPE(RTCPeerConnectionFactory) *)createPeerConnectionFactory {
|
||||||
RTC_OBJC_TYPE(RTCPeerConnectionFactory) *factory =
|
return [[RTC_OBJC_TYPE(RTCPeerConnectionFactory) alloc]
|
||||||
[RTC_OBJC_TYPE(RTCPeerConnectionFactory) alloc];
|
initWithMediaAndDependencies:std::move(_dependencies)];
|
||||||
return [factory initWithNativeAudioEncoderFactory:_audioEncoderFactory
|
}
|
||||||
nativeAudioDecoderFactory:_audioDecoderFactory
|
|
||||||
nativeVideoEncoderFactory:std::move(_videoEncoderFactory)
|
- (void)setFieldTrials:(std::unique_ptr<webrtc::FieldTrialsView>)fieldTrials {
|
||||||
nativeVideoDecoderFactory:std::move(_videoDecoderFactory)
|
_dependencies.trials = std::move(fieldTrials);
|
||||||
audioDeviceModule:_audioDeviceModule.get()
|
|
||||||
audioProcessingModule:_audioProcessingModule];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setVideoEncoderFactory:(std::unique_ptr<webrtc::VideoEncoderFactory>)videoEncoderFactory {
|
- (void)setVideoEncoderFactory:(std::unique_ptr<webrtc::VideoEncoderFactory>)videoEncoderFactory {
|
||||||
_videoEncoderFactory = std::move(videoEncoderFactory);
|
_dependencies.video_encoder_factory = std::move(videoEncoderFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setVideoDecoderFactory:(std::unique_ptr<webrtc::VideoDecoderFactory>)videoDecoderFactory {
|
- (void)setVideoDecoderFactory:(std::unique_ptr<webrtc::VideoDecoderFactory>)videoDecoderFactory {
|
||||||
_videoDecoderFactory = std::move(videoDecoderFactory);
|
_dependencies.video_decoder_factory = std::move(videoDecoderFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setAudioEncoderFactory:
|
- (void)setAudioEncoderFactory:
|
||||||
(rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory {
|
(rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory {
|
||||||
_audioEncoderFactory = audioEncoderFactory;
|
_dependencies.audio_encoder_factory = std::move(audioEncoderFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setAudioDecoderFactory:
|
- (void)setAudioDecoderFactory:
|
||||||
(rtc::scoped_refptr<webrtc::AudioDecoderFactory>)audioDecoderFactory {
|
(rtc::scoped_refptr<webrtc::AudioDecoderFactory>)audioDecoderFactory {
|
||||||
_audioDecoderFactory = audioDecoderFactory;
|
_dependencies.audio_decoder_factory = std::move(audioDecoderFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setAudioDeviceModule:(rtc::scoped_refptr<webrtc::AudioDeviceModule>)audioDeviceModule {
|
- (void)setAudioDeviceModule:(rtc::scoped_refptr<webrtc::AudioDeviceModule>)audioDeviceModule {
|
||||||
_audioDeviceModule = audioDeviceModule;
|
_dependencies.adm = std::move(audioDeviceModule);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setAudioProcessingModule:
|
- (void)setAudioProcessingModule:
|
||||||
(rtc::scoped_refptr<webrtc::AudioProcessing>)audioProcessingModule {
|
(rtc::scoped_refptr<webrtc::AudioProcessing>)audioProcessingModule {
|
||||||
_audioProcessingModule = audioProcessingModule;
|
_dependencies.audio_processing_builder = CustomAudioProcessing(std::move(audioProcessingModule));
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setAudioProcessingBuilder:
|
||||||
|
(std::unique_ptr<webrtc::AudioProcessingBuilderInterface>)audioProcessingBuilder {
|
||||||
|
_dependencies.audio_processing_builder = std::move(audioProcessingBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@ -40,12 +40,7 @@ extern "C" {
|
|||||||
id factoryMock = OCMStrictClassMock([RTC_OBJC_TYPE(RTCPeerConnectionFactory) class]);
|
id factoryMock = OCMStrictClassMock([RTC_OBJC_TYPE(RTCPeerConnectionFactory) class]);
|
||||||
OCMExpect([factoryMock alloc]).andReturn(factoryMock);
|
OCMExpect([factoryMock alloc]).andReturn(factoryMock);
|
||||||
RTC_UNUSED([[[[factoryMock expect] andReturn:factoryMock] ignoringNonObjectArgs]
|
RTC_UNUSED([[[[factoryMock expect] andReturn:factoryMock] ignoringNonObjectArgs]
|
||||||
initWithNativeAudioEncoderFactory:nullptr
|
initWithMediaAndDependencies:webrtc::PeerConnectionFactoryDependencies()]);
|
||||||
nativeAudioDecoderFactory:nullptr
|
|
||||||
nativeVideoEncoderFactory:nullptr
|
|
||||||
nativeVideoDecoderFactory:nullptr
|
|
||||||
audioDeviceModule:nullptr
|
|
||||||
audioProcessingModule:nullptr]);
|
|
||||||
RTCPeerConnectionFactoryBuilder* builder = [[RTCPeerConnectionFactoryBuilder alloc] init];
|
RTCPeerConnectionFactoryBuilder* builder = [[RTCPeerConnectionFactoryBuilder alloc] init];
|
||||||
RTC_OBJC_TYPE(RTCPeerConnectionFactory)* peerConnectionFactory =
|
RTC_OBJC_TYPE(RTCPeerConnectionFactory)* peerConnectionFactory =
|
||||||
[builder createPeerConnectionFactory];
|
[builder createPeerConnectionFactory];
|
||||||
@ -57,12 +52,7 @@ extern "C" {
|
|||||||
id factoryMock = OCMStrictClassMock([RTC_OBJC_TYPE(RTCPeerConnectionFactory) class]);
|
id factoryMock = OCMStrictClassMock([RTC_OBJC_TYPE(RTCPeerConnectionFactory) class]);
|
||||||
OCMExpect([factoryMock alloc]).andReturn(factoryMock);
|
OCMExpect([factoryMock alloc]).andReturn(factoryMock);
|
||||||
RTC_UNUSED([[[[factoryMock expect] andReturn:factoryMock] ignoringNonObjectArgs]
|
RTC_UNUSED([[[[factoryMock expect] andReturn:factoryMock] ignoringNonObjectArgs]
|
||||||
initWithNativeAudioEncoderFactory:nullptr
|
initWithMediaAndDependencies:webrtc::PeerConnectionFactoryDependencies()]);
|
||||||
nativeAudioDecoderFactory:nullptr
|
|
||||||
nativeVideoEncoderFactory:nullptr
|
|
||||||
nativeVideoDecoderFactory:nullptr
|
|
||||||
audioDeviceModule:nullptr
|
|
||||||
audioProcessingModule:nullptr]);
|
|
||||||
RTCPeerConnectionFactoryBuilder* builder = [RTCPeerConnectionFactoryBuilder defaultBuilder];
|
RTCPeerConnectionFactoryBuilder* builder = [RTCPeerConnectionFactoryBuilder defaultBuilder];
|
||||||
RTC_OBJC_TYPE(RTCPeerConnectionFactory)* peerConnectionFactory =
|
RTC_OBJC_TYPE(RTCPeerConnectionFactory)* peerConnectionFactory =
|
||||||
[builder createPeerConnectionFactory];
|
[builder createPeerConnectionFactory];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user