Agora C++ API Reference for All Platforms
IAgoraRtcChannel.h
1 //
2 // AgoraRtcEngine SDK
3 //
4 // Copyright (c) 2019 Agora.io. All rights reserved.
5 //
6 
7 #ifndef IAgoraRtcChannel_h
8 #define IAgoraRtcChannel_h
9 #include "IAgoraRtcEngine.h"
10 
11 namespace agora {
12 namespace rtc {
32  : autoSubscribeAudio(true)
33  , autoSubscribeVideo(true)
34  {}
35 };
37 class IChannel;
40 {
41 public:
42  virtual ~IChannelEventHandler() {}
50  virtual void onChannelWarning(IChannel *rtcChannel, int warn, const char* msg) {
51  (void)rtcChannel;
52  (void)warn;
53  (void)msg;
54  }
61  virtual void onChannelError(IChannel *rtcChannel, int err, const char* msg) {
62  (void)rtcChannel;
63  (void)err;
64  (void)msg;
65  }
75  virtual void onJoinChannelSuccess(IChannel *rtcChannel, uid_t uid, int elapsed) {
76  (void)rtcChannel;
77  (void)uid;
78  (void)elapsed;
79  }
87  virtual void onRejoinChannelSuccess(IChannel *rtcChannel, uid_t uid, int elapsed) {
88  (void)rtcChannel;
89  (void)uid;
90  (void)elapsed;
91  }
101  virtual void onLeaveChannel(IChannel *rtcChannel, const RtcStats& stats) {
102  (void)rtcChannel;
103  (void)stats;
104  }
115  virtual void onClientRoleChanged(IChannel *rtcChannel, CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole) {
116  (void)rtcChannel;
117  (void)oldRole;
118  (void)newRole;
119  }
140  virtual void onUserJoined(IChannel *rtcChannel, uid_t uid, int elapsed) {
141  (void)rtcChannel;
142  (void)uid;
143  (void)elapsed;
144  }
156  virtual void onUserOffline(IChannel *rtcChannel, uid_t uid, USER_OFFLINE_REASON_TYPE reason) {
157  (void)rtcChannel;
158  (void)uid;
159  (void)reason;
160  }
169  virtual void onConnectionLost(IChannel *rtcChannel) {
170  (void)rtcChannel;
171  }
180  virtual void onRequestToken(IChannel *rtcChannel) {
181  (void)rtcChannel;
182  }
190  virtual void onTokenPrivilegeWillExpire(IChannel *rtcChannel, const char* token) {
191  (void)rtcChannel;
192  (void)token;
193  }
201  virtual void onRtcStats(IChannel *rtcChannel, const RtcStats& stats) {
202  (void)rtcChannel;
203  (void)stats;
204  }
214  virtual void onNetworkQuality(IChannel *rtcChannel, uid_t uid, int txQuality, int rxQuality) {
215  (void)rtcChannel;
216  (void)uid;
217  (void)txQuality;
218  (void)rxQuality;
219  }
230  virtual void onRemoteVideoStats(IChannel *rtcChannel, const RemoteVideoStats& stats) {
231  (void)rtcChannel;
232  (void)stats;
233  }
243  virtual void onRemoteAudioStats(IChannel *rtcChannel, const RemoteAudioStats& stats) {
244  (void)rtcChannel;
245  (void)stats;
246  }
260  virtual void onRemoteAudioStateChanged(IChannel *rtcChannel, uid_t uid, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason, int elapsed) {
261  (void)rtcChannel;
262  (void)uid;
263  (void)state;
264  (void)reason;
265  (void)elapsed;
266  }
278  virtual void onActiveSpeaker(IChannel *rtcChannel, uid_t uid) {
279  (void)rtcChannel;
280  (void)uid;
281  }
290  virtual void onVideoSizeChanged(IChannel *rtcChannel, uid_t uid, int width, int height, int rotation) {
291  (void)rtcChannel;
292  (void)uid;
293  (void)width;
294  (void)height;
295  (void)rotation;
296  }
308  virtual void onRemoteVideoStateChanged(IChannel *rtcChannel, uid_t uid, REMOTE_VIDEO_STATE state, REMOTE_VIDEO_STATE_REASON reason, int elapsed) {
309  (void)rtcChannel;
310  (void)uid;
311  (void)state;
312  (void)reason;
313  (void)elapsed;
314  }
325  virtual void onStreamMessage(IChannel *rtcChannel, uid_t uid, int streamId, const char* data, size_t length) {
326  (void)rtcChannel;
327  (void)uid;
328  (void)streamId;
329  (void)data;
330  (void)length;
331  }
343  virtual void onStreamMessageError(IChannel *rtcChannel, uid_t uid, int streamId, int code, int missed, int cached) {
344  (void)rtcChannel;
345  (void)uid;
346  (void)streamId;
347  (void)code;
348  (void)missed;
349  (void)cached;
350  }
360  (void)rtcChannel;
361  (void)state;
362  (void)code;
363  }
369  (void)rtcChannel;
370  (void)code;
371  }
384  virtual void onRtmpStreamingStateChanged(IChannel *rtcChannel, const char *url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR errCode) {
385  (void)rtcChannel;
386  (void) url;
388  (RTMP_STREAM_PUBLISH_ERROR) errCode;
389  }
398  virtual void onTranscodingUpdated(IChannel *rtcChannel) {
399  (void)rtcChannel;
400  }
408  virtual void onStreamInjectedStatus(IChannel *rtcChannel, const char* url, uid_t uid, int status) {
409  (void)rtcChannel;
410  (void)url;
411  (void)uid;
412  (void)status;
413  }
438  virtual void onRemoteSubscribeFallbackToAudioOnly(IChannel *rtcChannel, uid_t uid, bool isFallbackOrRecover) {
439  (void)rtcChannel;
440  (void)uid;
441  (void)isFallbackOrRecover;
442  }
449  virtual void onConnectionStateChanged(IChannel *rtcChannel,
450  CONNECTION_STATE_TYPE state,
452  (void)rtcChannel;
453  (void)state;
454  (void)reason;
455  }
456 };
457 
459 class IChannel
460 {
461 public:
462  virtual ~IChannel() {}
470  virtual int release() = 0;
481  virtual int setChannelEventHandler(IChannelEventHandler *channelEh) = 0;
513  virtual int joinChannel(const char* token,
514  const char* info,
515  uid_t uid,
516  const ChannelMediaOptions& options) = 0;
552  virtual int joinChannelWithUserAccount(const char* token,
553  const char* userAccount,
554  const ChannelMediaOptions& options) = 0;
575  virtual int leaveChannel() = 0;
576 
589  virtual int publish() = 0;
590 
600  virtual int unpublish() = 0;
601 
608  virtual const char *channelId() = 0;
617  virtual int getCallId(agora::util::AString& callId) = 0;
632  virtual int renewToken(const char* token) = 0;
649  virtual int setEncryptionSecret(const char* secret) = 0;
670  virtual int setEncryptionMode(const char* encryptionMode) = 0;
686  virtual int registerPacketObserver(IPacketObserver* observer) = 0;
720  virtual int setClientRole(CLIENT_ROLE_TYPE role) = 0;
735  virtual int setRemoteUserPriority(uid_t uid, PRIORITY_TYPE userPriority) = 0;
758  virtual int setRemoteVoicePosition(int uid, double pan, double gain) = 0;
778  virtual int setRemoteRenderMode(uid_t userId, RENDER_MODE_TYPE renderMode, VIDEO_MIRROR_MODE_TYPE mirrorMode) = 0;
789  virtual int setDefaultMuteAllRemoteAudioStreams(bool mute) = 0;
800  virtual int setDefaultMuteAllRemoteVideoStreams(bool mute) = 0;
811  virtual int muteAllRemoteAudioStreams(bool mute) = 0;
831  virtual int adjustUserPlaybackSignalVolume(uid_t userId, int volume) = 0;
848  virtual int muteRemoteAudioStream(uid_t userId, bool mute) = 0;
859  virtual int muteAllRemoteVideoStreams(bool mute) = 0;
875  virtual int muteRemoteVideoStream(uid_t userId, bool mute) = 0;
895  virtual int setRemoteVideoStreamType(uid_t userId, REMOTE_VIDEO_STREAM_TYPE streamType) = 0;
911  virtual int setRemoteDefaultVideoStreamType(REMOTE_VIDEO_STREAM_TYPE streamType) = 0;
932  virtual int createDataStream(int* streamId, bool reliable, bool ordered) = 0;
957  virtual int sendStreamMessage(int streamId, const char* data, size_t length) = 0;
980  virtual int addPublishStreamUrl(const char *url, bool transcodingEnabled) = 0;
998  virtual int removePublishStreamUrl(const char *url) = 0;
1014  virtual int setLiveTranscoding(const LiveTranscoding &transcoding) = 0;
1044  virtual int addInjectStreamUrl(const char* url, const InjectStreamConfig& config) = 0;
1057  virtual int removeInjectStreamUrl(const char* url) = 0;
1098  virtual int startChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration) = 0;
1122  virtual int updateChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration) = 0;
1147  virtual int stopChannelMediaRelay() = 0;
1153 };
1155 class IRtcEngine2 : public IRtcEngine
1156 {
1157 public:
1158 
1181  virtual IChannel* createChannel(const char *channelId) = 0;
1182 
1183 };
1184 
1185 
1186 }
1187 }
1188 
1189 
1190 #endif
virtual int startChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration)=0
virtual int setClientRole(CLIENT_ROLE_TYPE role)=0
VIDEO_MIRROR_MODE_TYPE
Definition: IAgoraRtcEngine.h:357
virtual ~IChannel()
Definition: IAgoraRtcChannel.h:462
virtual int registerPacketObserver(IPacketObserver *observer)=0
virtual int setDefaultMuteAllRemoteVideoStreams(bool mute)=0
REMOTE_VIDEO_STREAM_TYPE
Definition: IAgoraRtcEngine.h:703
virtual void onNetworkQuality(IChannel *rtcChannel, uid_t uid, int txQuality, int rxQuality)
Definition: IAgoraRtcChannel.h:214
virtual void onChannelError(IChannel *rtcChannel, int err, const char *msg)
Definition: IAgoraRtcChannel.h:61
virtual int setEncryptionSecret(const char *secret)=0
virtual void onClientRoleChanged(IChannel *rtcChannel, CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole)
Definition: IAgoraRtcChannel.h:115
REMOTE_AUDIO_STATE
Definition: IAgoraRtcEngine.h:963
virtual int addInjectStreamUrl(const char *url, const InjectStreamConfig &config)=0
virtual void onRemoteAudioStats(IChannel *rtcChannel, const RemoteAudioStats &stats)
Definition: IAgoraRtcChannel.h:243
virtual int setLiveTranscoding(const LiveTranscoding &transcoding)=0
virtual int muteAllRemoteAudioStreams(bool mute)=0
ChannelMediaOptions()
Definition: IAgoraRtcChannel.h:31
virtual int setDefaultMuteAllRemoteAudioStreams(bool mute)=0
Definition: AgoraBase.h:41
virtual int joinChannel(const char *token, const char *info, uid_t uid, const ChannelMediaOptions &options)=0
virtual CONNECTION_STATE_TYPE getConnectionState()=0
virtual void onRtmpStreamingStateChanged(IChannel *rtcChannel, const char *url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR errCode)
Definition: IAgoraRtcChannel.h:384
METADATA_TYPE
Definition: IAgoraRtcEngine.h:4279
virtual int setEncryptionMode(const char *encryptionMode)=0
unsigned int uid_t
Definition: IAgoraRtcEngine.h:18
CONNECTION_CHANGED_REASON_TYPE
Definition: IAgoraRtcEngine.h:1233
virtual int leaveChannel()=0
virtual void onUserOffline(IChannel *rtcChannel, uid_t uid, USER_OFFLINE_REASON_TYPE reason)
Definition: IAgoraRtcChannel.h:156
virtual void onChannelMediaRelayStateChanged(IChannel *rtcChannel, CHANNEL_MEDIA_RELAY_STATE state, CHANNEL_MEDIA_RELAY_ERROR code)
Definition: IAgoraRtcChannel.h:359
virtual int updateChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration)=0
virtual int createDataStream(int *streamId, bool reliable, bool ordered)=0
virtual int muteAllRemoteVideoStreams(bool mute)=0
virtual int setRemoteRenderMode(uid_t userId, RENDER_MODE_TYPE renderMode, VIDEO_MIRROR_MODE_TYPE mirrorMode)=0
virtual int setRemoteUserPriority(uid_t uid, PRIORITY_TYPE userPriority)=0
virtual const char * channelId()=0
virtual int getCallId(agora::util::AString &callId)=0
Definition: IAgoraRtcEngine.h:4346
bool autoSubscribeVideo
Definition: IAgoraRtcChannel.h:30
Definition: IAgoraRtcEngine.h:2055
virtual void onRemoteVideoStateChanged(IChannel *rtcChannel, uid_t uid, REMOTE_VIDEO_STATE state, REMOTE_VIDEO_STATE_REASON reason, int elapsed)
Definition: IAgoraRtcChannel.h:308
virtual int setChannelEventHandler(IChannelEventHandler *channelEh)=0
CHANNEL_MEDIA_RELAY_STATE
Definition: IAgoraRtcEngine.h:1654
Definition: IAgoraRtcChannel.h:1155
virtual int setRemoteDefaultVideoStreamType(REMOTE_VIDEO_STREAM_TYPE streamType)=0
Definition: IAgoraRtcChannel.h:39
virtual int unpublish()=0
virtual void onTokenPrivilegeWillExpire(IChannel *rtcChannel, const char *token)
Definition: IAgoraRtcChannel.h:190
virtual void onConnectionLost(IChannel *rtcChannel)
Definition: IAgoraRtcChannel.h:169
virtual void onStreamMessageError(IChannel *rtcChannel, uid_t uid, int streamId, int code, int missed, int cached)
Definition: IAgoraRtcChannel.h:343
USER_OFFLINE_REASON_TYPE
Definition: IAgoraRtcEngine.h:613
Definition: IAgoraRtcEngine.h:2583
virtual int sendStreamMessage(int streamId, const char *data, size_t length)=0
virtual int setRemoteVoicePosition(int uid, double pan, double gain)=0
virtual int removePublishStreamUrl(const char *url)=0
virtual int release()=0
virtual int joinChannelWithUserAccount(const char *token, const char *userAccount, const ChannelMediaOptions &options)=0
virtual int muteRemoteAudioStream(uid_t userId, bool mute)=0
CHANNEL_MEDIA_RELAY_EVENT
Definition: IAgoraRtcEngine.h:1612
virtual int renewToken(const char *token)=0
virtual void onRtcStats(IChannel *rtcChannel, const RtcStats &stats)
Definition: IAgoraRtcChannel.h:201
Definition: IAgoraRtcEngine.h:1428
Definition: IAgoraRtcEngine.h:1782
RTMP_STREAM_PUBLISH_STATE
Definition: IAgoraRtcEngine.h:625
virtual void onRemoteSubscribeFallbackToAudioOnly(IChannel *rtcChannel, uid_t uid, bool isFallbackOrRecover)
Definition: IAgoraRtcChannel.h:438
virtual void onTranscodingUpdated(IChannel *rtcChannel)
Definition: IAgoraRtcChannel.h:398
CHANNEL_MEDIA_RELAY_ERROR
Definition: IAgoraRtcEngine.h:1567
REMOTE_VIDEO_STATE_REASON
Definition: IAgoraRtcEngine.h:1059
virtual void onLeaveChannel(IChannel *rtcChannel, const RtcStats &stats)
Definition: IAgoraRtcChannel.h:101
virtual void onUserJoined(IChannel *rtcChannel, uid_t uid, int elapsed)
Definition: IAgoraRtcChannel.h:140
Definition: IAgoraRtcEngine.h:2242
virtual void onActiveSpeaker(IChannel *rtcChannel, uid_t uid)
Definition: IAgoraRtcChannel.h:278
virtual void onStreamInjectedStatus(IChannel *rtcChannel, const char *url, uid_t uid, int status)
Definition: IAgoraRtcChannel.h:408
CONNECTION_STATE_TYPE
Definition: IAgoraRtcEngine.h:1195
virtual int muteRemoteVideoStream(uid_t userId, bool mute)=0
virtual void onConnectionStateChanged(IChannel *rtcChannel, CONNECTION_STATE_TYPE state, CONNECTION_CHANGED_REASON_TYPE reason)
Definition: IAgoraRtcChannel.h:449
RENDER_MODE_TYPE
Definition: IAgoraRtcEngine.h:337
REMOTE_VIDEO_STATE
Definition: IAgoraRtcEngine.h:1036
PRIORITY_TYPE
Definition: IAgoraRtcEngine.h:1184
virtual ~IChannelEventHandler()
Definition: IAgoraRtcChannel.h:42
CLIENT_ROLE_TYPE
Definition: IAgoraRtcEngine.h:604
virtual int setRemoteVideoStreamType(uid_t userId, REMOTE_VIDEO_STREAM_TYPE streamType)=0
virtual IChannel * createChannel(const char *channelId)=0
virtual void onRejoinChannelSuccess(IChannel *rtcChannel, uid_t uid, int elapsed)
Definition: IAgoraRtcChannel.h:87
RTMP_STREAM_PUBLISH_ERROR
Definition: IAgoraRtcEngine.h:650
Definition: IAgoraRtcEngine.h:2177
Definition: IAgoraRtcEngine.h:4273
virtual void onChannelMediaRelayEvent(IChannel *rtcChannel, CHANNEL_MEDIA_RELAY_EVENT code)
Definition: IAgoraRtcChannel.h:368
virtual void onJoinChannelSuccess(IChannel *rtcChannel, uid_t uid, int elapsed)
Definition: IAgoraRtcChannel.h:75
virtual void onRequestToken(IChannel *rtcChannel)
Definition: IAgoraRtcChannel.h:180
Definition: IAgoraRtcChannel.h:459
virtual int registerMediaMetadataObserver(IMetadataObserver *observer, IMetadataObserver::METADATA_TYPE type)=0
virtual int removeInjectStreamUrl(const char *url)=0
virtual void onVideoSizeChanged(IChannel *rtcChannel, uid_t uid, int width, int height, int rotation)
Definition: IAgoraRtcChannel.h:290
virtual void onRemoteAudioStateChanged(IChannel *rtcChannel, uid_t uid, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason, int elapsed)
Definition: IAgoraRtcChannel.h:260
virtual int adjustUserPlaybackSignalVolume(uid_t userId, int volume)=0
virtual void onRemoteVideoStats(IChannel *rtcChannel, const RemoteVideoStats &stats)
Definition: IAgoraRtcChannel.h:230
Definition: AgoraBase.h:45
Definition: IAgoraRtcEngine.h:1720
virtual void onChannelWarning(IChannel *rtcChannel, int warn, const char *msg)
Definition: IAgoraRtcChannel.h:50
Definition: IAgoraRtcChannel.h:14
virtual int stopChannelMediaRelay()=0
REMOTE_AUDIO_STATE_REASON
Definition: IAgoraRtcEngine.h:992
virtual int addPublishStreamUrl(const char *url, bool transcodingEnabled)=0
virtual int publish()=0
bool autoSubscribeAudio
Definition: IAgoraRtcChannel.h:22
virtual void onStreamMessage(IChannel *rtcChannel, uid_t uid, int streamId, const char *data, size_t length)
Definition: IAgoraRtcChannel.h:325