xref: /aosp_15_r20/external/webrtc/examples/objc/AppRTCMobile/ARDAppClient.h (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright 2014 The WebRTC Project Authors. All rights reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #import <Foundation/Foundation.h>
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #import "sdk/objc/api/peerconnection/RTCPeerConnection.h"
14*d9f75844SAndroid Build Coastguard Worker #import "sdk/objc/api/peerconnection/RTCVideoTrack.h"
15*d9f75844SAndroid Build Coastguard Worker 
16*d9f75844SAndroid Build Coastguard Worker typedef NS_ENUM(NSInteger, ARDAppClientState) {
17*d9f75844SAndroid Build Coastguard Worker   // Disconnected from servers.
18*d9f75844SAndroid Build Coastguard Worker   kARDAppClientStateDisconnected,
19*d9f75844SAndroid Build Coastguard Worker   // Connecting to servers.
20*d9f75844SAndroid Build Coastguard Worker   kARDAppClientStateConnecting,
21*d9f75844SAndroid Build Coastguard Worker   // Connected to servers.
22*d9f75844SAndroid Build Coastguard Worker   kARDAppClientStateConnected,
23*d9f75844SAndroid Build Coastguard Worker };
24*d9f75844SAndroid Build Coastguard Worker 
25*d9f75844SAndroid Build Coastguard Worker @class ARDAppClient;
26*d9f75844SAndroid Build Coastguard Worker @class ARDSettingsModel;
27*d9f75844SAndroid Build Coastguard Worker @class ARDExternalSampleCapturer;
28*d9f75844SAndroid Build Coastguard Worker @class RTC_OBJC_TYPE(RTCMediaConstraints);
29*d9f75844SAndroid Build Coastguard Worker @class RTC_OBJC_TYPE(RTCCameraVideoCapturer);
30*d9f75844SAndroid Build Coastguard Worker @class RTC_OBJC_TYPE(RTCFileVideoCapturer);
31*d9f75844SAndroid Build Coastguard Worker 
32*d9f75844SAndroid Build Coastguard Worker // The delegate is informed of pertinent events and will be called on the
33*d9f75844SAndroid Build Coastguard Worker // main queue.
34*d9f75844SAndroid Build Coastguard Worker @protocol ARDAppClientDelegate <NSObject>
35*d9f75844SAndroid Build Coastguard Worker 
36*d9f75844SAndroid Build Coastguard Worker - (void)appClient:(ARDAppClient *)client didChangeState:(ARDAppClientState)state;
37*d9f75844SAndroid Build Coastguard Worker 
38*d9f75844SAndroid Build Coastguard Worker - (void)appClient:(ARDAppClient *)client didChangeConnectionState:(RTCIceConnectionState)state;
39*d9f75844SAndroid Build Coastguard Worker 
40*d9f75844SAndroid Build Coastguard Worker - (void)appClient:(ARDAppClient *)client
41*d9f75844SAndroid Build Coastguard Worker     didCreateLocalCapturer:(RTC_OBJC_TYPE(RTCCameraVideoCapturer) *)localCapturer;
42*d9f75844SAndroid Build Coastguard Worker 
43*d9f75844SAndroid Build Coastguard Worker - (void)appClient:(ARDAppClient *)client
44*d9f75844SAndroid Build Coastguard Worker     didReceiveLocalVideoTrack:(RTC_OBJC_TYPE(RTCVideoTrack) *)localVideoTrack;
45*d9f75844SAndroid Build Coastguard Worker 
46*d9f75844SAndroid Build Coastguard Worker - (void)appClient:(ARDAppClient *)client
47*d9f75844SAndroid Build Coastguard Worker     didReceiveRemoteVideoTrack:(RTC_OBJC_TYPE(RTCVideoTrack) *)remoteVideoTrack;
48*d9f75844SAndroid Build Coastguard Worker 
49*d9f75844SAndroid Build Coastguard Worker - (void)appClient:(ARDAppClient *)client didError:(NSError *)error;
50*d9f75844SAndroid Build Coastguard Worker 
51*d9f75844SAndroid Build Coastguard Worker - (void)appClient:(ARDAppClient *)client didGetStats:(RTC_OBJC_TYPE(RTCStatisticsReport) *)stats;
52*d9f75844SAndroid Build Coastguard Worker 
53*d9f75844SAndroid Build Coastguard Worker @optional
54*d9f75844SAndroid Build Coastguard Worker - (void)appClient:(ARDAppClient *)client
55*d9f75844SAndroid Build Coastguard Worker     didCreateLocalFileCapturer:(RTC_OBJC_TYPE(RTCFileVideoCapturer) *)fileCapturer;
56*d9f75844SAndroid Build Coastguard Worker 
57*d9f75844SAndroid Build Coastguard Worker - (void)appClient:(ARDAppClient *)client
58*d9f75844SAndroid Build Coastguard Worker     didCreateLocalExternalSampleCapturer:(ARDExternalSampleCapturer *)externalSampleCapturer;
59*d9f75844SAndroid Build Coastguard Worker 
60*d9f75844SAndroid Build Coastguard Worker @end
61*d9f75844SAndroid Build Coastguard Worker 
62*d9f75844SAndroid Build Coastguard Worker // Handles connections to the AppRTC server for a given room. Methods on this
63*d9f75844SAndroid Build Coastguard Worker // class should only be called from the main queue.
64*d9f75844SAndroid Build Coastguard Worker @interface ARDAppClient : NSObject
65*d9f75844SAndroid Build Coastguard Worker 
66*d9f75844SAndroid Build Coastguard Worker // If `shouldGetStats` is true, stats will be reported in 1s intervals through
67*d9f75844SAndroid Build Coastguard Worker // the delegate.
68*d9f75844SAndroid Build Coastguard Worker @property(nonatomic, assign) BOOL shouldGetStats;
69*d9f75844SAndroid Build Coastguard Worker @property(nonatomic, readonly) ARDAppClientState state;
70*d9f75844SAndroid Build Coastguard Worker @property(nonatomic, weak) id<ARDAppClientDelegate> delegate;
71*d9f75844SAndroid Build Coastguard Worker @property(nonatomic, assign, getter=isBroadcast) BOOL broadcast;
72*d9f75844SAndroid Build Coastguard Worker 
73*d9f75844SAndroid Build Coastguard Worker // Convenience constructor since all expected use cases will need a delegate
74*d9f75844SAndroid Build Coastguard Worker // in order to receive remote tracks.
75*d9f75844SAndroid Build Coastguard Worker - (instancetype)initWithDelegate:(id<ARDAppClientDelegate>)delegate;
76*d9f75844SAndroid Build Coastguard Worker 
77*d9f75844SAndroid Build Coastguard Worker // Establishes a connection with the AppRTC servers for the given room id.
78*d9f75844SAndroid Build Coastguard Worker // `settings` is an object containing settings such as video codec for the call.
79*d9f75844SAndroid Build Coastguard Worker // If `isLoopback` is true, the call will connect to itself.
80*d9f75844SAndroid Build Coastguard Worker - (void)connectToRoomWithId:(NSString *)roomId
81*d9f75844SAndroid Build Coastguard Worker                    settings:(ARDSettingsModel *)settings
82*d9f75844SAndroid Build Coastguard Worker                  isLoopback:(BOOL)isLoopback;
83*d9f75844SAndroid Build Coastguard Worker 
84*d9f75844SAndroid Build Coastguard Worker // Disconnects from the AppRTC servers and any connected clients.
85*d9f75844SAndroid Build Coastguard Worker - (void)disconnect;
86*d9f75844SAndroid Build Coastguard Worker 
87*d9f75844SAndroid Build Coastguard Worker @end
88