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