1 /* 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #import <Foundation/Foundation.h> 12 13 #import "RTCMacros.h" 14 15 NS_ASSUME_NONNULL_BEGIN 16 17 @class RTC_OBJC_TYPE(RTCAudioSource); 18 @class RTC_OBJC_TYPE(RTCAudioTrack); 19 @class RTC_OBJC_TYPE(RTCConfiguration); 20 @class RTC_OBJC_TYPE(RTCMediaConstraints); 21 @class RTC_OBJC_TYPE(RTCMediaStream); 22 @class RTC_OBJC_TYPE(RTCPeerConnection); 23 @class RTC_OBJC_TYPE(RTCVideoSource); 24 @class RTC_OBJC_TYPE(RTCVideoTrack); 25 @class RTC_OBJC_TYPE(RTCPeerConnectionFactoryOptions); 26 @protocol RTC_OBJC_TYPE 27 (RTCPeerConnectionDelegate); 28 @protocol RTC_OBJC_TYPE 29 (RTCVideoDecoderFactory); 30 @protocol RTC_OBJC_TYPE 31 (RTCVideoEncoderFactory); 32 33 RTC_OBJC_EXPORT 34 @interface RTC_OBJC_TYPE (RTCPeerConnectionFactory) : NSObject 35 36 /* Initialize object with default H264 video encoder/decoder factories */ 37 - (instancetype)init; 38 39 /* Initialize object with injectable video encoder/decoder factories */ 40 - (instancetype) 41 initWithEncoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoEncoderFactory)>)encoderFactory 42 decoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoDecoderFactory)>)decoderFactory; 43 44 /** Initialize an RTCAudioSource with constraints. */ 45 - (RTC_OBJC_TYPE(RTCAudioSource) *)audioSourceWithConstraints: 46 (nullable RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints; 47 48 /** Initialize an RTCAudioTrack with an id. Convenience ctor to use an audio source 49 * with no constraints. 50 */ 51 - (RTC_OBJC_TYPE(RTCAudioTrack) *)audioTrackWithTrackId:(NSString *)trackId; 52 53 /** Initialize an RTCAudioTrack with a source and an id. */ 54 - (RTC_OBJC_TYPE(RTCAudioTrack) *)audioTrackWithSource:(RTC_OBJC_TYPE(RTCAudioSource) *)source 55 trackId:(NSString *)trackId; 56 57 /** Initialize a generic RTCVideoSource. The RTCVideoSource should be 58 * passed to a RTCVideoCapturer implementation, e.g. 59 * RTCCameraVideoCapturer, in order to produce frames. 60 */ 61 - (RTC_OBJC_TYPE(RTCVideoSource) *)videoSource; 62 63 /** Initialize an RTCVideoTrack with a source and an id. */ 64 - (RTC_OBJC_TYPE(RTCVideoTrack) *)videoTrackWithSource:(RTC_OBJC_TYPE(RTCVideoSource) *)source 65 trackId:(NSString *)trackId; 66 67 /** Initialize an RTCMediaStream with an id. */ 68 - (RTC_OBJC_TYPE(RTCMediaStream) *)mediaStreamWithStreamId:(NSString *)streamId; 69 70 /** Initialize an RTCPeerConnection with a configuration, constraints, and 71 * delegate. 72 */ 73 - (RTC_OBJC_TYPE(RTCPeerConnection) *) 74 peerConnectionWithConfiguration:(RTC_OBJC_TYPE(RTCConfiguration) *)configuration 75 constraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints 76 delegate:(nullable id<RTC_OBJC_TYPE(RTCPeerConnectionDelegate)>)delegate; 77 78 /** Set the options to be used for subsequently created RTCPeerConnections */ 79 - (void)setOptions:(nonnull RTC_OBJC_TYPE(RTCPeerConnectionFactoryOptions) *)options; 80 81 /** Start an AecDump recording. This API call will likely change in the future. */ 82 - (BOOL)startAecDumpWithFilePath:(NSString *)filePath maxSizeInBytes:(int64_t)maxSizeInBytes; 83 84 /* Stop an active AecDump recording */ 85 - (void)stopAecDump; 86 87 @end 88 89 NS_ASSUME_NONNULL_END 90