| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 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 @class RTCConfiguration; | 
|  | 14 @class RTCDataChannel; | 
|  | 15 @class RTCDataChannelConfiguration; | 
|  | 16 @class RTCIceCandidate; | 
|  | 17 @class RTCMediaConstraints; | 
|  | 18 @class RTCMediaStream; | 
|  | 19 @class RTCMediaStreamTrack; | 
|  | 20 @class RTCPeerConnectionFactory; | 
|  | 21 @class RTCSessionDescription; | 
|  | 22 @class RTCStatsReport; | 
|  | 23 | 
|  | 24 NS_ASSUME_NONNULL_BEGIN | 
|  | 25 | 
|  | 26 extern NSString * const kRTCPeerConnectionErrorDomain; | 
|  | 27 extern int const kRTCSessionDescriptionErrorCode; | 
|  | 28 | 
|  | 29 /** Represents the signaling state of the peer connection. */ | 
|  | 30 typedef NS_ENUM(NSInteger, RTCSignalingState) { | 
|  | 31   RTCSignalingStateStable, | 
|  | 32   RTCSignalingStateHaveLocalOffer, | 
|  | 33   RTCSignalingStateHaveLocalPrAnswer, | 
|  | 34   RTCSignalingStateHaveRemoteOffer, | 
|  | 35   RTCSignalingStateHaveRemotePrAnswer, | 
|  | 36   RTCSignalingStateClosed, | 
|  | 37 }; | 
|  | 38 | 
|  | 39 /** Represents the ice connection state of the peer connection. */ | 
|  | 40 typedef NS_ENUM(NSInteger, RTCIceConnectionState) { | 
|  | 41   RTCIceConnectionStateNew, | 
|  | 42   RTCIceConnectionStateChecking, | 
|  | 43   RTCIceConnectionStateConnected, | 
|  | 44   RTCIceConnectionStateCompleted, | 
|  | 45   RTCIceConnectionStateFailed, | 
|  | 46   RTCIceConnectionStateDisconnected, | 
|  | 47   RTCIceConnectionStateClosed, | 
|  | 48   RTCIceConnectionStateMax, | 
|  | 49 }; | 
|  | 50 | 
|  | 51 /** Represents the ice gathering state of the peer connection. */ | 
|  | 52 typedef NS_ENUM(NSInteger, RTCIceGatheringState) { | 
|  | 53   RTCIceGatheringStateNew, | 
|  | 54   RTCIceGatheringStateGathering, | 
|  | 55   RTCIceGatheringStateComplete, | 
|  | 56 }; | 
|  | 57 | 
|  | 58 /** Represents the stats output level. */ | 
|  | 59 typedef NS_ENUM(NSInteger, RTCStatsOutputLevel) { | 
|  | 60   RTCStatsOutputLevelStandard, | 
|  | 61   RTCStatsOutputLevelDebug, | 
|  | 62 }; | 
|  | 63 | 
|  | 64 @class RTCPeerConnection; | 
|  | 65 | 
|  | 66 @protocol RTCPeerConnectionDelegate <NSObject> | 
|  | 67 | 
|  | 68 /** Called when the SignalingState changed. */ | 
|  | 69 - (void)peerConnection:(RTCPeerConnection *)peerConnection | 
|  | 70     didChangeSignalingState:(RTCSignalingState)stateChanged; | 
|  | 71 | 
|  | 72 /** Called when media is received on a new stream from remote peer. */ | 
|  | 73 - (void)peerConnection:(RTCPeerConnection *)peerConnection | 
|  | 74           didAddStream:(RTCMediaStream *)stream; | 
|  | 75 | 
|  | 76 /** Called when a remote peer closes a stream. */ | 
|  | 77 - (void)peerConnection:(RTCPeerConnection *)peerConnection | 
|  | 78        didRemoveStream:(RTCMediaStream *)stream; | 
|  | 79 | 
|  | 80 /** Called when negotiation is needed, for example ICE has restarted. */ | 
|  | 81 - (void)peerConnectionShouldNegotiate:(RTCPeerConnection *)peerConnection; | 
|  | 82 | 
|  | 83 /** Called any time the IceConnectionState changes. */ | 
|  | 84 - (void)peerConnection:(RTCPeerConnection *)peerConnection | 
|  | 85     didChangeIceConnectionState:(RTCIceConnectionState)newState; | 
|  | 86 | 
|  | 87 /** Called any time the IceGatheringState changes. */ | 
|  | 88 - (void)peerConnection:(RTCPeerConnection *)peerConnection | 
|  | 89     didChangeIceGatheringState:(RTCIceGatheringState)newState; | 
|  | 90 | 
|  | 91 /** New ice candidate has been found. */ | 
|  | 92 - (void)peerConnection:(RTCPeerConnection *)peerConnection | 
|  | 93     didGenerateIceCandidate:(RTCIceCandidate *)candidate; | 
|  | 94 | 
|  | 95 /** New data channel has been opened. */ | 
|  | 96 - (void)peerConnection:(RTCPeerConnection *)peerConnection | 
|  | 97     didOpenDataChannel:(RTCDataChannel *)dataChannel; | 
|  | 98 | 
|  | 99 @end | 
|  | 100 | 
|  | 101 | 
|  | 102 @interface RTCPeerConnection : NSObject | 
|  | 103 | 
|  | 104 /** The object that will be notifed about events such as state changes and | 
|  | 105  *  streams being added or removed. | 
|  | 106  */ | 
|  | 107 @property(nonatomic, weak) id<RTCPeerConnectionDelegate> delegate; | 
|  | 108 @property(nonatomic, readonly) NSArray *localStreams; | 
|  | 109 @property(nonatomic, readonly, nullable) | 
|  | 110     RTCSessionDescription *localDescription; | 
|  | 111 @property(nonatomic, readonly, nullable) | 
|  | 112     RTCSessionDescription *remoteDescription; | 
|  | 113 @property(nonatomic, readonly) RTCSignalingState signalingState; | 
|  | 114 @property(nonatomic, readonly) RTCIceConnectionState iceConnectionState; | 
|  | 115 @property(nonatomic, readonly) RTCIceGatheringState iceGatheringState; | 
|  | 116 | 
|  | 117 - (instancetype)init NS_UNAVAILABLE; | 
|  | 118 | 
|  | 119 /** Initialize an RTCPeerConnection with a configuration, constraints, and | 
|  | 120  *  delegate. | 
|  | 121  */ | 
|  | 122 - (instancetype)initWithFactory:(RTCPeerConnectionFactory *)factory | 
|  | 123                   configuration:(RTCConfiguration *)configuration | 
|  | 124                     constraints:(RTCMediaConstraints *)constraints | 
|  | 125                        delegate:(id<RTCPeerConnectionDelegate>)delegate | 
|  | 126     NS_DESIGNATED_INITIALIZER; | 
|  | 127 | 
|  | 128 /** Terminate all media and close the transport. */ | 
|  | 129 - (void)close; | 
|  | 130 | 
|  | 131 /** Provide a remote candidate to the ICE Agent. */ | 
|  | 132 - (void)addIceCandidate:(RTCIceCandidate *)candidate; | 
|  | 133 | 
|  | 134 /** Add a new media stream to be sent on this peer connection. */ | 
|  | 135 - (void)addStream:(RTCMediaStream *)stream; | 
|  | 136 | 
|  | 137 /** Remove the given media stream from this peer connection. */ | 
|  | 138 - (void)removeStream:(RTCMediaStream *)stream; | 
|  | 139 | 
|  | 140 /** Generate an SDP offer. */ | 
|  | 141 - (void)offerForConstraints:(RTCMediaConstraints *)constraints | 
|  | 142           completionHandler:(void (^)(RTCSessionDescription *sdp, | 
|  | 143                                       NSError *error))completionHandler; | 
|  | 144 | 
|  | 145 /** Generate an SDP answer. */ | 
|  | 146 - (void)answerForConstraints:(RTCMediaConstraints *)constraints | 
|  | 147            completionHandler:(void (^)(RTCSessionDescription *sdp, | 
|  | 148                                        NSError *error))completionHandler; | 
|  | 149 | 
|  | 150 /** Apply the supplied RTCSessionDescription as the local description. */ | 
|  | 151 - (void)setLocalDescription:(RTCSessionDescription *)sdp | 
|  | 152           completionHandler:(void (^)(NSError *error))completionHandler; | 
|  | 153 | 
|  | 154 /** Apply the supplied RTCSessionDescription as the remote description. */ | 
|  | 155 - (void)setRemoteDescription:(RTCSessionDescription *)sdp | 
|  | 156            completionHandler:(void (^)(NSError *error))completionHandler; | 
|  | 157 | 
|  | 158 @end | 
|  | 159 | 
|  | 160 @interface RTCPeerConnection (DataChannel) | 
|  | 161 | 
|  | 162 /** Create a new data channel with the given label and configuration. */ | 
|  | 163 - (RTCDataChannel *)dataChannelForLabel:(NSString *)label | 
|  | 164     configuration:(RTCDataChannelConfiguration *)configuration; | 
|  | 165 | 
|  | 166 @end | 
|  | 167 | 
|  | 168 @interface RTCPeerConnection (Stats) | 
|  | 169 | 
|  | 170 /** Gather stats for the given RTCMediaStreamTrack. If |mediaStreamTrack| is nil | 
|  | 171  *  statistics are gathered for all tracks. | 
|  | 172  */ | 
|  | 173 - (void)statsForTrack: | 
|  | 174     (nullable RTCMediaStreamTrack *)mediaStreamTrack | 
|  | 175      statsOutputLevel:(RTCStatsOutputLevel)statsOutputLevel | 
|  | 176     completionHandler: | 
|  | 177     (void (^)(NSArray<RTCStatsReport *> *stats))completionHandler; | 
|  | 178 | 
|  | 179 @end | 
|  | 180 | 
|  | 181 NS_ASSUME_NONNULL_END | 
| OLD | NEW | 
|---|