Adding injectable audio decoder and encoder factory support to the RTCPeerConnection obj-c layer.
Bug: webrtc:8093
Change-Id: I868ce5f75a72c6deb065dec60784289d045ae22a
Reviewed-on: https://chromium-review.googlesource.com/608981
Commit-Queue: Jeremy Newton-Smith <jeremyns@webrtc.org>
Reviewed-by: Zeke Chin <tkchin@webrtc.org>
Reviewed-by: Kári Tristan Helgason <kthelgason@webrtc.org>
Cr-Original-Commit-Position: refs/heads/master@{#19477}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 96de428fd1f301c3ad1355183b45e44db5ef3f7f
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 3809aa1..33797ce 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -310,9 +310,15 @@
rtc_static_library("objc_peerconnectionfactory") {
sources = [
+ "objc/Framework/Classes/PeerConnection/RTCBuiltinAudioDecoderFactory.mm",
+ "objc/Framework/Classes/PeerConnection/RTCBuiltinAudioEncoderFactory.mm",
"objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Private.h",
"objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm",
"objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm",
+ "objc/Framework/Headers/WebRTC/RTCAudioDecoderFactory.h",
+ "objc/Framework/Headers/WebRTC/RTCAudioEncoderFactory.h",
+ "objc/Framework/Headers/WebRTC/RTCBuiltinAudioDecoderFactory.h",
+ "objc/Framework/Headers/WebRTC/RTCBuiltinAudioEncoderFactory.h",
]
public_configs = [ ":objc_common_config" ]
@@ -331,6 +337,8 @@
":objc_videotoolbox",
":objc_videotracksource",
"../api:video_frame_api",
+ "../api/audio_codecs:builtin_audio_decoder_factory",
+ "../api/audio_codecs:builtin_audio_encoder_factory",
"../api/video_codecs:video_codecs_api",
"../media:rtc_audio_video",
"../media:rtc_media_base",
@@ -569,15 +577,16 @@
ios_framework_bundle("objc_framework") {
info_plist = "objc/Framework/Info.plist"
output_name = "WebRTC"
-
common_objc_headers = [
- "objc/Framework/Headers/WebRTC/RTCAudioSession.h",
- "objc/Framework/Headers/WebRTC/RTCVideoCodec.h",
- "objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h",
- "objc/Framework/Headers/WebRTC/RTCAudioSessionConfiguration.h",
"objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h",
+ "objc/Framework/Headers/WebRTC/RTCAudioDecoderFactory.h",
+ "objc/Framework/Headers/WebRTC/RTCAudioEncoderFactory.h",
+ "objc/Framework/Headers/WebRTC/RTCAudioSession.h",
+ "objc/Framework/Headers/WebRTC/RTCAudioSessionConfiguration.h",
"objc/Framework/Headers/WebRTC/RTCAudioSource.h",
"objc/Framework/Headers/WebRTC/RTCAudioTrack.h",
+ "objc/Framework/Headers/WebRTC/RTCBuiltinAudioDecoderFactory.h",
+ "objc/Framework/Headers/WebRTC/RTCBuiltinAudioEncoderFactory.h",
"objc/Framework/Headers/WebRTC/RTCCameraVideoCapturer.h",
"objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h",
"objc/Framework/Headers/WebRTC/RTCConfiguration.h",
@@ -609,6 +618,8 @@
"objc/Framework/Headers/WebRTC/RTCSessionDescription.h",
"objc/Framework/Headers/WebRTC/RTCTracing.h",
"objc/Framework/Headers/WebRTC/RTCVideoCapturer.h",
+ "objc/Framework/Headers/WebRTC/RTCVideoCodec.h",
+ "objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h",
"objc/Framework/Headers/WebRTC/RTCVideoFrame.h",
"objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h",
"objc/Framework/Headers/WebRTC/RTCVideoRenderer.h",
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCBuiltinAudioDecoderFactory.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCBuiltinAudioDecoderFactory.mm
new file mode 100644
index 0000000..e64fa09
--- /dev/null
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCBuiltinAudioDecoderFactory.mm
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import "WebRTC/RTCBuiltinAudioDecoderFactory.h"
+
+#include "webrtc/api/audio_codecs/builtin_audio_decoder_factory.h"
+#include "webrtc/rtc_base/scoped_ref_ptr.h"
+
+@implementation RTCBuiltinAudioDecoderFactory {
+ rtc::scoped_refptr<webrtc::AudioDecoderFactory> _nativeAudioDecoderFactory;
+}
+
+- (rtc::scoped_refptr<webrtc::AudioDecoderFactory>)nativeAudioDecoderFactory {
+ if (_nativeAudioDecoderFactory == nullptr) {
+ _nativeAudioDecoderFactory = webrtc::CreateBuiltinAudioDecoderFactory();
+ }
+ return _nativeAudioDecoderFactory;
+}
+
+@end
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCBuiltinAudioEncoderFactory.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCBuiltinAudioEncoderFactory.mm
new file mode 100644
index 0000000..0242c4e
--- /dev/null
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCBuiltinAudioEncoderFactory.mm
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import "WebRTC/RTCBuiltinAudioEncoderFactory.h"
+
+#include "webrtc/api/audio_codecs/builtin_audio_encoder_factory.h"
+#include "webrtc/rtc_base/scoped_ref_ptr.h"
+
+@implementation RTCBuiltinAudioEncoderFactory {
+ rtc::scoped_refptr<webrtc::AudioEncoderFactory> _nativeAudioEncoderFactory;
+}
+
+- (rtc::scoped_refptr<webrtc::AudioEncoderFactory>)nativeAudioEncoderFactory {
+ if (_nativeAudioEncoderFactory == nullptr) {
+ _nativeAudioEncoderFactory = webrtc::CreateBuiltinAudioEncoderFactory();
+ }
+ return _nativeAudioEncoderFactory;
+}
+
+@end
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm
index dffacb6..20fa86d 100644
--- a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm
@@ -19,9 +19,13 @@
#import "RTCPeerConnection+Private.h"
#import "RTCVideoSource+Private.h"
#import "RTCVideoTrack+Private.h"
+#import "WebRTC/RTCAudioDecoderFactory.h"
+#import "WebRTC/RTCAudioEncoderFactory.h"
#import "WebRTC/RTCLogging.h"
#import "WebRTC/RTCVideoCodecFactory.h"
#ifndef HAVE_NO_MEDIA
+#import "WebRTC/RTCBuiltinAudioDecoderFactory.h"
+#import "WebRTC/RTCBuiltinAudioEncoderFactory.h"
#import "WebRTC/RTCVideoCodecH264.h"
#endif
@@ -47,15 +51,22 @@
- (instancetype)init {
#ifdef HAVE_NO_MEDIA
- return [self initWithEncoderFactory:nil decoderFactory:nil];
+ return [self initWithAudioEncoderFactory:nil
+ audioDecoderFactory:nil
+ videoEncoderFactory:nil
+ videoDecoderFactory:nil];
#else
- return [self initWithEncoderFactory:[[RTCVideoEncoderFactoryH264 alloc] init]
- decoderFactory:[[RTCVideoDecoderFactoryH264 alloc] init]];
+ return [self initWithAudioEncoderFactory:[[RTCBuiltinAudioEncoderFactory alloc] init]
+ audioDecoderFactory:[[RTCBuiltinAudioDecoderFactory alloc] init]
+ videoEncoderFactory:[[RTCVideoEncoderFactoryH264 alloc] init]
+ videoDecoderFactory:[[RTCVideoDecoderFactoryH264 alloc] init]];
#endif
}
-- (instancetype)initWithEncoderFactory:(nullable id<RTCVideoEncoderFactory>)encoderFactory
- decoderFactory:(nullable id<RTCVideoDecoderFactory>)decoderFactory {
+- (instancetype)initWithAudioEncoderFactory:(id<RTCAudioEncoderFactory>)audioEncoderFactory
+ audioDecoderFactory:(id<RTCAudioDecoderFactory>)audioDecoderFactory
+ videoEncoderFactory:(id<RTCVideoEncoderFactory>)videoEncoderFactory
+ videoDecoderFactory:(id<RTCVideoDecoderFactory>)videoDecoderFactory {
if (self = [super init]) {
_networkThread = rtc::Thread::CreateWithSocketServer();
BOOL result = _networkThread->Start();
@@ -83,13 +94,21 @@
std::unique_ptr<webrtc::CallFactoryInterface>(),
std::unique_ptr<webrtc::RtcEventLogFactoryInterface>());
#else
- cricket::WebRtcVideoEncoderFactory *platform_encoder_factory = nullptr;
- cricket::WebRtcVideoDecoderFactory *platform_decoder_factory = nullptr;
- if (encoderFactory) {
- platform_encoder_factory = new webrtc::ObjCVideoEncoderFactory(encoderFactory);
+ rtc::scoped_refptr<webrtc::AudioEncoderFactory> platform_audio_encoder_factory = nullptr;
+ rtc::scoped_refptr<webrtc::AudioDecoderFactory> platform_audio_decoder_factory = nullptr;
+ if (audioEncoderFactory) {
+ platform_audio_encoder_factory = [audioEncoderFactory nativeAudioEncoderFactory];
}
- if (decoderFactory) {
- platform_decoder_factory = new webrtc::ObjCVideoDecoderFactory(decoderFactory);
+ if (audioDecoderFactory) {
+ platform_audio_decoder_factory = [audioDecoderFactory nativeAudioDecoderFactory];
+ }
+ cricket::WebRtcVideoEncoderFactory *platform_video_encoder_factory = nullptr;
+ cricket::WebRtcVideoDecoderFactory *platform_video_decoder_factory = nullptr;
+ if (videoEncoderFactory) {
+ platform_video_encoder_factory = new webrtc::ObjCVideoEncoderFactory(videoEncoderFactory);
+ }
+ if (videoDecoderFactory) {
+ platform_video_decoder_factory = new webrtc::ObjCVideoDecoderFactory(videoDecoderFactory);
}
// Ownership of encoder/decoder factories is passed on to the
@@ -97,9 +116,11 @@
_nativeFactory = webrtc::CreatePeerConnectionFactory(_networkThread.get(),
_workerThread.get(),
_signalingThread.get(),
- nullptr,
- platform_encoder_factory,
- platform_decoder_factory);
+ nullptr, // audio device module
+ platform_audio_encoder_factory,
+ platform_audio_decoder_factory,
+ platform_video_encoder_factory,
+ platform_video_decoder_factory);
#endif
NSAssert(_nativeFactory, @"Failed to initialize PeerConnectionFactory!");
}
@@ -121,15 +142,12 @@
return [self audioTrackWithSource:audioSource trackId:trackId];
}
-- (RTCAudioTrack *)audioTrackWithSource:(RTCAudioSource *)source
- trackId:(NSString *)trackId {
- return [[RTCAudioTrack alloc] initWithFactory:self
- source:source
- trackId:trackId];
+- (RTCAudioTrack *)audioTrackWithSource:(RTCAudioSource *)source trackId:(NSString *)trackId {
+ return [[RTCAudioTrack alloc] initWithFactory:self source:source trackId:trackId];
}
- (RTCAVFoundationVideoSource *)avFoundationVideoSourceWithConstraints:
- (nullable RTCMediaConstraints *)constraints {
+ (nullable RTCMediaConstraints *)constraints {
#ifdef HAVE_NO_MEDIA
return nil;
#else
@@ -146,32 +164,25 @@
objcVideoTrackSource)];
}
-- (RTCVideoTrack *)videoTrackWithSource:(RTCVideoSource *)source
- trackId:(NSString *)trackId {
- return [[RTCVideoTrack alloc] initWithFactory:self
- source:source
- trackId:trackId];
+- (RTCVideoTrack *)videoTrackWithSource:(RTCVideoSource *)source trackId:(NSString *)trackId {
+ return [[RTCVideoTrack alloc] initWithFactory:self source:source trackId:trackId];
}
- (RTCMediaStream *)mediaStreamWithStreamId:(NSString *)streamId {
- return [[RTCMediaStream alloc] initWithFactory:self
- streamId:streamId];
+ return [[RTCMediaStream alloc] initWithFactory:self streamId:streamId];
}
-- (RTCPeerConnection *)peerConnectionWithConfiguration:
- (RTCConfiguration *)configuration
- constraints:
- (RTCMediaConstraints *)constraints
+- (RTCPeerConnection *)peerConnectionWithConfiguration:(RTCConfiguration *)configuration
+ constraints:(RTCMediaConstraints *)constraints
delegate:
- (nullable id<RTCPeerConnectionDelegate>)delegate {
+ (nullable id<RTCPeerConnectionDelegate>)delegate {
return [[RTCPeerConnection alloc] initWithFactory:self
configuration:configuration
constraints:constraints
delegate:delegate];
}
-- (BOOL)startAecDumpWithFilePath:(NSString *)filePath
- maxSizeInBytes:(int64_t)maxSizeInBytes {
+- (BOOL)startAecDumpWithFilePath:(NSString *)filePath maxSizeInBytes:(int64_t)maxSizeInBytes {
RTC_DCHECK(filePath.length);
RTC_DCHECK_GT(maxSizeInBytes, 0);
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCAudioDecoderFactory.h b/sdk/objc/Framework/Headers/WebRTC/RTCAudioDecoderFactory.h
new file mode 100644
index 0000000..b6ad6d1
--- /dev/null
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCAudioDecoderFactory.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+namespace rtc
+{
+ template <class T>
+ class scoped_refptr;
+};
+
+namespace webrtc
+{
+ class AudioDecoderFactory;
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol RTCAudioDecoderFactory<NSObject>
+
+@property(nonatomic, readonly) rtc::scoped_refptr<webrtc::AudioDecoderFactory>
+ nativeAudioDecoderFactory;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCAudioEncoderFactory.h b/sdk/objc/Framework/Headers/WebRTC/RTCAudioEncoderFactory.h
new file mode 100644
index 0000000..956332a
--- /dev/null
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCAudioEncoderFactory.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+namespace rtc
+{
+ template <class T>
+ class scoped_refptr;
+};
+
+namespace webrtc
+{
+ class AudioEncoderFactory;
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol RTCAudioEncoderFactory<NSObject>
+
+@property(nonatomic, readonly) rtc::scoped_refptr<webrtc::AudioEncoderFactory>
+ nativeAudioEncoderFactory;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCBuiltinAudioDecoderFactory.h b/sdk/objc/Framework/Headers/WebRTC/RTCBuiltinAudioDecoderFactory.h
new file mode 100644
index 0000000..ba15c57
--- /dev/null
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCBuiltinAudioDecoderFactory.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "WebRTC/RTCAudioDecoderFactory.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface RTCBuiltinAudioDecoderFactory : NSObject<RTCAudioDecoderFactory>
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCBuiltinAudioEncoderFactory.h b/sdk/objc/Framework/Headers/WebRTC/RTCBuiltinAudioEncoderFactory.h
new file mode 100644
index 0000000..979933d
--- /dev/null
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCBuiltinAudioEncoderFactory.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "WebRTC/RTCAudioEncoderFactory.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface RTCBuiltinAudioEncoderFactory : NSObject<RTCAudioEncoderFactory>
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h b/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h
index c29b3c9..634e1ca 100644
--- a/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h
@@ -23,6 +23,8 @@
@class RTCPeerConnection;
@class RTCVideoSource;
@class RTCVideoTrack;
+@protocol RTCAudioEncoderFactory;
+@protocol RTCAudioDecoderFactory;
@protocol RTCPeerConnectionDelegate;
@protocol RTCVideoDecoderFactory;
@protocol RTCVideoEncoderFactory;
@@ -30,38 +32,40 @@
RTC_EXPORT
@interface RTCPeerConnectionFactory : NSObject
-/* Initialize object with default H264 video encoder/decoder factories */
+/* Initialize object with default audio and H264 video encoder/decoder factories
+ */
- (instancetype)init;
-/* Initialize object with injectable video encoder/decoder factories */
-- (instancetype)initWithEncoderFactory:(nullable id<RTCVideoEncoderFactory>)encoderFactory
- decoderFactory:(nullable id<RTCVideoDecoderFactory>)decoderFactory
+/* Initialize object with injectable audio/video encoder/decoder factories */
+- (instancetype)initWithAudioEncoderFactory:(nullable id<RTCAudioEncoderFactory>)audioEncoderFactory
+ audioDecoderFactory:(nullable id<RTCAudioDecoderFactory>)audioDecoderFactory
+ videoEncoderFactory:(nullable id<RTCVideoEncoderFactory>)videoEncoderFactory
+ videoDecoderFactory:(nullable id<RTCVideoDecoderFactory>)videoDecoderFactory
NS_DESIGNATED_INITIALIZER;
/** Initialize an RTCAudioSource with constraints. */
- (RTCAudioSource *)audioSourceWithConstraints:(nullable RTCMediaConstraints *)constraints;
-/** Initialize an RTCAudioTrack with an id. Convenience ctor to use an audio source with no
- * constraints.
+/** Initialize an RTCAudioTrack with an id. Convenience ctor to use an audio
+ * source with no constraints.
*/
- (RTCAudioTrack *)audioTrackWithTrackId:(NSString *)trackId;
/** Initialize an RTCAudioTrack with a source and an id. */
-- (RTCAudioTrack *)audioTrackWithSource:(RTCAudioSource *)source
- trackId:(NSString *)trackId;
+- (RTCAudioTrack *)audioTrackWithSource:(RTCAudioSource *)source trackId:(NSString *)trackId;
/** Initialize an RTCAVFoundationVideoSource with constraints. */
- (RTCAVFoundationVideoSource *)avFoundationVideoSourceWithConstraints:
- (nullable RTCMediaConstraints *)constraints;
+ (nullable RTCMediaConstraints *)constraints;
-/** Initialize a generic RTCVideoSource. The RTCVideoSource should be passed to a RTCVideoCapturer
- * implementation, e.g. RTCCameraVideoCapturer, in order to produce frames.
+/** Initialize a generic RTCVideoSource. The RTCVideoSource should be passed to
+ * a RTCVideoCapturer implementation, e.g. RTCCameraVideoCapturer, in order to
+ * produce frames.
*/
- (RTCVideoSource *)videoSource;
/** Initialize an RTCVideoTrack with a source and an id. */
-- (RTCVideoTrack *)videoTrackWithSource:(RTCVideoSource *)source
- trackId:(NSString *)trackId;
+- (RTCVideoTrack *)videoTrackWithSource:(RTCVideoSource *)source trackId:(NSString *)trackId;
/** Initialize an RTCMediaStream with an id. */
- (RTCMediaStream *)mediaStreamWithStreamId:(NSString *)streamId;
@@ -69,16 +73,14 @@
/** Initialize an RTCPeerConnection with a configuration, constraints, and
* delegate.
*/
-- (RTCPeerConnection *)peerConnectionWithConfiguration:
- (RTCConfiguration *)configuration
- constraints:
- (RTCMediaConstraints *)constraints
+- (RTCPeerConnection *)peerConnectionWithConfiguration:(RTCConfiguration *)configuration
+ constraints:(RTCMediaConstraints *)constraints
delegate:
- (nullable id<RTCPeerConnectionDelegate>)delegate;
+ (nullable id<RTCPeerConnectionDelegate>)delegate;
-/** Start an AecDump recording. This API call will likely change in the future. */
-- (BOOL)startAecDumpWithFilePath:(NSString *)filePath
- maxSizeInBytes:(int64_t)maxSizeInBytes;
+/** Start an AecDump recording. This API call will likely change in the future.
+ */
+- (BOOL)startAecDumpWithFilePath:(NSString *)filePath maxSizeInBytes:(int64_t)maxSizeInBytes;
/* Stop an active AecDump recording */
- (void)stopAecDump;
diff --git a/sdk/objc/Framework/Headers/WebRTC/WebRTC.h b/sdk/objc/Framework/Headers/WebRTC/WebRTC.h
index 64ca544..3012cf8 100644
--- a/sdk/objc/Framework/Headers/WebRTC/WebRTC.h
+++ b/sdk/objc/Framework/Headers/WebRTC/WebRTC.h
@@ -9,12 +9,16 @@
*/
#import <WebRTC/RTCAVFoundationVideoSource.h>
+#import <WebRTC/RTCAudioDecoderFactory.h>
+#import <WebRTC/RTCAudioEncoderFactory.h>
#if TARGET_OS_IPHONE
#import <WebRTC/RTCAudioSession.h>
#import <WebRTC/RTCAudioSessionConfiguration.h>
#endif
#import <WebRTC/RTCAudioSource.h>
#import <WebRTC/RTCAudioTrack.h>
+#import <WebRTC/RTCBuiltinAudioDecoderFactory.h>
+#import <WebRTC/RTCBuiltinAudioEncoderFactory.h>
#import <WebRTC/RTCCameraVideoCapturer.h>
#import <WebRTC/RTCVideoCapturer.h>
#if TARGET_OS_IPHONE