| /* |
| * Copyright 2015 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 "RTCMacros.h" |
| |
| NS_ASSUME_NONNULL_BEGIN |
| |
| @class RTC_OBJC_TYPE(RTCAudioSource); |
| @class RTC_OBJC_TYPE(RTCAudioTrack); |
| @class RTC_OBJC_TYPE(RTCConfiguration); |
| @class RTC_OBJC_TYPE(RTCMediaConstraints); |
| @class RTC_OBJC_TYPE(RTCMediaStream); |
| @class RTC_OBJC_TYPE(RTCPeerConnection); |
| @class RTC_OBJC_TYPE(RTCVideoSource); |
| @class RTC_OBJC_TYPE(RTCVideoTrack); |
| @class RTC_OBJC_TYPE(RTCPeerConnectionFactoryOptions); |
| @protocol RTC_OBJC_TYPE |
| (RTCPeerConnectionDelegate); |
| @protocol RTC_OBJC_TYPE |
| (RTCVideoDecoderFactory); |
| @protocol RTC_OBJC_TYPE |
| (RTCVideoEncoderFactory); |
| @protocol RTC_OBJC_TYPE |
| (RTCSSLCertificateVerifier); |
| @protocol RTC_OBJC_TYPE |
| (RTCAudioDevice); |
| |
| RTC_OBJC_EXPORT |
| @interface RTC_OBJC_TYPE (RTCPeerConnectionFactory) : NSObject |
| |
| /* Initialize object with default H264 video encoder/decoder factories and default ADM */ |
| - (instancetype)init; |
| |
| /* Initialize object with injectable video encoder/decoder factories and default ADM */ |
| - (instancetype) |
| initWithEncoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoEncoderFactory)>)encoderFactory |
| decoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoDecoderFactory)>)decoderFactory; |
| |
| /* Initialize object with injectable video encoder/decoder factories and injectable ADM */ |
| - (instancetype) |
| initWithEncoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoEncoderFactory)>)encoderFactory |
| decoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoDecoderFactory)>)decoderFactory |
| audioDevice:(nullable id<RTC_OBJC_TYPE(RTCAudioDevice)>)audioDevice; |
| |
| /** Initialize an RTCAudioSource with constraints. */ |
| - (RTC_OBJC_TYPE(RTCAudioSource) *)audioSourceWithConstraints: |
| (nullable RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints; |
| |
| /** Initialize an RTCAudioTrack with an id. Convenience ctor to use an audio source |
| * with no constraints. |
| */ |
| - (RTC_OBJC_TYPE(RTCAudioTrack) *)audioTrackWithTrackId:(NSString *)trackId; |
| |
| /** Initialize an RTCAudioTrack with a source and an id. */ |
| - (RTC_OBJC_TYPE(RTCAudioTrack) *)audioTrackWithSource:(RTC_OBJC_TYPE(RTCAudioSource) *)source |
| trackId:(NSString *)trackId; |
| |
| /** Initialize a generic RTCVideoSource. The RTCVideoSource should be |
| * passed to a RTCVideoCapturer implementation, e.g. |
| * RTCCameraVideoCapturer, in order to produce frames. |
| */ |
| - (RTC_OBJC_TYPE(RTCVideoSource) *)videoSource; |
| |
| /** Initialize a generic RTCVideoSource with he posibility of marking |
| * it as usable for screen sharing. The RTCVideoSource should be |
| * passed to a RTCVideoCapturer implementation, e.g. |
| * RTCCameraVideoCapturer, in order to produce frames. |
| */ |
| - (RTC_OBJC_TYPE(RTCVideoSource) *)videoSourceForScreenCast:(BOOL)forScreenCast; |
| |
| /** Initialize an RTCVideoTrack with a source and an id. */ |
| - (RTC_OBJC_TYPE(RTCVideoTrack) *)videoTrackWithSource:(RTC_OBJC_TYPE(RTCVideoSource) *)source |
| trackId:(NSString *)trackId; |
| |
| /** Initialize an RTCMediaStream with an id. */ |
| - (RTC_OBJC_TYPE(RTCMediaStream) *)mediaStreamWithStreamId:(NSString *)streamId; |
| |
| /** Initialize an RTCPeerConnection with a configuration, constraints, and |
| * delegate. |
| */ |
| - (nullable RTC_OBJC_TYPE(RTCPeerConnection) *) |
| peerConnectionWithConfiguration:(RTC_OBJC_TYPE(RTCConfiguration) *)configuration |
| constraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints |
| delegate:(nullable id<RTC_OBJC_TYPE(RTCPeerConnectionDelegate)>)delegate; |
| |
| - (nullable RTC_OBJC_TYPE(RTCPeerConnection) *) |
| peerConnectionWithConfiguration:(RTC_OBJC_TYPE(RTCConfiguration) *)configuration |
| constraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints |
| certificateVerifier: |
| (id<RTC_OBJC_TYPE(RTCSSLCertificateVerifier)>)certificateVerifier |
| delegate:(nullable id<RTC_OBJC_TYPE(RTCPeerConnectionDelegate)>)delegate; |
| |
| /** Set the options to be used for subsequently created RTCPeerConnections */ |
| - (void)setOptions:(nonnull RTC_OBJC_TYPE(RTCPeerConnectionFactoryOptions) *)options; |
| |
| /** 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; |
| |
| @end |
| |
| NS_ASSUME_NONNULL_END |