Agora RTC Objective-C API Reference  Refactor
AgoraRtcEngineKit.h
Go to the documentation of this file.
1 //
2 // AgoraRtcEngineKit.h
3 // AgoraRtcEngineKit
4 //
5 // Copyright (c) 2018 Agora. All rights reserved.
6 //
7 
8 #import <Foundation/Foundation.h>
9 #import "AgoraConstants.h"
10 #import "AgoraObjects.h"
12 #import "AgoraBaseDelegate.h"
14 
19 @class AgoraRtcEngineKit;
20 
24 @protocol AgoraAudioFrameDelegate <NSObject>
25 @required
26 
42 - (BOOL)onRecordAudioFrame:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId NS_SWIFT_NAME(onRecordAudioFrame(_:channelId:));
43 
59 - (BOOL)onPlaybackAudioFrame:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId NS_SWIFT_NAME(onPlaybackAudioFrame(_:channelId:));
60 
76 - (BOOL)onMixedAudioFrame:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId NS_SWIFT_NAME(onMixedAudioFrame(_:channelId:));
77 
94 - (BOOL)onPlaybackAudioFrameBeforeMixing:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId uid:(NSUInteger)uid NS_SWIFT_NAME(onPlaybackAudioFrame(beforeMixing:channelId:uid:));
95 
112 
132 - (AgoraAudioParams* _Nonnull)getMixedAudioParams NS_SWIFT_NAME(getMixedAudioParams());
133 
155 - (AgoraAudioParams* _Nonnull)getRecordAudioParams NS_SWIFT_NAME(getRecordAudioParams());
156 
177 - (AgoraAudioParams* _Nonnull)getPlaybackAudioParams NS_SWIFT_NAME(getPlaybackAudioParams());
178 
179 @end
180 
181 @protocol AgoraAudioEncodedFrameDelegate <NSObject>
182 @required
183 
187 - (void)onRecordEncodedAudioFrame:(NSData* _Nonnull)frameData info:(AgoraEncodedAudioFrameInfo* _Nonnull) info;
188 
192 - (void)onPlaybackEncodedAudioFrame:(NSData* _Nonnull)frameData info:(AgoraEncodedAudioFrameInfo* _Nonnull) info;
193 
197 - (void)onMixedEncodedAudioFrame:(NSData* _Nonnull)frameData info:(AgoraEncodedAudioFrameInfo* _Nonnull) info;
198 @end
199 
200 @protocol AgoraEncodedVideoFrameDelegate <NSObject>
201 @optional
202 
207 - (BOOL)OnEncodedVideoFrameReceived:(NSData * _Nonnull )videoData length:(size_t)length info:(AgoraEncodedVideoFrameInfo * _Nonnull)videoFrameInfo;
208 @end
209 
210 @protocol AgoraVideoFrameDelegate <NSObject>
211 @optional
212 
229 - (BOOL)onCaptureVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame;
230 - (BOOL)onSecondaryCameraCaptureVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame;
231 
249 - (BOOL)onPreEncodeVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame;
250 
266 - (BOOL)onScreenCaptureVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame;
284 - (BOOL)onPreEncodeScreenVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame;
285 - (BOOL)onSecondaryScreenCaptureVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame;
286 - (BOOL)onTranscodedVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame;
287 
305 - (BOOL)onRenderVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame uid:(NSUInteger)uid channelId:(NSString * _Nonnull)channelId;
306 
323 - (BOOL)onMediaPlayerVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame mediaPlayerId:(NSInteger)mediaPlayerId;
324 
329 - (BOOL)getRotationApplied;
330 
337 - (BOOL)getMirrorApplied;
338 
344 
350 
369 
370 @end
371 
372 @protocol AgoraRtcMediaPlayerDelegate <NSObject>
373 
374 @optional
375 
376 
385 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
386  didChangedToState:(AgoraMediaPlayerState)state
387  error:(AgoraMediaPlayerError)error;
388 
398 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
399  didChangedToPosition:(NSInteger)position;
400 
408 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
409  didOccurEvent:(AgoraMediaPlayerEvent)eventCode
410  elapsedTime:(NSInteger)elapsedTime
411  message:(NSString *_Nullable)message;
412 
424 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
425  didReceiveData:(NSString *_Nullable)data
426  length:(NSInteger)length;
427 
434 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
435  didPlayBufferUpdated:(NSInteger)playCachedBuffer;
436 
443 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
444  didPreloadEvent:(AgoraMediaPlayerPreloadEvent)event;
445 
452 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit playerSrcInfoDidChange:(AgoraMediaPlayerSrcInfo *_Nonnull)to from:(AgoraMediaPlayerSrcInfo *_Nonnull)from;
453 
459 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit infoUpdated:(AgoraMediaPlayerUpdatedInfo *_Nonnull)info;
460 
466 
472 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
473  volumeIndicationDidReceive:(NSInteger)volume;
474 @end
475 
476 
478 @optional
489 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
490  didReceiveVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame;
491 
502 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
503  didReceivePixelBuffer:(CVPixelBufferRef _Nonnull)pixelBuffer;
504 
510 
511 @end
512 
513 
515 
526 - (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
527  didReceiveAudioFrame:(AgoraAudioFrame* _Nonnull)audioFrame;
528 
529 @end
530 
531 
537 
538  @optional
539 
546 - (void)onDirectCdnStreamingStateChanged:(AgoraDirectCdnStreamingState)state
547  error:(AgoraDirectCdnStreamingError)error
548  message:(NSString *_Nullable)message;
549 
550 - (void)onDirectCdnStreamingStats:(AgoraDirectCdnStreamingStats *_Nonnull)stats;
551 
552 @end
553 
558 @protocol AgoraMediaMetadataDataSource <NSObject>
559 @required
560 
570 - (NSInteger)metadataMaxSize;
571 
584 - (NSData * _Nullable)readyToSendMetadataAtTimestamp:(NSTimeInterval)timestamp sourceType:(AgoraVideoSourceType)sourceType;
585 
586 @end
587 
591 @protocol AgoraMediaMetadataDelegate <NSObject>
592 @required
593 
600 - (void)receiveMetadata:(NSData * _Nonnull)data fromUser:(NSInteger)uid atTimestamp:(NSTimeInterval)timestamp;
601 
602 @end
603 
610 @protocol AgoraRtcEngineDelegate <NSObject>
611 @optional
612 
613 #pragma mark Delegate Methods
614 
623 #pragma mark Core Delegate Methods
624 
637 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didOccurWarning:(AgoraWarningCode)warningCode;
638 
647 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didOccurError:(AgoraErrorCode)errorCode;
648 
653 - (void)rtcEngineMediaEngineDidLoaded:(AgoraRtcEngineKit * _Nonnull)engine;
654 
659 - (void)rtcEngineMediaEngineDidStartCall:(AgoraRtcEngineKit * _Nonnull)engine;
660 
661 
675 - (void)rtcEngineRequestToken:(AgoraRtcEngineKit * _Nonnull)engine;
676 
690 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine tokenPrivilegeWillExpire:(NSString *_Nonnull)token;
691 
692 
699 - (void)rtcEngineConnectionDidInterrupted:(AgoraRtcEngineKit * _Nonnull)engine;
700 
701 
710 - (void)rtcEngineConnectionDidLost:(AgoraRtcEngineKit * _Nonnull)engine;
711 
712 
719 - (void)rtcEngineConnectionDidBanned:(AgoraRtcEngineKit * _Nonnull)engine;
720 
727 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine networkTypeChanged:(AgoraNetworkType)type;
728 
735 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine permissionError:(AgoraPermissionType)type;
736 
744 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine connectionStateChanged:(AgoraConnectionState)state reason:(AgoraConnectionChangedReason)reason;
745 
754 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine wlAccMessage:(AgoraWlAccReason)reason action:(AgoraWlAccAction)action wlAccMsg:(NSString * _Nonnull)wlAccMsg;
755 
763 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine wlAccStats:(AgoraWlAccStats * _Nonnull)currentStats averageStats:(AgoraWlAccStats * _Nonnull)averageStats;
764 
773 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine reportRtcStats:(AgoraChannelStats * _Nonnull)stats;
774 
775 
783 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine lastmileQuality:(AgoraNetworkQuality)quality;
784 
785 
793 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine lastmileProbeTestResult:(AgoraLastmileProbeResult * _Nonnull)result;
794 
803 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didApiCallExecute:(NSInteger)error api:(NSString * _Nonnull)api result:(NSString * _Nonnull)result;
804 
805 
806 #if (!(TARGET_OS_IPHONE) && (TARGET_OS_MAC))
807 
820 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine device:(NSString * _Nonnull)deviceId type:(AgoraMediaDeviceType)deviceType stateChanged:(NSInteger) state;
821 
822 #endif
823 
828 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didOccurEncryptionError:(AgoraEncryptionErrorType)errorType;
835 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine uploadLogResultRequestId:(NSString * _Nonnull)requestId success:(BOOL)success reason:(AgoraUploadErrorReason)reason;
836 
837 #pragma mark Local User Core Delegate Methods
838 
852 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didJoinChannel:(NSString * _Nonnull)channel withUid:(NSUInteger)uid elapsed:(NSInteger) elapsed;
853 
867 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didRejoinChannel:(NSString * _Nonnull)channel withUid:(NSUInteger)uid elapsed:(NSInteger) elapsed;
868 
876 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didClientRoleChanged:(AgoraClientRole)oldRole newRole:(AgoraClientRole)newRole;
877 
885 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didClientRoleChangeFailed:(AgoraClientRoleChangeFailedReason)reason currentRole:(AgoraClientRole)currentRole;
886 
899 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didLeaveChannelWithStats:(AgoraChannelStats * _Nonnull)stats;
900 
901 
911 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine networkQuality:(NSUInteger)uid txQuality:(AgoraNetworkQuality)txQuality rxQuality:(AgoraNetworkQuality)rxQuality;
912 
913 
914 #pragma mark Local User Audio Delegate Methods
915 
926 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstLocalAudioFramePublished:(NSInteger)elapsed;
927 
935 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine localAudioStats:(AgoraRtcLocalAudioStats * _Nonnull)stats;
936 
950 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine localAudioStateChanged:(AgoraAudioLocalState)state error:(AgoraAudioLocalError)error;
951 
959 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didAudioRouteChanged:(AgoraAudioOutputRouting)routing;
960 
967 - (void)rtcEngineLocalAudioMixingDidFinish:(AgoraRtcEngineKit * _Nonnull)engine;
968 
976 - (void)rtcEngineDidAudioEffectFinish:(AgoraRtcEngineKit * _Nonnull)engine soundId:(int)soundId;
977 
978 
979 #pragma mark Local User Video Delegate Methods
980 
991 - (void)rtcEngineCameraDidReady:(AgoraRtcEngineKit * _Nonnull)engine;
992 
993 #if TARGET_OS_IPHONE
994 
1000 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine cameraFocusDidChangedToRect:(CGRect)rect;
1001 
1007 - (void)rtcEngine:(AgoraRtcEngineKit* _Nonnull)engine cameraExposureDidChangedToRect:(CGRect)rect;
1008 
1009 #endif
1010 
1017 - (void)rtcEngineVideoDidStop:(AgoraRtcEngineKit * _Nonnull)engine;
1018 
1024 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstLocalVideoFramePublishedWithElapsed:(NSInteger)elapsed sourceType:(AgoraVideoSourceType)sourceType;
1025 
1035 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstLocalVideoFrameWithSize:(CGSize)size elapsed:(NSInteger)elapsed sourceType:(AgoraVideoSourceType)sourceType;
1036 
1051 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine localVideoStats:(AgoraRtcLocalVideoStats * _Nonnull)stats sourceType:(AgoraVideoSourceType)sourceType;
1052 
1063 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didLocalPublishFallbackToAudioOnly:(BOOL)isFallbackOrRecover;
1064 
1065 
1066 #pragma mark Remote User Core Delegate Methods
1067 
1092 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didJoinedOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed;
1093 
1110 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didOfflineOfUid:(NSUInteger)uid reason:(AgoraUserOfflineReason)reason;
1111 
1112 
1122 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine receiveStreamMessageFromUid:(NSUInteger)uid streamId:(NSInteger)streamId data:(NSData * _Nonnull)data;
1123 
1136 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didOccurStreamMessageErrorFromUid:(NSUInteger)uid streamId:(NSInteger)streamId error:(NSInteger)error missed:(NSInteger)missed cached:(NSInteger)cached;
1137 
1138 
1139 #pragma mark Remote User Audio Delegate Methods
1140 
1153 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstRemoteAudioFrameOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed;
1154 
1155 
1174 - (void)rtcEngine:(AgoraRtcEngineKit* _Nonnull)engine firstRemoteAudioFrameDecodedOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed;
1175 
1184 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine remoteAudioStats:(AgoraRtcRemoteAudioStats * _Nonnull)stats;
1185 
1192 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didAudioMuted:(BOOL)muted byUid:(NSUInteger)uid;
1193 
1194 
1226 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine reportAudioVolumeIndicationOfSpeakers:(NSArray<AgoraRtcAudioVolumeInfo *> * _Nonnull)speakers totalVolume:(NSInteger)totalVolume;
1227 
1228 
1245 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine activeSpeaker:(NSUInteger)speakerUid;
1246 
1253 - (void)rtcEngineRemoteAudioMixingDidStart:(AgoraRtcEngineKit * _Nonnull)engine;
1254 
1259 - (void)rtcEngineRemoteAudioMixingDidFinish:(AgoraRtcEngineKit * _Nonnull)engine;
1260 
1269 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine audioQualityOfUid:(NSUInteger)uid quality:(AgoraNetworkQuality)quality delay:(NSUInteger)delay lost:(NSUInteger)lost;
1270 
1281 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine audioTransportStatsOfUid:(NSUInteger)uid delay:(NSUInteger)delay lost:(NSUInteger)lost rxKBitRate:(NSUInteger)rxKBitRate;
1282 
1283 
1287 - (void)rtcEngineIntraRequestReceived:(AgoraRtcEngineKit *_Nonnull)engine;
1288 
1293 - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine uplinkNetworkInfoUpdate:(AgoraUplinkNetworkInfo *_Nonnull)networkInfo;
1294 
1299 - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine downlinkNetworkInfoUpdate:(AgoraDownlinkNetworkInfo *_Nonnull)networkInfo;
1300 
1311  - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine didAudioSubscribeStateChange:(NSString * _Nonnull)channelId
1312  uid:(unsigned int)uid
1313  oldState:(AgoraStreamSubscribeState)oldState
1314  newState:(AgoraStreamSubscribeState)newState
1315 elapseSinceLastState:(int)elapseSinceLastState;
1316 
1325  - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine didAudioPublishStateChange:(NSString * _Nonnull)channelId
1326  oldState:(AgoraStreamPublishState)oldState
1327  newState:(AgoraStreamPublishState)newState
1328 elapseSinceLastState:(int)elapseSinceLastState;
1329 
1330 #pragma mark String UID
1331 
1338 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didLocalUserRegisteredWithUserId:(NSUInteger)uid userAccount:(NSString * _Nonnull)userAccount;
1339 
1349 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didUserInfoUpdatedWithUserId:(NSUInteger)uid userInfo:(AgoraUserInfo* _Nonnull)userInfo;
1350 
1351 #pragma mark Rhythm Player Delegates Methods
1352 
1353 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didRhythmPlayerStateChanged:(AgoraRhythmPlayerState)state
1354  errorCode:(AgoraRhythmPlayerError)errorCode;
1355 
1356 #pragma mark Remote User Video Delegates Methods
1357 
1378 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstRemoteVideoDecodedOfUid:(NSUInteger)uid size:(CGSize)size elapsed:(NSInteger)elapsed __deprecated;
1379 
1387 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstRemoteVideoFrameOfUid:(NSUInteger)uid size:(CGSize)size elapsed:(NSInteger)elapsed;
1388 
1396 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine videoSizeChangedOfUid:(NSUInteger)uid size:(CGSize)size rotation:(NSInteger)rotation;
1397 - (void)rtcEngine:(AgoraRtcEngineKit* _Nonnull)engine contentInspectResult:(AgoraContentInspectResult)result;
1398 - (void)rtcEngine:(AgoraRtcEngineKit* _Nonnull)engine snapshotTaken:(NSUInteger)uid filePath:(NSString* _Nonnull)filePath width:(NSInteger)width height:(NSInteger)height errCode:(NSInteger)errCode;
1411 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine localVideoStateChangedOfState:(AgoraVideoLocalState)state error:(AgoraLocalVideoStreamError)error sourceType:(AgoraVideoSourceType)sourceType;
1412 
1424 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine remoteVideoStateChangedOfUid:(NSUInteger)uid state:(AgoraVideoRemoteState)state reason:(AgoraVideoRemoteReason)reason elapsed:(NSInteger)elapsed;
1425 
1435 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine remoteAudioStateChangedOfUid:(NSUInteger)uid state:(AgoraAudioRemoteState)state reason:(AgoraAudioRemoteReason)reason elapsed:(NSInteger)elapsed;
1436 
1445 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
1446 channelMediaRelayStateDidChange:(AgoraChannelMediaRelayState)state
1447  error:(AgoraChannelMediaRelayError)error;
1448 
1454 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
1455 didReceiveChannelMediaRelayEvent:(AgoraChannelMediaRelayEvent)event;
1456 
1469 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didVideoMuted:(BOOL)muted byUid:(NSUInteger)uid __deprecated_msg("use rtcEngine:remoteVideoStateChangedOfUid:state:reason: instead.");
1470 
1485 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didVideoEnabled:(BOOL)enabled byUid:(NSUInteger)uid __deprecated_msg("use rtcEngine:remoteVideoStateChangedOfUid:state:reason: instead.");
1486 
1497 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didLocalVideoEnabled:(BOOL)enabled byUid:(NSUInteger)uid __deprecated_msg("use rtcEngine:remoteVideoStateChangedOfUid:state:reason: instead.");
1498 
1507 - (void)rtcEngine:(AgoraRtcEngineKit* _Nonnull)engine didProxyConnected:(NSString* _Nonnull)channel withUid:(NSUInteger)uid proxyType:(AgoraProxyType)proxyType localProxyIp:(NSString* _Nonnull)localProxyIp elapsed:(NSInteger)elapsed;
1508 
1516 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine remoteUserStateChangedOfUid:(NSUInteger)uid state:(NSUInteger)state;
1517 
1529 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine remoteVideoStats:(AgoraRtcRemoteVideoStats * _Nonnull)stats;
1530 
1531 
1544 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didRemoteSubscribeFallbackToAudioOnly:(BOOL)isFallbackOrRecover byUid:(NSUInteger)uid;
1545 
1556 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine videoTransportStatsOfUid:(NSUInteger)uid delay:(NSUInteger)delay lost:(NSUInteger)lost rxKBitRate:(NSUInteger)rxKBitRate;
1557 
1568  - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine didVideoSubscribeStateChange:(NSString * _Nonnull)channelId
1569  uid:(unsigned int)uid
1570  oldState:(AgoraStreamSubscribeState)oldState
1571  newState:(AgoraStreamSubscribeState)newState
1572 elapseSinceLastState:(int)elapseSinceLastState;
1573 
1584  - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine didVideoPublishStateChange:(NSString * _Nonnull)channelId
1585  sourceType:(AgoraVideoSourceType)sourceType
1586  oldState:(AgoraStreamPublishState)oldState
1587  newState:(AgoraStreamPublishState)newState
1588 elapseSinceLastState:(int)elapseSinceLastState;
1589 
1590 #pragma mark Stream Publish Delegate Methods
1591 
1615 - (void)rtcEngine:(AgoraRtcEngineKit* _Nonnull)engine rtmpStreamingChangedToState:(NSString* _Nonnull)url state:(AgoraRtmpStreamingState)state errCode:(AgoraRtmpStreamingErrorCode)errCode;
1616 
1625 - (void)rtcEngine:(AgoraRtcEngineKit* _Nonnull)engine rtmpStreamingEventWithUrl:(NSString* _Nonnull)url eventCode:(AgoraRtmpStreamingEvent)eventCode;
1626 
1627 
1634 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine streamPublishedWithUrl:(NSString * _Nonnull)url errorCode:(AgoraErrorCode)errorCode;
1635 
1641 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine streamUnpublishedWithUrl:(NSString * _Nonnull)url;
1642 
1647 - (void)rtcEngineTranscodingUpdated:(AgoraRtcEngineKit * _Nonnull)engine;
1648 
1656 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine streamInjectedStatusOfUrl:(NSString * _Nonnull)url uid:(NSUInteger)uid status:(AgoraInjectStreamStatus)status;
1657 
1663 - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine audioMixingStateChanged:(AgoraAudioMixingStateType)state
1664  reasonCode:(AgoraAudioMixingReasonCode)reasonCode;
1665 
1666 #if TARGET_OS_IPHONE
1667 #pragma mark Face Detection Delegate Methods
1668 
1695 - (void)rtcEngine:(AgoraRtcEngineKit* _Nonnull)engine facePositionDidChangeWidth:(int)width previewHeight:(int)height faces:(NSArray<AgoraFacePositionInfo*>* _Nullable)faces NS_SWIFT_NAME(rtcEngine(_:facePositionDidChangeWidth:previewHeight:faces:));
1696 #endif
1697 
1698 #pragma mark - Unavailable Delegate Methods
1699 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine localVideoStateChangedOfState:(AgoraVideoLocalState)state error:(AgoraLocalVideoStreamError)error __attribute__((availability(ios,deprecated=7_0,message="Use rtcEngine:localVideoStateChangedOfState:error:sourceType instead.")));
1700 
1701 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine localVideoStats:(AgoraRtcLocalVideoStats * _Nonnull)stats __attribute__((availability(ios,deprecated=7_0,message="Use rtcEngine:localVideoStats:sourceType instead.")));
1702 
1703 - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine didVideoPublishStateChange:(NSString * _Nonnull)channelId
1704  oldState:(AgoraStreamPublishState)oldState
1705  newState:(AgoraStreamPublishState)newState
1706 elapseSinceLastState:(int)elapseSinceLastState __attribute__((availability(ios,deprecated=7_0,message="Use rtcEngine:didVideoPublishStateChange:sourceType:oldState:newState:elapseSinceLastState: instead.")));
1707 
1708 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstLocalVideoFramePublishedWithElapsed:(NSInteger)elapsed __attribute__((availability(ios,deprecated=7_0,message="Use rtcEngine:firstLocalVideoFramePublishedWithElapsed:sourceType: instead.")));
1709 
1710 @end
1711 
1712 #pragma mark - AgoraRtcEngineKit
1713 
1724 __attribute__((visibility("default"))) @interface AgoraRtcEngineKit : NSObject
1725 
1726 #pragma mark Core Methods
1727 
1739 @property(nonatomic, weak) id<AgoraRtcEngineDelegate> _Nullable delegate;
1740 
1803 - (int)joinChannelByToken:(NSString * _Nullable)token
1804  channelId:(NSString * _Nonnull)channelId
1805  info:(NSString * _Nullable)info
1806  uid:(NSUInteger)uid
1807  joinSuccess:(void(^ _Nullable)(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed))joinSuccessBlock;
1808 
1869 - (int)joinChannelByToken:(NSString * _Nullable)token
1870  channelId:(NSString * _Nonnull)channelId
1871  uid:(NSUInteger)uid
1872  mediaOptions:(AgoraRtcChannelMediaOptions * _Nonnull)mediaOptions
1873  joinSuccess:(void(^ _Nullable)(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed))joinSuccessBlock;
1874 
1875 - (int)startMultipleVideoStreams:(VIEW_CLASS * _Nonnull)view screen:(VIEW_CLASS * _Nonnull)screenView remotes:(NSArray * _Nullable)remoteViews;
1876 
1877 
1903 - (int)leaveChannel:(void(^ _Nullable)(AgoraChannelStats * _Nonnull stat))leaveChannelBlock;
1904 
1931 - (int)leaveChannel:(AgoraLeaveChannelOptions * _Nonnull)options
1932  leaveChannelBlock:(void (^ _Nullable)(AgoraChannelStats * _Nonnull))leaveChannelBlock;
1933 
1951 - (int)setChannelProfile:(AgoraChannelProfile)profile;
1952 
1961 - (int)updateChannelWithMediaOptions:(AgoraRtcChannelMediaOptions* _Nonnull)mediaOptions;
1962 
1978 - (int)setClientRole:(AgoraClientRole)role;
1979 
2007 - (int)setClientRole:(AgoraClientRole)role options:(AgoraClientRoleOptions * _Nullable)options;
2008 
2025 - (int)renewToken:(NSString * _Nonnull)token;
2026 
2033 
2054 - (int)startChannelMediaRelay:(AgoraChannelMediaRelayConfiguration * _Nonnull)config;
2055 
2072 - (int)updateChannelMediaRelay:(AgoraChannelMediaRelayConfiguration * _Nonnull)config;
2073 
2085 - (int)stopChannelMediaRelay;
2086 
2093 
2100 
2115 - (int)enableWirelessAccelerate:(BOOL)enabled;
2116 
2117 #if (!(TARGET_OS_IPHONE) && (TARGET_OS_MAC))
2118 
2119 - (int)startLocalVideoTranscoder:(AgoraLocalTranscoderConfiguration* _Nonnull)config;
2120 
2121 - (int)updateLocalTranscoderConfiguration:(AgoraLocalTranscoderConfiguration* _Nonnull)config;
2122 
2123 - (int)stopLocalVideoTranscoder;
2124 
2125 #endif
2126 
2136 - (int)enableWebSdkInteroperability:(BOOL)enabled __deprecated;
2137 
2152 + (instancetype _Nonnull)sharedEngineWithAppId:(NSString * _Nonnull)appId
2153  delegate:(id<AgoraRtcEngineDelegate> _Nullable)delegate;
2154 
2175 + (instancetype _Nonnull)sharedEngineWithConfig:(AgoraRtcEngineConfig * _Nonnull)config
2176  delegate:(id<AgoraRtcEngineDelegate> _Nullable)delegate;
2177 
2194 + (void)destroy;
2195 
2196 #pragma mark Core Audio
2197 
2216 - (int)enableAudio;
2217 
2229 - (int)disableAudio;
2230 
2253 - (int)enableLocalAudio:(BOOL)enabled;
2254 
2270 - (int)setAudioProfile:(AgoraAudioProfile)profile;
2271 
2272 - (int)setAudioScenario:(AgoraAudioScenario)scenario;
2273 
2295 - (int)enableAudioVolumeIndication:(NSInteger)interval
2296  smooth:(NSInteger)smooth
2297  reportVad:(BOOL)reportVad;
2298 
2299 
2300 #if TARGET_OS_IPHONE
2301 
2318 - (int)setEnableSpeakerphone:(BOOL)enableSpeaker;
2319 
2329 - (BOOL)isSpeakerphoneEnabled;
2330 
2358 - (int)setDefaultAudioRouteToSpeakerphone:(BOOL)defaultToSpeaker;
2359 #endif
2360 
2372 - (int)adjustRecordingSignalVolume:(NSInteger)volume;
2373 
2385 - (int)adjustPlaybackSignalVolume:(NSInteger)volume;
2386 
2406 - (int)adjustUserPlaybackSignalVolume:(NSUInteger)uid volume:(int)volume;
2407 
2416 -(int)muteRecordingSignal:(BOOL)muted;
2417 
2428 - (int)muteLocalAudioStream:(BOOL)mute;
2429 
2443 - (int)muteRemoteAudioStream:(NSUInteger)uid mute:(BOOL)mute;
2444 
2470 - (int)muteAllRemoteAudioStreams:(BOOL)mute;
2471 
2486 - (int)setDefaultMuteAllRemoteAudioStreams:(BOOL)mute __deprecated;
2487 
2488 - (int)enableExtensionWithVendor:(NSString * __nonnull)provider extension:(NSString * __nonnull)extension enabled:(BOOL)enabled;
2489 
2504 - (int)enableExtensionWithVendor:(NSString * __nonnull)provider
2505  extension:(NSString * __nonnull)extension
2506  enabled:(BOOL)enabled
2507  sourceType:(AgoraMediaSourceType)sourceType;
2508 
2520 - (int)setExtensionProviderPropertyWithVendor:(NSString * __nonnull)provider
2521  key:(NSString * __nonnull)key
2522  value:(NSString * __nonnull)value;
2523 
2524 - (int)setExtensionPropertyWithVendor:(NSString * __nonnull)provider
2525  extension:(NSString * __nonnull)extension
2526  key:(NSString * __nonnull)key
2527  value:(NSString * __nonnull)value;
2528 
2542 - (int)setExtensionPropertyWithVendor:(NSString * __nonnull)provider
2543  extension:(NSString * __nonnull)extension
2544  key:(NSString * __nonnull)key
2545  value:(NSString * __nonnull)value
2546  sourceType:(AgoraMediaSourceType)sourceType;
2547 
2558 - (NSString * _Nullable)getExtensionPropertyWithVendor:(NSString * __nonnull)provider
2559  extension:(NSString * __nonnull)extension
2560  key:(NSString * __nonnull)key;
2561 
2573 - (NSString * _Nullable)getExtensionPropertyWithVendor:(NSString * __nonnull)provider
2574  extension:(NSString * __nonnull)extension
2575  key:(NSString * __nonnull)key
2576  sourceType:(AgoraMediaSourceType)sourceType;
2577 
2578 #if (!(TARGET_OS_IPHONE) && (TARGET_OS_MAC))
2579 
2600 - (int)enableLoopbackRecording:(BOOL)enabled deviceName:(NSString* _Nullable)deviceName;
2601 
2614 - (int)adjustLoopbackSignalVolume:(NSInteger)volume;
2615 
2622 - (int)getLoopbackRecordingVolume;
2623 
2624 #endif
2625 
2626 #pragma mark Core Video
2627 
2648 - (int)enableVideo;
2649 
2659 - (int)disableVideo;
2660 
2686 - (int)enableLocalVideo:(BOOL)enabled;
2687 
2688 
2705 - (int)setVideoEncoderConfiguration:(AgoraVideoEncoderConfiguration * _Nonnull)config;
2706 
2707 
2727 - (int)setupLocalVideo:(AgoraRtcVideoCanvas * _Nullable)local;
2728 
2732 - (int)setLocalVideoMirrorMode:(AgoraVideoMirrorMode)mode __deprecated;
2733 
2737 - (int)setLocalRenderMode:(NSUInteger)uid
2738  mode:(AgoraVideoRenderMode) mode __deprecated;
2739 
2758 - (int)setLocalRenderMode:(AgoraVideoRenderMode)mode
2759  mirror:(AgoraVideoMirrorMode)mirror;
2760 
2773 - (int)startPreview;
2774 
2782 - (int)stopPreview;
2783 
2784 
2795 - (int)setupRemoteVideo:(AgoraRtcVideoCanvas * _Nonnull)remote;
2796 
2806 - (int)setRemoteRenderMode:(NSUInteger)uid
2807  mode:(AgoraVideoRenderMode)mode
2808  mirror:(AgoraVideoMirrorMode)mirror;
2809 
2810 
2823 - (int)muteLocalVideoStream:(BOOL)mute;
2824 
2850 - (int)muteAllRemoteVideoStreams:(BOOL)mute;
2851 
2866 - (int)setDefaultMuteAllRemoteVideoStreams:(BOOL)mute __deprecated;
2867 
2883 - (int)muteRemoteVideoStream:(NSUInteger)uid
2884  mute:(BOOL)mute;
2885 
2899 - (int)setBeautyEffectOptions:(BOOL)enable options:(AgoraBeautyOptions* _Nullable)options;
2924 - (int)setVideoDenoiserOptions:(BOOL)enable options:(AgoraVideoDenoiserOptions* _Nullable)options NS_SWIFT_NAME(setVideoDenoiserOptions(_:options:));
2949 - (int)setLowlightEnhanceOptions:(BOOL)enable options:(AgoraLowlightEnhanceOptions* _Nullable)options NS_SWIFT_NAME(setLowlightEnhanceOptions(_:options:));
2974 - (int)setColorEnhanceOptions:(BOOL)enable options:(AgoraColorEnhanceOptions* _Nullable)options NS_SWIFT_NAME(setColorEnhanceOptions(_:options:));
2975 
3023 - (int)enableVirtualBackground:(BOOL)enable backData:(AgoraVirtualBackgroundSource* _Nullable)backData segData:(AgoraSegmentationProperty* _Nullable)segData;
3024 
3025 #if TARGET_OS_IPHONE
3026 
3082 - (int)enableRemoteSuperResolution:(NSUInteger)uid enable:(BOOL)enable;
3083 #endif
3084 #pragma mark Audio Effect
3085 
3100 - (int)setLocalVoicePitch:(double)pitch;
3101 
3109 - (int)setLocalVoiceEqualizationOfBandFrequency:(AgoraAudioEqualizationBandFrequency)bandFrequency withGain:(NSInteger)gain;
3110 
3118 - (int)setLocalVoiceReverbOfType:(AgoraAudioReverbType)reverbType withValue:(NSInteger)value;
3119 
3120 #pragma mark Audio Effect Playback
3121 
3150 - (int)preloadEffect:(int)soundId
3151  filePath:(NSString* _Nonnull)filePath;
3152 
3178 - (int)preloadEffect:(int)soundId
3179  filePath:(NSString* _Nonnull)filePath
3180  startPos:(int)startPos;
3181 
3205 - (int)playEffect:(int)soundId
3206  filePath:(NSString* _Nonnull)filePath
3207  loopCount:(NSInteger)loopCount
3208  pitch:(double)pitch
3209  pan:(double)pan
3210  gain:(NSInteger)gain;
3211 
3236 - (int)playEffect:(int)soundId
3237  filePath:(NSString* _Nonnull)filePath
3238  loopCount:(NSInteger)loopCount
3239  pitch:(double)pitch
3240  pan:(double)pan
3241  gain:(NSInteger)gain
3242  startPos:(int)startPos;
3243 
3275 - (int)playEffect:(int)soundId
3276  filePath:(NSString* _Nonnull)filePath
3277  loopCount:(NSInteger)loopCount
3278  pitch:(double)pitch
3279  pan:(double)pan
3280  gain:(NSInteger)gain
3281  publish:(BOOL)publish;
3282 
3315 - (int)playEffect:(int)soundId
3316  filePath:(NSString* _Nonnull)filePath
3317  loopCount:(NSInteger)loopCount
3318  pitch:(double)pitch
3319  pan:(double)pan
3320  gain:(NSInteger)gain
3321  publish:(BOOL)publish
3322  startPos:(int)startPos;
3323 
3354 - (int)playAllEffectsWithLoopCount:(NSInteger)loopCount
3355  pitch:(double)pitch
3356  pan:(double)pan
3357  gain:(NSInteger)gain
3358  publish:(BOOL)publish;
3359 
3367 - (int)getEffectsVolume;
3368 
3378 - (int)setEffectsVolume:(NSInteger)volume;
3379 
3390 - (int)setVolumeOfEffect:(int)soundId
3391  withVolume:(int)volume;
3392 
3402 - (int)getVolumeOfEffect:(int)soundId;
3403 
3411 - (int)pauseEffect:(int)soundId;
3412 
3418 - (int)pauseAllEffects;
3419 
3427 - (int)resumeEffect:(int)soundId;
3428 
3434 - (int)resumeAllEffects;
3435 
3443 - (int)stopEffect:(int)soundId;
3444 
3451 - (int)stopAllEffects;
3452 
3469 - (int)getEffectDuration:(NSString* _Nonnull)filePath NS_SWIFT_NAME(getEffectDuration(_:));
3484 - (int)setEffectPosition:(int)soundId pos:(NSInteger)pos NS_SWIFT_NAME(setEffectPosition(_:pos:));
3495 - (int)getEffectCurrentPosition:(int)soundId NS_SWIFT_NAME(getEffectCurrentPosition(_:));
3496 
3497 
3498 
3499 
3507 - (int)unloadEffect:(int)soundId;
3508 
3515 - (int)unloadAllEffects;
3516 
3517 #pragma mark beautifier effect
3518 
3555 - (int)setVoiceBeautifierPreset:(AgoraVoiceBeautifierPreset)preset;
3556 
3594 - (int)setAudioEffectPreset:(AgoraAudioEffectPreset)preset;
3595 
3633 - (int)setVoiceConversionPreset:(AgoraVoiceConversionPreset)preset;
3634 
3710 - (int)setAudioEffectParameters:(AgoraAudioEffectPreset)preset param1:(int)param1 param2:(int)param2;
3711 
3754 - (int)setVoiceBeautifierParameters:(AgoraVoiceBeautifierPreset)preset param1:(int)param1 param2:(int)param2;
3755 
3768 - (int)setVoiceConversionParameters:(AgoraVoiceConversionPreset)preset param1:(int)param1 param2:(int)param2;
3769 
3770 
3771 
3772 #pragma mark Sound Position Indication
3773 
3792 - (int)enableSoundPositionIndication:(BOOL)enabled;
3793 
3817 - (int)setRemoteVoicePosition:(NSUInteger)uid pan:(double)pan gain:(double)gain;
3818 
3829 - (int)enableSpatialAudio:(BOOL)enabled;
3830 
3846 - (int)setRemoteUserSpatialAudioParams:(NSUInteger)uid
3847  params:(AgoraSpatialAudioParams* _Nonnull)params;
3848 
3849 
3850 #pragma mark Audio Mixing
3851 
3888 - (int)startAudioMixing:(NSString * _Nonnull)filePath
3889  loopback:(BOOL)loopback
3890  cycle:(NSInteger)cycle;
3891 
3924 - (int)startAudioMixing:(NSString * _Nonnull)filePath
3925  loopback:(BOOL)loopback
3926  cycle:(NSInteger)cycle
3927  startPos:(NSInteger)startPos;
3928 
3938 - (int)stopAudioMixing;
3939 
3948 - (int)pauseAudioMixing;
3949 
3959 - (int)resumeAudioMixing;
3960 
3969 - (int)selectAudioTrack:(NSInteger)index;
3978 - (int)getAudioTrackCount;
3979 
3990 - (int)adjustAudioMixingVolume:(NSInteger)volume;
3991 
3992 
4001 - (int)adjustAudioMixingPublishVolume:(NSInteger)volume;
4002 
4011 - (int)getAudioMixingPublishVolume;
4012 
4021 - (int)adjustAudioMixingPlayoutVolume:(NSInteger)volume;
4022 
4031 - (int)getAudioMixingPlayoutVolume;
4032 
4033 
4043 - (int)getAudioMixingDuration;
4044 
4053 - (int)getAudioMixingCurrentPosition;
4054 
4065 - (int)setAudioMixingPosition:(NSInteger)pos;
4066 
4077 - (int)setAudioMixingDualMonoMode:(AgoraAudioMixingDualMonoMode)mode;
4078 
4088 - (int)setAudioMixingPitch:(NSInteger)pitch;
4089 
4090 #pragma mark Audio Recording
4091 
4112 - (int)startAudioRecording:(NSString * _Nonnull)filePath
4113  quality:(AgoraAudioRecordingQuality)quality;
4114 
4138 - (int)startAudioRecordingWithConfig:(AgoraAudioRecordingConfiguration * _Nonnull)config;
4139 
4140 - (int)setAudioEncodedFrameDelegate:(id<AgoraAudioEncodedFrameDelegate> _Nullable)delegate config:(AgoraAudioEncodedFrameDelegateConfig * _Nonnull) config;
4148 - (int)stopAudioRecording;
4149 
4150 #pragma mark Echo Test
4151 
4169 - (int)startEchoTest:(void(^ _Nullable)(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed))successBlock;
4170 
4187 - (int)startEchoTestWithInterval:(NSInteger)interval
4188  successBlock:(void(^ _Nullable)(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed))successBlock;
4189 
4197 - (int)startEchoTestWithConfig:(AgoraEchoTestConfiguration* _Nonnull)config;
4198 
4206 - (int)stopEchoTest;
4207 
4208 
4209 #pragma mark Miscellaneous Audio Control
4210 
4226 - (int)enableInEarMonitoring:(BOOL)enabled;
4227 
4239 - (int)enableInEarMonitoring:(BOOL)enabled includeAudioFilters:(AgoraEarMonitoringFilterType)includeAudioFilters;
4240 
4252 - (int)setInEarMonitoringVolume:(NSInteger)volume;
4253 
4254 #if TARGET_OS_IPHONE
4255 
4264 - (void)setAudioSessionOperationRestriction:(AgoraAudioSessionOperationRestriction)restriction;
4265 
4266 #endif
4267 
4268 #pragma mark Dual Video Mode
4269 
4285 - (int)enableDualStreamMode:(BOOL)enabled;
4286 
4303 - (int)enableDualStreamMode:(AgoraVideoSourceType)sourceType enabled:(BOOL)enabled;
4304 
4323 - (int)enableDualStreamMode:(AgoraVideoSourceType)sourceType
4324  enabled:(BOOL)enabled
4325  streamConfig:(AgoraSimulcastStreamConfig* _Nonnull)streamConfig;
4326 
4336 - (int)setDualStreamMode:(AgoraSimulcastStreamMode)mode;
4337 
4354 - (int)setDualStreamMode:(AgoraVideoSourceType)sourceType mode:(AgoraSimulcastStreamMode)mode;
4355 
4374 - (int)setDualStreamMode:(AgoraVideoSourceType)sourceType
4375  mode:(AgoraSimulcastStreamMode)mode
4376  streamConfig:(AgoraSimulcastStreamConfig* _Nonnull)streamConfig;
4396 - (int)setRemoteVideoStream:(NSUInteger)uid
4397  type:(AgoraVideoStreamType)streamType;
4398 
4409 - (int)setRemoteVideo:(NSUInteger)uid
4410  SubscriptionOptions:(AgoraVideoSubscriptionOptions* _Nonnull) options;
4421 - (int)setRemoteDefaultVideoStreamType:(AgoraVideoStreamType)streamType;
4422 
4423 #pragma mark Subscribe Blacklist / Whitelist
4424 
4438 - (int)setSubscribeAudioBlacklist:(NSArray <NSNumber *> *_Nonnull)blacklist;
4439 
4455 - (int)setSubscribeAudioWhitelist:(NSArray <NSNumber *> *_Nonnull)whitelist;
4456 
4470 - (int)setSubscribeVideoBlacklist:(NSArray <NSNumber *> *_Nonnull)blacklist;
4471 
4487 - (int)setSubscribeVideoWhitelist:(NSArray <NSNumber *> *_Nonnull)whitelist;
4488 
4489 #pragma mark Stream Fallback
4490 
4513 - (int)setLocalPublishFallbackOption:(AgoraStreamFallbackOptions)option;
4514 
4526 - (int)setRemoteSubscribeFallbackOption:(AgoraStreamFallbackOptions)option;
4527 
4528 #pragma mark Video Quality Control
4529 
4545 - (int)setVideoQualityParameters:(BOOL)preferFrameRateOverImageQuality;
4546 
4547 #pragma mark External Media Source
4548 
4573 - (void)setExternalVideoSource:(BOOL)enable useTexture:(BOOL)useTexture sourceType:(AgoraExternalVideoSourceType)sourceType;
4574 
4594 - (void)setExternalVideoSource:(BOOL)enable useTexture:(BOOL)useTexture
4595  sourceType:(AgoraExternalVideoSourceType)sourceType
4596  encodedVideoTrackOption:(AgoraEncodedVideoTrackOptions* _Nonnull)encodedVideoTrackOption;
4597 
4611 - (int)pushExternalEncodedVideoFrame:(NSData* _Nonnull)frame
4612  info:(AgoraEncodedVideoFrameInfo * _Nonnull)info;
4613 
4631 - (BOOL)pushExternalVideoFrame:(AgoraVideoFrame * _Nonnull)frame;
4632 
4633 
4641 - (unsigned int)createCustomVideoTrack;
4642 
4650 - (unsigned int)createCustomEncodedVideoTrack:(AgoraEncodedVideoTrackOptions* _Nonnull)encodedVideoTrackOption;
4651 
4660 - (int)destroyCustomVideoTrack:(NSUInteger)position;
4661 
4670 - (int)destroyCustomEncodedVideoTrack:(NSUInteger)position;
4671 
4672 #pragma mark External Audio Data
4673 
4686 - (void)enableExternalAudioSink:(BOOL)enabled
4687  sampleRate:(NSUInteger)sampleRate
4688  channels:(NSUInteger)channels;
4689 
4706 - (BOOL)pullPlaybackAudioFrameRawData:(void * _Nonnull)data
4707  lengthInByte:(NSUInteger)lengthInByte;
4708 
4727 - (CMSampleBufferRef _Nullable)pullPlaybackAudioFrameSampleBufferByLengthInByte:(NSUInteger)lengthInByte;
4728 
4729 
4748 - (int)setExternalAudioSource:(BOOL)enabled
4749  sampleRate:(NSInteger)sampleRate
4750  channels:(NSInteger)channels;
4751 
4752 - (int)enableEchoCancellationExternal:(BOOL)enabled
4753  audioSourceDelay:(NSInteger)audioSourceDelay;
4773 - (int)setExternalAudioSource:(BOOL)enabled
4774  sampleRate:(NSInteger)sampleRate
4775  channels:(NSInteger)channels
4776  sourceNumber:(NSInteger)sourceNumber
4777  localPlayback:(BOOL)localPlayback
4778  publish:(BOOL)publish;
4779 
4794 - (int)enableCustomAudioLocalPlayback:(NSInteger)sourceId enabled:(BOOL)enabled;
4795 
4805 - (int)pushExternalAudioFrameRawData:(void * _Nonnull)data
4806  samples:(NSInteger)samples
4807  sourceId:(NSInteger)sourceId
4808  timestamp:(NSTimeInterval)timestamp;
4809 
4823 - (int)pushExternalAudioFrameRawData:(void* _Nonnull)data
4824  samples:(NSInteger)samples
4825  sampleRate:(NSInteger)sampleRate
4826  channels:(NSInteger)channels
4827  sourceId:(NSInteger)sourceId
4828  timestamp:(NSTimeInterval)timestamp;
4837 - (int)pushExternalAudioFrameSampleBuffer:(CMSampleBufferRef _Nonnull)sampleBuffer;
4838 
4839 - (int)pushCaptureAudioFrame:(AgoraAudioFrame* _Nonnull)audioFrame;
4840 
4841 - (int)pushReverseAudioFrame:(AgoraAudioFrame* _Nonnull)audioFrame;
4849 - (int)setDirectExternalAudioSource:(BOOL)enabled;
4850 
4859 - (int)setDirectExternalAudioSource:(BOOL)enabled localPlayback:(BOOL)localPlayback;
4860 
4868 - (int)pushDirectAudioFrameNSData:(NSData* _Nonnull)data;
4869 
4882 - (int)pushDirectAudioFrameRawData:(void* _Nonnull)data
4883  samples:(NSInteger)samples
4884  sampleRate:(NSInteger)sampleRate
4885  channels:(NSInteger)channels;
4886 
4897 - (int)enableExternalAudioSourceLocalPlayback:(BOOL)enable;
4898 
4922 - (int)setRecordingAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
4923  channel:(NSInteger)channel
4925  samplesPerCall:(NSInteger)samplesPerCall;
4950 - (int)setPlaybackAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
4951  channel:(NSInteger)channel
4953  samplesPerCall:(NSInteger)samplesPerCall;
4954 
4972 - (int)setMixedAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
4973  channel:(NSInteger)channel
4974  samplesPerCall:(NSInteger)samplesPerCall;
4975 
4989 - (int)setPlaybackAudioFrameBeforeMixingParametersWithSampleRate:(NSInteger)sampleRate
4990  channel:(NSInteger)channel;
4991 /*
4992  * Adjust the custom audio publish volume by source id.
4993  * @param sourceId custom audio source id.
4994  * @param volume The volume, range is [0,100]:
4995  * 0: mute, 100: The original volume
4996  * @return
4997  * - 0: Success.
4998  * - < 0: Failure.
4999  */
5000 - (int)adjustCustomAudioPublishVolume:(NSInteger)sourceId volume:(NSInteger)volume;
5001 
5002 /*
5003  * Adjust the custom audio playout volume by source id.
5004  * @param sourceId custom audio source id.
5005  * @param volume The volume, range is [0,100]:
5006  * 0: mute, 100: The original volume
5007  * @return
5008  * - 0: Success.
5009  * - < 0: Failure.
5010  */
5011 - (int)adjustCustomAudioPlayoutVolume:(NSInteger)sourceId volume:(NSInteger)volume;
5012 
5013 #pragma mark Audio spectrum monitor
5014 
5025 - (int)enableAudioSpectrumMonitor:(int)intervalInMS;
5026 
5035 
5048 - (int)registerAudioSpectrumDelegate:(id<AgoraAudioSpectrumDelegate> _Nullable )delegate;
5049 
5058 - (int) unregisterAudioSpectrumDelegate:(id<AgoraAudioSpectrumDelegate> _Nullable)delegate;
5059 
5060 #pragma mark Built-in Encryption
5061 
5091 - (int)enableEncryption:(bool)enabled encryptionConfig:(AgoraEncryptionConfig * _Nonnull)config;
5092 
5093 
5094 #pragma mark Data Stream
5095 
5119 - (int)createDataStream:(NSInteger * _Nonnull)streamId
5120  reliable:(BOOL)reliable
5121  ordered:(BOOL)ordered;
5131 - (int)createDataStream:(NSInteger * _Nonnull)streamId
5132  config:(AgoraDataStreamConfig * _Nonnull)config;
5156 - (int)sendStreamMessage:(NSInteger)streamId
5157  data:(NSData * _Nonnull)data;
5158 
5159 #pragma mark Stream Publish
5160 
5174 - (int)startRtmpStreamWithoutTranscoding:(NSString* _Nonnull)url;
5175 
5184 - (int)startRtmpStreamWithTranscoding:(NSString* _Nonnull)url transcoding:(AgoraLiveTranscoding* _Nullable)transcoding;
5185 
5202 - (int)updateRtmpTranscoding:(AgoraLiveTranscoding* _Nullable)transcoding;
5203 
5221 - (int)stopRtmpStream:(NSString* _Nonnull)url;
5222 
5233 - (int)addInjectStreamUrl:(NSString * _Nonnull)url config:(AgoraLiveInjectStreamConfig * _Nonnull)config;
5234 
5242 - (int)removeInjectStreamUrl:(NSString * _Nonnull)url;
5243 
5244 
5245 #if (!(TARGET_OS_IPHONE) && (TARGET_OS_MAC))
5246 #pragma mark Screen Capture
5247 
5271 - (int)startScreenCaptureByDisplayId:(UInt32)displayId
5272  regionRect:(CGRect)regionRect
5273  captureParams:(AgoraScreenCaptureParameters *_Nonnull)captureParams NS_SWIFT_NAME(startScreenCapture(byDisplayId:regionRect:captureParams:));
5274 
5294 - (int)startScreenCaptureByWindowId:(UInt32)windowId
5295  regionRect:(CGRect)regionRect
5296  captureParams:(AgoraScreenCaptureParameters *_Nonnull)captureParams NS_SWIFT_NAME(startScreenCapture(byWindowId:regionRect:captureParams:));
5297 
5307 - (int)updateScreenCaptureRegion:(CGRect)rect NS_SWIFT_NAME(updateScreenCaptureRegion(_:));
5308 
5318 - (int)updateScreenCaptureParameters:(AgoraScreenCaptureParameters * _Nonnull)captureParams NS_SWIFT_NAME(updateScreenCaptureParameters(_:));
5319 
5329 - (int)setScreenCaptureScenario:(AgoraScreenScenarioType)scenarioType NS_SWIFT_NAME(setScreenCaptureScenario(_:));
5330 
5361 - (NSArray<AgoraScreenCaptureSourceInfo*>* _Nullable)getScreenCaptureSourcesWithThumbSize:(NSSize)thumbSize iconSize:(NSSize)iconSize includeScreen:(BOOL)includeScreen;
5362 
5363 #endif
5364 
5372 - (int)stopScreenCapture NS_SWIFT_NAME(stopScreenCapture());
5373 
5374 #if TARGET_OS_IPHONE
5375 
5376 - (int)startScreenCapture:(AgoraScreenCaptureParameters2* _Nonnull)parameters NS_SWIFT_NAME(startScreenCapture(_:));
5377 
5378 - (int)updateScreenCapture:(AgoraScreenCaptureParameters2* _Nonnull)parameters NS_SWIFT_NAME(updateScreenCapture(_:));
5379 
5380 #pragma mark Camera Control
5381 
5394 - (BOOL)isCameraZoomSupported;
5395 
5402 - (CGFloat)cameraMaxZoomFactor;
5403 
5410 - (CGFloat)setCameraZoomFactor:(CGFloat)zoomFactor;
5411 
5419 - (BOOL)isCameraFocusPositionInPreviewSupported;
5420 
5428 - (BOOL)setCameraFocusPositionInPreview:(CGPoint)position;
5429 
5437 - (BOOL)isCameraExposurePositionSupported;
5438 
5446 - (BOOL)setCameraExposurePosition:(CGPoint)positionInView;
5447 
5468 - (BOOL)isCameraTorchSupported NS_SWIFT_NAME(isCameraTorchSupported());
5469 
5486 - (BOOL)setCameraTorchOn:(BOOL)isOn NS_SWIFT_NAME(setCameraTorchOn(_:));
5487 
5495 - (BOOL)isCameraAutoFocusFaceModeSupported;
5496 
5508 - (BOOL)setCameraAutoFocusFaceModeEnabled:(BOOL)enable;
5509 
5517 - (BOOL)isCameraAutoExposureFaceModeSupported;
5518 
5530 - (BOOL)setCameraAutoExposureFaceModeEnabled:(BOOL)enable;
5531 
5540 - (int)switchCamera;
5541 #endif
5542 
5554 - (int)setCameraCapturerConfiguration:(AgoraCameraCapturerConfiguration * _Nullable)config;
5555 
5556 
5557 #if (!(TARGET_OS_IPHONE) && (TARGET_OS_MAC))
5558 #pragma mark macOS Device
5559 
5571 - (void)monitorDeviceChange:(BOOL)enabled;
5572 
5585 - (NSArray<AgoraRtcDeviceInfo *> * _Nullable)enumerateDevices:(AgoraMediaDeviceType)type;
5586 
5594 - (AgoraRtcDeviceInfo * _Nullable)getDeviceInfo:(AgoraMediaDeviceType)type;
5595 
5606 - (int)setDevice:(AgoraMediaDeviceType)type deviceId:(NSString * _Nonnull)deviceId;
5607 
5614 - (AgoraRtcDeviceInfo* _Nullable)getDefaultAudioDevice:(AgoraMediaDeviceType)type;
5615 
5624 - (int)getDeviceVolume:(AgoraMediaDeviceType)type;
5625 
5635 - (int)setDeviceVolume:(AgoraMediaDeviceType)type volume:(int)volume;
5636 
5647 - (int)startRecordingDeviceTest:(int)indicationInterval;
5648 
5658 - (int)stopRecordingDeviceTest;
5659 
5674 - (int)startPlaybackDeviceTest:(NSString * _Nonnull)audioFileName;
5675 
5685 - (int)stopPlaybackDeviceTest;
5686 
5700 -(int)startAudioDeviceLoopbackTest:(int)indicationInterval;
5701 
5709 -(int)stopAudioDeviceLoopbackTest;
5710 
5722 - (int)followSystemPlaybackDevice:(BOOL)enable;
5723 
5735 - (int)followSystemRecordingDevice:(BOOL)enable;
5736 
5745 - (int)startCaptureDeviceTest:(NSView * _Nonnull)view;
5746 
5753 - (int)stopCaptureDeviceTest;
5754 #endif
5755 
5756 #pragma mark Face Detection
5757 
5758 #if TARGET_OS_IPHONE
5759 
5783 - (int)enableFaceDetection:(bool)enable NS_SWIFT_NAME(enableFaceDetection(_:));
5784 #endif
5785 
5786 #pragma mark Watermark
5787 
5799 - (int)addVideoWatermark:(AgoraImage * _Nonnull)watermark NS_SWIFT_NAME(addVideoWatermark(_:))__deprecated_msg("use addVideoWatermark:url options instead.");
5800 
5826 - (int)addVideoWatermark:(NSURL* _Nonnull)url options:(WatermarkOptions* _Nonnull)options;
5827 
5832 - (int)clearVideoWatermarks;
5833 
5834 #pragma mark String UID
5835 
5868 - (int)registerLocalUserAccount:(NSString* _Nonnull)userAccount appId:(NSString* _Nonnull)appId NS_SWIFT_NAME(registerLocalUserAccount(_:appId:));
5869 
5904 - (int)joinChannelByToken:(NSString * _Nullable)token
5905  channelId:(NSString * _Nonnull)channelId
5906  userAccount:(NSString * _Nonnull)userAccount
5907  joinSuccess:(void(^ _Nullable)(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed))joinSuccessBlock;
5908 
5944 - (int)joinChannelByToken:(NSString * _Nullable)token
5945  channelId:(NSString * _Nonnull)channelId
5946  userAccount:(NSString * _Nonnull)userAccount
5947  mediaOptions:(AgoraRtcChannelMediaOptions * _Nonnull)mediaOptions
5948  joinSuccess:(void(^ _Nullable)(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed))joinSuccessBlock;
5949 
5960 - (AgoraUserInfo* _Nullable)getUserInfoByUserAccount:(NSString* _Nonnull)userAccount withError:(AgoraErrorCode* _Nullable)error;
5961 
5972 - (AgoraUserInfo* _Nullable)getUserInfoByUid:(NSUInteger)uid withError:(AgoraErrorCode* _Nullable)error;
5973 
5974 #pragma mark Custom Audio PCM Frame
5975 
5982 - (BOOL)setAudioFrameDelegate:(id<AgoraAudioFrameDelegate> _Nullable)delegate;
5983 
5984 #pragma mark Custom Video Frame
5985 
5997 - (BOOL)setVideoFrameDelegate:(id<AgoraVideoFrameDelegate> _Nullable)delegate;
5998 
5999 #pragma mark Encoded Video Frame
6000 
6012 - (BOOL)setEncodedVideoFrameDelegate:(id<AgoraEncodedVideoFrameDelegate> _Nullable)delegate;
6013 
6014 #pragma mark Custom Media Metadata
6015 
6038 - (BOOL)setMediaMetadataDataSource:(id<AgoraMediaMetadataDataSource> _Nullable)metadataDataSource withType:(AgoraMetadataType)type;
6039 
6055 - (BOOL)setMediaMetadataDelegate:(id<AgoraMediaMetadataDelegate> _Nullable)metadataDelegate withType:(AgoraMetadataType)type;
6056 
6057 #pragma mark Miscellaneous Methods
6058 
6069 + (NSString * _Nonnull)getSdkVersion;
6070 
6076 + (NSString* _Nonnull)getErrorDescription: (NSInteger)error;
6077 
6078 
6083 - (void * _Nullable)getNativeHandle;
6084 
6085 
6109 - (int)setLogFile:(NSString * _Nonnull)filePath;
6110 
6125 - (int)setLogFilter:(NSUInteger)filter;
6126 
6141 - (int)setLogFileSize:(NSUInteger)fileSizeInKBytes;
6142 
6150 - (NSString * _Nullable)uploadLogFile;
6151 
6162 - (NSString * _Nullable)getCallId;
6163 
6184 - (int)rate:(NSString * _Nonnull)callId
6185  rating:(NSInteger)rating
6186 description:(NSString * _Nullable)description;
6187 
6205 - (int)complain:(NSString * _Nonnull)callId
6206  description:(NSString * _Nullable)description;
6207 
6208 
6219 - (int)enableMainQueueDispatch:(BOOL)enabled;
6220 
6221 
6242 - (int)startLastmileProbeTest:(AgoraLastmileProbeConfig *_Nullable)config;
6243 
6251 - (int)stopLastmileProbeTest;
6252 
6259 - (int)setParameters:(NSString * _Nonnull)options;
6260 
6266 - (NSString * _Nullable)getParameter:(NSString * _Nonnull)parameter
6267  args:(NSString * _Nullable)args;
6268 
6269 #pragma mark MediaPlayer
6270 
6279 - (id<AgoraRtcMediaPlayerProtocol>_Nullable)createMediaPlayerWithDelegate:(id<AgoraRtcMediaPlayerDelegate>_Nullable)delegate;
6284 - (id<AgoraRtcMediaPlayerCacheManagerProtocol> _Nullable)createMediaPlayerCacheManager;
6285 
6297 - (int)destroyMediaPlayer:(id<AgoraRtcMediaPlayerProtocol>_Nullable)mediaPlayer;
6298 
6304 - (id<AgoraRtcMediaPlayerProtocol> _Nullable)getMediaPlayer:(int)mediaPlayerId;
6305 
6306 #pragma mark rhythm player
6307 
6318 - (int)startRhythmPlayer:(NSString * _Nonnull)sound1 sound2:(NSString * _Nonnull)sound2 config:(AgoraRhythmPlayerConfig * _Nullable)config;
6319 
6326 - (int)stopRhythmPlayer;
6327 
6336 - (int)configRhythmPlayer:(AgoraRhythmPlayerConfig * _Nullable)config;
6337 
6338 #pragma mark Streaming Kit
6339 
6352 - (int)setDirectCdnStreamingAudioConfiguration:(AgoraAudioProfile)profile;
6353 
6368 - (int)setDirectCdnStreamingVideoConfiguration:(AgoraVideoEncoderConfiguration * _Nonnull)config;
6369 
6381 - (int)startDirectCdnStreaming:(id<AgoraDirectCdnStreamingEventDelegate> _Nonnull)delegate
6382  publishUrl:(NSString * _Nonnull)publishUrl
6383  mediaOptions:(AgoraDirectCdnStreamingMediaOptions * _Nonnull)options;
6384 
6394 - (int)stopDirectCdnStreaming;
6395 
6405 - (int)updateDirectCdnStreamingMediaOptions:(AgoraDirectCdnStreamingMediaOptions * _Nonnull)options;
6406 
6407 
6408 
6409 #pragma mark Deprecated Methods
6410 
6427 - (void)audioVolumeIndicationBlock:(void(^ _Nullable)(NSArray * _Nonnull speakers, NSInteger totalVolume))audioVolumeIndicationBlock __deprecated_msg("use delegate instead.");
6428 
6437 - (void)firstLocalVideoFrameBlock:(void(^ _Nullable)(NSInteger width, NSInteger height, NSInteger elapsed))firstLocalVideoFrameBlock __deprecated_msg("use delegate instead.");
6438 
6449 - (void)firstRemoteVideoDecodedBlock:(void(^ _Nullable)(NSUInteger uid, NSInteger width, NSInteger height, NSInteger elapsed))firstRemoteVideoDecodedBlock __deprecated_msg("use delegate instead.");
6450 
6460 - (void)firstRemoteVideoFrameBlock:(void(^ _Nullable)(NSUInteger uid, NSInteger width, NSInteger height, NSInteger elapsed))firstRemoteVideoFrameBlock __deprecated_msg("use delegate instead.");
6461 
6471 - (void)userJoinedBlock:(void(^ _Nullable)(NSUInteger uid, NSInteger elapsed))userJoinedBlock __deprecated_msg("use delegate instead.");
6472 
6481 - (void)userOfflineBlock:(void(^ _Nullable)(NSUInteger uid))userOfflineBlock __deprecated_msg("use delegate instead.");
6482 
6492 - (void)userMuteAudioBlock:(void(^ _Nullable)(NSUInteger uid, BOOL muted))userMuteAudioBlock __deprecated_msg("use delegate instead.");
6493 
6508 - (void)userMuteVideoBlock:(void(^ _Nullable)(NSUInteger uid, BOOL muted))userMuteVideoBlock __deprecated_msg("use delegate instead.");
6509 
6517 - (void)localVideoStatBlock:(void(^ _Nullable)(NSInteger sentBitrate, NSInteger sentFrameRate))localVideoStatBlock __deprecated_msg("use delegate instead.");
6518 
6528 - (void)remoteVideoStatBlock:(void(^ _Nullable)(NSUInteger uid, NSInteger delay, NSInteger receivedBitrate, NSInteger receivedFrameRate))remoteVideoStatBlock __deprecated_msg("use delegate instead.");
6529 
6533 - (void)cameraReadyBlock:(void(^ _Nullable)(void))cameraReadyBlock __deprecated_msg("use delegate instead.");
6534 
6538 - (void)connectionLostBlock:(void(^ _Nullable)(void))connectionLostBlock __deprecated_msg("use delegate instead.");
6539 
6550 - (void)rejoinChannelSuccessBlock:(void(^ _Nullable)(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed))rejoinChannelSuccessBlock __deprecated_msg("use delegate instead.");
6551 
6558 - (void)rtcStatsBlock:(void(^ _Nullable)(AgoraChannelStats * _Nonnull stat))rtcStatsBlock __deprecated_msg("use delegate instead.");
6559 
6568 - (void)leaveChannelBlock:(void(^ _Nullable)(AgoraChannelStats * _Nonnull stat))leaveChannelBlock __deprecated_msg("use delegate instead.");
6569 
6579 - (void)audioQualityBlock:(void(^ _Nullable)(NSUInteger uid, AgoraNetworkQuality quality, NSUInteger delay, NSUInteger lost))audioQualityBlock __deprecated_msg("use delegate instead.");
6580 
6589 - (void)networkQualityBlock:(void(^ _Nullable)(NSUInteger uid, AgoraNetworkQuality txQuality, AgoraNetworkQuality rxQuality))networkQualityBlock __deprecated_msg("use delegate instead.");
6590 
6597 - (void)lastmileQualityBlock:(void(^ _Nullable)(AgoraNetworkQuality quality))lastmileQualityBlock __deprecated_msg("use delegate instead.");
6598 
6602 - (void)mediaEngineEventBlock:(void(^ _Nullable)(NSInteger code))mediaEngineEventBlock __deprecated_msg("use delegate instead.");
6603 
6613 - (int)pauseAudio __deprecated_msg("use disableAudio instead.");
6614 
6624 - (int)resumeAudio __deprecated_msg("use enableAudio instead.");
6625 
6632 + (instancetype _Nonnull)sharedEngineWithAppId:(NSString * _Nonnull)AppId
6633  error:(void(^ _Nullable)(AgoraErrorCode errorCode))errorBlock __deprecated_msg("use sharedEngineWithAppId:delegate: instead.");
6634 
6640 - (int)setHighQualityAudioParametersWithFullband:(BOOL)fullband
6641  stereo:(BOOL)stereo
6642  fullBitrate:(BOOL)fullBitrate __deprecated_msg("use setAudioProfile:scenario: instead.");
6643 
6661 - (int)setVideoProfile:(AgoraVideoProfile)profile
6662  swapWidthAndHeight:(BOOL)swapWidthAndHeight __deprecated_msg("use setVideoEncoderConfiguration: instead.");
6663 
6682 - (int)setVideoResolution:(CGSize)size andFrameRate:(NSInteger)frameRate bitrate:(NSInteger)bitrate __deprecated_msg("use setVideoEncoderConfiguration: instead.");
6683 
6702 - (int)setAudioProfile:(AgoraAudioProfile)profile scenario:(AgoraAudioScenario)scenario __deprecated;
6703 
6711 - (NSString * _Nullable)getDeviceId:(AgoraMediaDeviceType)type __deprecated_msg("use getDeviceInfo: instead.");
6712 
6713 #if (!(TARGET_OS_IPHONE) && (TARGET_OS_MAC))
6714 
6723 - (int)setSpeakerphoneVolume:(NSUInteger)volume __deprecated_msg("use setDeviceVolume:volume: instead.");
6724 
6725 - (int)startScreenCapture:(NSUInteger)windowId
6726  withCaptureFreq:(NSInteger)captureFreq
6727  bitRate:(NSInteger)bitRate
6728  andRect:(CGRect)rect __deprecated_msg("use startScreenCaptureByWindowId:regionRect:captureParams: instead.");
6729 #endif
6730 
6736 + (NSString * _Nonnull)getMediaEngineVersion __deprecated;
6737 
6738 - (int)setAudioOptionParams:(NSString * _Nonnull)params;
6739 - (NSString * _Nullable)getAudioOptionParams;
6740 - (int)setAudioSessionParams:(NSString * _Nonnull)params;
6741 - (NSString * _Nullable)getAudioSessionParams;
6742 
6750 - (int)setAdvancedAudioOptions:(AgoraAdvancedAudioOptions * _Nonnull)options;
6751 
6752 - (BOOL)isSecure;
6753 
6754 
6764 - (int)sendCustomReportMessage:(NSString * _Nullable)messageId
6765  category:(NSString * _Nullable)category
6766  event:(NSString * _Nullable)event
6767  label:(NSString * _Nullable)label
6768  value:(NSInteger)value;
6784 - (int)setLogLevel:(AgoraLogLevel)level;
6785 
6801 - (int)setEncryptionMode:(NSString * _Nullable)encryptionMode __deprecated_msg("use enableEncryption: instead.");
6802 
6817 - (int)setEncryptionSecret:(NSString * _Nullable)secret __deprecated_msg("use enableEncryption: instead.");
6818 
6826 - (int)setLocalAccessPoint:(AgoraLocalAccessPointConfiguration* _Nonnull)config NS_SWIFT_NAME(setLocalAccessPoint(withConfig:));
6827 
6866 - (int)setCloudProxy:(AgoraCloudProxyType)proxyType NS_SWIFT_NAME(setCloudProxy(_:));
6867 
6868 - (NSInteger)takeSnapshot:(NSInteger)uid filePath:(NSString* _Nonnull)filePath;
6869 
6870 - (int)enableContentInspect:(BOOL)enabled config:(AgoraContentInspectConfig* _Nonnull)config;
6871 
6882 - (int) setAVSyncSource:(NSString* _Nonnull)channelId uid:(NSUInteger)uid;
6883 
6890 - (int) enableVideoImageSource:(BOOL)enable
6891  options:(AgoraImageTrackOptions *_Nullable)options;
6892 @end
6893 
6894 @class AgoraMediaRecorder;
6895 @protocol AgoraMediaRecorderDelegate <NSObject>
6896 #pragma mark Media Recorder Delegate Methods
6897 
6909 - (void)mediaRecorder:(AgoraMediaRecorder* _Nonnull)recorder stateDidChanged:(AgoraMediaRecorderState)state error:(AgoraMediaRecorderErrorCode)error;
6910 
6917 - (void)mediaRecorder:(AgoraMediaRecorder* _Nonnull)recorder informationDidUpdated:(AgoraMediaRecorderInfo* _Nonnull)info;
6918 
6919 @end
6920 
6921 __attribute__((visibility("default"))) @interface AgoraMediaRecorder : NSObject
6922 
6930 + (instancetype _Nonnull)sharedMediaRecorderWithRtcEngine:(AgoraRtcEngineKit* _Nonnull)engine;
6931 
6932 - (int)setMediaRecorderDelegate:(AgoraRtcConnection * _Nonnull)connection
6933  delegate:(id<AgoraMediaRecorderDelegate> _Nullable)delegate;
6937 + (void)destroy;
6938 
6948 - (int)enableMainQueueDispatch:(BOOL)enabled;
6949 
6956 - (int)startRecording:(AgoraRtcConnection * _Nonnull)connection
6957  config:(AgoraMediaRecorderConfiguration* _Nonnull)config;
6958 
6959 
6965 - (int)stopRecording:(AgoraRtcConnection * _Nonnull)connection;
6966 
6967 @end
6968 
6969 
-[AgoraRtcEngineKit enableAudio]
int enableAudio()
AgoraRtcEngineKit::delegate
id< AgoraRtcEngineDelegate > _Nullable delegate
Definition: AgoraRtcEngineKit.h:1739
AgoraLocalVideoStreamError
AgoraLocalVideoStreamError
Definition: AgoraEnumerates.h:870
AgoraRtcEngineKit
Definition: AgoraRtcEngineKit.h:1725
AgoraRtcEngineDelegate2.h
AgoraRtcEngineDelegate-p
Definition: AgoraRtcEngineKit.h:610
AgoraMediaPlayerState
AgoraMediaPlayerState
Player state.
Definition: AgoraEnumerates.h:2458
-[AgoraRtcMediaPlayerVideoFrameDelegate-p AgoraRtcMediaPlayerGetVideoPixelFormat]
AgoraVideoFormat AgoraRtcMediaPlayerGetVideoPixelFormat()
AgoraFacePositionInfo
Definition: AgoraObjects.h:2708
AgoraConnectionChangedReason
AgoraConnectionChangedReason
Definition: AgoraEnumerates.h:1825
-[AgoraRtcEngineKit cameraMaxZoomFactor]
CGFloat cameraMaxZoomFactor()
-[AgoraRtcEngineKit stopChannelMediaRelay]
int stopChannelMediaRelay()
AgoraDirectCdnStreamingStats
Definition: AgoraObjects.h:129
-[AgoraRtcEngineKit getConnectionState]
AgoraConnectionState getConnectionState()
AgoraEncodedVideoTrackOptions
Definition: AgoraObjects.h:203
AgoraRtcChannelMediaOptions
Definition: AgoraObjects.h:230
AgoraWlAccAction
AgoraWlAccAction
Definition: AgoraEnumerates.h:2908
AgoraAudioScenario
AgoraAudioScenario
Definition: AgoraEnumerates.h:1196
AgoraRtmpStreamingErrorCode
AgoraRtmpStreamingErrorCode
Definition: AgoraEnumerates.h:2087
AgoraEarMonitoringFilterType
AgoraEarMonitoringFilterType
Definition: AgoraEnumerates.h:2675
AgoraRhythmPlayerConfig
Definition: AgoraObjects.h:2690
AgoraBeautyOptions
Definition: AgoraObjects.h:2087
AgoraVideoSubscriptionOptions
Definition: AgoraObjects.h:2603
AgoraMediaRecorder
Definition: AgoraRtcEngineKit.h:6922
-[AgoraAudioFrameDelegate-p getObservedAudioFramePosition]
AgoraAudioFramePosition getObservedAudioFramePosition()
AgoraPermissionType
AgoraPermissionType
Definition: AgoraEnumerates.h:2630
AgoraMediaPlayerError
AgoraMediaPlayerError
Definition: AgoraEnumerates.h:2527
AgoraRtcMediaPlayerProtocol.h
AgoraOutputVideoFrame
Definition: AgoraObjects.h:1860
-[AgoraMediaMetadataDataSource-p metadataMaxSize]
NSInteger metadataMaxSize()
AgoraClientRole
AgoraClientRole
Definition: AgoraEnumerates.h:506
AgoraUserOfflineReason
AgoraUserOfflineReason
Definition: AgoraEnumerates.h:588
AgoraScreenCaptureParameters2
Definition: AgoraObjects.h:2441
AgoraAudioRemoteReason
AgoraAudioRemoteReason
Definition: AgoraEnumerates.h:1099
-[AgoraVideoFrameDelegate-p getRotationApplied]
BOOL getRotationApplied()
AgoraWlAccReason
AgoraWlAccReason
Definition: AgoraEnumerates.h:2894
AgoraMediaPlayerSrcInfo
The information of the media stream object.
Definition: AgoraObjects.h:113
-[AgoraRtcEngineKit switchCamera]
int switchCamera()
AgoraDirectCdnStreamingEventDelegate-p
Definition: AgoraRtcEngineKit.h:536
AgoraRhythmPlayerState
AgoraRhythmPlayerState
Definition: AgoraEnumerates.h:2804
AgoraChannelMediaRelayEvent
AgoraChannelMediaRelayEvent
Definition: AgoraEnumerates.h:2189
AgoraMediaMetadataDataSource-p
Definition: AgoraRtcEngineKit.h:558
AgoraVideoFrame
Definition: AgoraObjects.h:1525
AgoraSimulcastStreamConfig
Definition: AgoraObjects.h:2500
AgoraRtmpStreamingEvent
AgoraRtmpStreamingEvent
Definition: AgoraEnumerates.h:2130
AgoraClientRoleChangeFailedReason
AgoraClientRoleChangeFailedReason
Definition: AgoraEnumerates.h:1918
AgoraVoiceConversionPreset
AgoraVoiceConversionPreset
Definition: AgoraEnumerates.h:1559
AgoraScreenCaptureParameters
Definition: AgoraObjects.h:2263
AgoraAudioRawFrameOperationMode
AgoraAudioRawFrameOperationMode
Definition: AgoraEnumerates.h:1268
AgoraVideoFrameProcessMode
AgoraVideoFrameProcessMode
Definition: AgoraEnumerates.h:1664
AgoraMediaRecorderInfo
Definition: AgoraObjects.h:2822
+[AgoraRtcEngineKit destroy]
void destroy()
AgoraVideoRemoteReason
AgoraVideoRemoteReason
Definition: AgoraEnumerates.h:950
AgoraAudioLocalState
AgoraAudioLocalState
Definition: AgoraEnumerates.h:1005
AgoraSegmentationProperty
Definition: AgoraObjects.h:2206
AgoraRtcRemoteVideoStats
Definition: AgoraObjects.h:631
AgoraContentInspectConfig
Definition: AgoraObjects.h:2575
AgoraAudioEncodedFrameDelegateConfig
Definition: AgoraObjects.h:2558
AgoraAudioRemoteState
AgoraAudioRemoteState
Definition: AgoraEnumerates.h:1067
AgoraChannelMediaRelayState
AgoraChannelMediaRelayState
Definition: AgoraEnumerates.h:2172
AgoraDirectCdnStreamingMediaOptions
Definition: AgoraObjects.h:156
AgoraAudioProfile
AgoraAudioProfile
Definition: AgoraEnumerates.h:1157
AgoraVideoFrameDelegate-p
Definition: AgoraRtcEngineKit.h:210
AgoraRtcMediaPlayerProtocol-p
Definition: AgoraRtcMediaPlayerProtocol.h:23
AgoraVideoDenoiserOptions
Definition: AgoraObjects.h:2130
AgoraLastmileProbeConfig
Definition: AgoraObjects.h:461
AgoraVideoFramePosition
AgoraVideoFramePosition
Definition: AgoraEnumerates.h:2879
AgoraWlAccStats
Definition: AgoraObjects.h:2807
AgoraVideoLocalState
AgoraVideoLocalState
Definition: AgoraEnumerates.h:850
-[AgoraRtcEngineKit stopLastmileProbeTest]
int stopLastmileProbeTest()
WatermarkOptions
Definition: AgoraObjects.h:1151
AgoraVideoSourceType
AgoraVideoSourceType
Definition: AgoraEnumerates.h:2372
-[AgoraRtcEngineKit createMediaPlayerCacheManager]
id< AgoraRtcMediaPlayerCacheManagerProtocol > _Nullable createMediaPlayerCacheManager()
-[AgoraRtcEngineKit stopScreenCapture]
int stopScreenCapture()
AgoraRtcMediaPlayerDelegate-p
Definition: AgoraRtcEngineKit.h:372
AgoraAudioFrame
Definition: AgoraObjects.h:1705
-[AgoraRtcEngineKit stopDirectCdnStreaming]
int stopDirectCdnStreaming()
AgoraAudioFramePosition
AgoraAudioFramePosition
Definition: AgoraEnumerates.h:2692
-[AgoraVideoFrameDelegate-p getMirrorApplied]
BOOL getMirrorApplied()
VIEW_CLASS
UIView VIEW_CLASS
Definition: AgoraObjects.h:16
AgoraChannelProfile
AgoraChannelProfile
Definition: AgoraEnumerates.h:472
-[AgoraRtcEngineKit uploadLogFile]
NSString *_Nullable uploadLogFile()
-[AgoraRtcEngineKit pauseAllChannelMediaRelay]
int pauseAllChannelMediaRelay()
-[AgoraRtcEngineKit stopPreview]
int stopPreview()
AgoraRtcMediaPlayerVideoFrameDelegate-p
Definition: AgoraRtcEngineKit.h:477
AgoraLeaveChannelOptions
Definition: AgoraObjects.h:1836
AgoraDataStreamConfig
Definition: AgoraObjects.h:2006
AgoraMediaPlayerEvent
AgoraMediaPlayerEvent
Definition: AgoraEnumerates.h:2569
AgoraRtcRemoteAudioStats
Definition: AgoraObjects.h:730
AgoraChannelMediaRelayError
AgoraChannelMediaRelayError
Definition: AgoraEnumerates.h:2230
AgoraDirectCdnStreamingError
AgoraDirectCdnStreamingError
Definition: AgoraEnumerates.h:2658
-[AgoraRtcMediaPlayerDelegate-p onAgoraCDNTokenWillExpire]
void onAgoraCDNTokenWillExpire()
AgoraCDN Token has expired and needs to be set up with renewAgoraCDNSrcToken(const char* src).
AgoraUserInfo
Definition: AgoraObjects.h:1954
AgoraVoiceBeautifierPreset
AgoraVoiceBeautifierPreset
Definition: AgoraEnumerates.h:1314
-[AgoraRtcEngineKit disableAudioSpectrumMonitor]
int disableAudioSpectrumMonitor()
AgoraRtcEngineConfig
Definition: AgoraObjects.h:1662
AgoraImageTrackOptions
Definition: AgoraObjects.h:2739
AgoraVideoRenderMode
AgoraVideoRenderMode
Definition: AgoraEnumerates.h:810
AgoraEncryptionConfig
Definition: AgoraObjects.h:1936
AgoraRhythmPlayerError
AgoraRhythmPlayerError
Definition: AgoraEnumerates.h:2820
AgoraEncodedVideoFrameInfo
Definition: AgoraObjects.h:2623
AgoraChannelMediaRelayConfiguration
Definition: AgoraObjects.h:2035
AgoraVideoStreamType
AgoraVideoStreamType
Definition: AgoraEnumerates.h:792
AgoraEchoTestConfiguration
Definition: AgoraObjects.h:2781
AgoraMediaRecorderErrorCode
AgoraMediaRecorderErrorCode
Definition: AgoraEnumerates.h:2937
AgoraConnectionState
AgoraConnectionState
Definition: AgoraEnumerates.h:1670
-[AgoraRtcEngineKit getCallId]
NSString *_Nullable getCallId()
AgoraContentInspectResult
AgoraContentInspectResult
Definition: AgoraEnumerates.h:2767
AgoraVideoFormat
AgoraVideoFormat
Definition: AgoraEnumerates.h:1623
AgoraAdvancedAudioOptions
Definition: AgoraObjects.h:2733
-[AgoraVideoFrameDelegate-p getObservedFramePosition]
AgoraVideoFramePosition getObservedFramePosition()
AgoraRtcAudioVolumeInfo
Definition: AgoraObjects.h:822
AgoraScreenScenarioType
AgoraScreenScenarioType
Definition: AgoraEnumerates.h:2293
-[AgoraRtcEngineKit resumeAllChannelMediaRelay]
int resumeAllChannelMediaRelay()
AgoraMediaRecorderState
AgoraMediaRecorderState
Definition: AgoraEnumerates.h:2928
AgoraObjects.h
AgoraLocalAccessPointConfiguration
Definition: AgoraObjects.h:2671
AgoraConstants.h
-[AgoraRtcEngineKit disableAudio]
int disableAudio()
-[AgoraRtcEngineKit stopRhythmPlayer]
int stopRhythmPlayer()
AgoraBaseDelegate.h
-[AgoraRtcEngineKit createCustomVideoTrack]
unsigned int createCustomVideoTrack()
-[AgoraVideoFrameDelegate-p getVideoFrameProcessMode]
AgoraVideoFrameProcessMode getVideoFrameProcessMode()
-[AgoraRtcEngineKit disableVideo]
int disableVideo()
+[AgoraRtcEngineKit getSdkVersion]
NSString *_Nonnull getSdkVersion()
AgoraVirtualBackgroundSource
Definition: AgoraObjects.h:2175
-[AgoraRtcEngineKit startPreview]
int startPreview()
AgoraStreamPublishState
AgoraStreamPublishState
Definition: AgoraEnumerates.h:2282
AgoraRtcConnection
Definition: AgoraObjects.h:2581
AgoraLowlightEnhanceOptions
Definition: AgoraObjects.h:2147
AgoraSimulcastStreamMode
AgoraSimulcastStreamMode
Definition: AgoraEnumerates.h:2428
__deprecated
#define __deprecated
Definition: AgoraBase.h:63
AgoraExternalVideoSourceType
AgoraExternalVideoSourceType
Definition: AgoraEnumerates.h:2414
-[AgoraRtcEngineKit getAudioTrackCount]
int getAudioTrackCount()
AgoraLocalTranscoderConfiguration
Definition: AgoraObjects.h:2249
AgoraRtmpStreamingState
AgoraRtmpStreamingState
Definition: AgoraEnumerates.h:2069
AgoraAudioEncodedFrameDelegate-p
Definition: AgoraRtcEngineKit.h:181
AgoraRtcVideoCanvas
Definition: AgoraObjects.h:423
AgoraMediaPlayerPreloadEvent
AgoraMediaPlayerPreloadEvent
The play preload another source event.
Definition: AgoraEnumerates.h:2609
AgoraEncodedAudioFrameInfo
Definition: AgoraObjects.h:1802
AgoraEncodedVideoFrameDelegate-p
Definition: AgoraRtcEngineKit.h:200
AgoraMediaMetadataDelegate-p
Definition: AgoraRtcEngineKit.h:591
AgoraEncryptionErrorType
AgoraEncryptionErrorType
Definition: AgoraEnumerates.h:2150
AgoraAudioRecordingConfiguration
Definition: AgoraObjects.h:2463
AgoraMetadataType
AgoraMetadataType
Definition: AgoraEnumerates.h:1991
-[AgoraRtcEngineKit isSecure]
BOOL isSecure()
AgoraNetworkType
AgoraNetworkType
Definition: AgoraEnumerates.h:1694
AgoraMediaRecorderDelegate-p
Definition: AgoraRtcEngineKit.h:6895
AgoraAudioLocalError
AgoraAudioLocalError
Definition: AgoraEnumerates.h:1027
AgoraDirectCdnStreamingState
AgoraDirectCdnStreamingState
Streaming state.
Definition: AgoraEnumerates.h:2643
AgoraColorEnhanceOptions
Definition: AgoraObjects.h:2162
AgoraAudioFrameDelegate-p
Definition: AgoraRtcEngineKit.h:24
AgoraMediaRecorderConfiguration
Definition: AgoraObjects.h:2836
AgoraClientRoleOptions
Definition: AgoraObjects.h:1967
AgoraUploadErrorReason
AgoraUploadErrorReason
Definition: AgoraEnumerates.h:785
AgoraMediaSourceType
AgoraMediaSourceType
Definition: AgoraEnumerates.h:2310
AgoraNetworkQuality
AgoraNetworkQuality
Definition: AgoraEnumerates.h:713
AgoraRtcLocalAudioStats
Definition: AgoraObjects.h:701
AgoraCameraCapturerConfiguration
Definition: AgoraObjects.h:1977
AgoraCloudProxyType
AgoraCloudProxyType
Definition: AgoraEnumerates.h:575
AgoraProxyType
AgoraProxyType
Definition: AgoraEnumerates.h:2844
-[AgoraRtcEngineKit enableVideo]
int enableVideo()
AgoraStreamSubscribeState
AgoraStreamSubscribeState
Definition: AgoraEnumerates.h:2272
AgoraMediaPlayerUpdatedInfo
player_id and device_id has value when user trigger interface of opening.
Definition: AgoraObjects.h:103
AgoraLogLevel
AgoraLogLevel
Definition: AgoraEnumerates.h:2012
-[AgoraVideoFrameDelegate-p getVideoFormatPreference]
AgoraVideoFormat getVideoFormatPreference()
AgoraLastmileProbeResult
Definition: AgoraObjects.h:511
AgoraChannelStats
Definition: AgoraObjects.h:841
AgoraRtcMediaPlayerAudioFrameDelegate-p
Definition: AgoraRtcEngineKit.h:514