@@ -67,9 +67,9 @@ @implementation RTC_OBJC_TYPE (RTCPeerConnectionFactory) {
67
67
68
68
@synthesize nativeFactory = _nativeFactory;
69
69
70
- - (rtc::scoped_refptr<webrtc::AudioDeviceModule>)audioDeviceModule {
70
+ - (rtc::scoped_refptr<webrtc::AudioDeviceModule>)audioDeviceModule : ( BOOL ) bypassVoiceProcessing {
71
71
#if defined(WEBRTC_IOS)
72
- return webrtc::CreateAudioDeviceModule ();
72
+ return webrtc::CreateAudioDeviceModule (bypassVoiceProcessing );
73
73
#else
74
74
return nullptr ;
75
75
#endif
@@ -86,7 +86,7 @@ - (instancetype)init {
86
86
RTCVideoEncoderFactoryH264) alloc ] init ])
87
87
nativeVideoDecoderFactory:webrtc: :ObjCToNativeVideoDecoderFactory ([[RTC_OBJC_TYPE (
88
88
RTCVideoDecoderFactoryH264) alloc ] init ])
89
- audioDeviceModule: [self audioDeviceModule ]
89
+ audioDeviceModule: [self audioDeviceModule: false ]
90
90
audioProcessingModule: nullptr ];
91
91
#endif
92
92
}
@@ -109,10 +109,36 @@ - (instancetype)init {
109
109
nativeAudioDecoderFactory:webrtc: :CreateBuiltinAudioDecoderFactory ()
110
110
nativeVideoEncoderFactory:std: :move (native_encoder_factory)
111
111
nativeVideoDecoderFactory:std: :move (native_decoder_factory)
112
- audioDeviceModule: [self audioDeviceModule ]
112
+ audioDeviceModule: [self audioDeviceModule: false ]
113
113
audioProcessingModule: nullptr ];
114
114
#endif
115
115
}
116
+
117
+ - (instancetype )
118
+ initWithBypassVoiceProcessing:(BOOL )bypassVoiceProcessing
119
+ encoderFactory : (nullable id <RTC_OBJC_TYPE(RTCVideoEncoderFactory)>)encoderFactory
120
+ decoderFactory :
121
+ (nullable id <RTC_OBJC_TYPE(RTCVideoDecoderFactory)>)decoderFactory {
122
+ #ifdef HAVE_NO_MEDIA
123
+ return [self initWithNoMedia ];
124
+ #else
125
+ std::unique_ptr<webrtc::VideoEncoderFactory> native_encoder_factory;
126
+ std::unique_ptr<webrtc::VideoDecoderFactory> native_decoder_factory;
127
+ if (encoderFactory) {
128
+ native_encoder_factory = webrtc::ObjCToNativeVideoEncoderFactory (encoderFactory);
129
+ }
130
+ if (decoderFactory) {
131
+ native_decoder_factory = webrtc::ObjCToNativeVideoDecoderFactory (decoderFactory);
132
+ }
133
+ return [self initWithNativeAudioEncoderFactory: webrtc: :CreateBuiltinAudioEncoderFactory ()
134
+ nativeAudioDecoderFactory:webrtc: :CreateBuiltinAudioDecoderFactory ()
135
+ nativeVideoEncoderFactory:std: :move (native_encoder_factory)
136
+ nativeVideoDecoderFactory:std: :move (native_decoder_factory)
137
+ audioDeviceModule: [self audioDeviceModule: bypassVoiceProcessing]
138
+ audioProcessingModule: nullptr ];
139
+ #endif
140
+ }
141
+
116
142
- (instancetype )initNative {
117
143
if (self = [super init ]) {
118
144
_networkThread = rtc::Thread::CreateWithSocketServer ();
0 commit comments