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  }
174  virtual void onConnectionLost(IChannel *rtcChannel) {
175  (void)rtcChannel;
176  }
185  virtual void onRequestToken(IChannel *rtcChannel) {
186  (void)rtcChannel;
187  }
195  virtual void onTokenPrivilegeWillExpire(IChannel *rtcChannel, const char* token) {
196  (void)rtcChannel;
197  (void)token;
198  }
206  virtual void onRtcStats(IChannel *rtcChannel, const RtcStats& stats) {
207  (void)rtcChannel;
208  (void)stats;
209  }
219  virtual void onNetworkQuality(IChannel *rtcChannel, uid_t uid, int txQuality, int rxQuality) {
220  (void)rtcChannel;
221  (void)uid;
222  (void)txQuality;
223  (void)rxQuality;
224  }
235  virtual void onRemoteVideoStats(IChannel *rtcChannel, const RemoteVideoStats& stats) {
236  (void)rtcChannel;
237  (void)stats;
238  }
248  virtual void onRemoteAudioStats(IChannel *rtcChannel, const RemoteAudioStats& stats) {
249  (void)rtcChannel;
250  (void)stats;
251  }
265  virtual void onRemoteAudioStateChanged(IChannel *rtcChannel, uid_t uid, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason, int elapsed) {
266  (void)rtcChannel;
267  (void)uid;
268  (void)state;
269  (void)reason;
270  (void)elapsed;
271  }
283  virtual void onActiveSpeaker(IChannel *rtcChannel, uid_t uid) {
284  (void)rtcChannel;
285  (void)uid;
286  }
295  virtual void onVideoSizeChanged(IChannel *rtcChannel, uid_t uid, int width, int height, int rotation) {
296  (void)rtcChannel;
297  (void)uid;
298  (void)width;
299  (void)height;
300  (void)rotation;
301  }
313  virtual void onRemoteVideoStateChanged(IChannel *rtcChannel, uid_t uid, REMOTE_VIDEO_STATE state, REMOTE_VIDEO_STATE_REASON reason, int elapsed) {
314  (void)rtcChannel;
315  (void)uid;
316  (void)state;
317  (void)reason;
318  (void)elapsed;
319  }
330  virtual void onStreamMessage(IChannel *rtcChannel, uid_t uid, int streamId, const char* data, size_t length) {
331  (void)rtcChannel;
332  (void)uid;
333  (void)streamId;
334  (void)data;
335  (void)length;
336  }
348  virtual void onStreamMessageError(IChannel *rtcChannel, uid_t uid, int streamId, int code, int missed, int cached) {
349  (void)rtcChannel;
350  (void)uid;
351  (void)streamId;
352  (void)code;
353  (void)missed;
354  (void)cached;
355  }
365  (void)rtcChannel;
366  (void)state;
367  (void)code;
368  }
374  (void)rtcChannel;
375  (void)code;
376  }
389  virtual void onRtmpStreamingStateChanged(IChannel *rtcChannel, const char *url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR errCode) {
390  (void)rtcChannel;
391  (void) url;
393  (RTMP_STREAM_PUBLISH_ERROR) errCode;
394  }
403  virtual void onTranscodingUpdated(IChannel *rtcChannel) {
404  (void)rtcChannel;
405  }
413  virtual void onStreamInjectedStatus(IChannel *rtcChannel, const char* url, uid_t uid, int status) {
414  (void)rtcChannel;
415  (void)url;
416  (void)uid;
417  (void)status;
418  }
443  virtual void onRemoteSubscribeFallbackToAudioOnly(IChannel *rtcChannel, uid_t uid, bool isFallbackOrRecover) {
444  (void)rtcChannel;
445  (void)uid;
446  (void)isFallbackOrRecover;
447  }
454  virtual void onConnectionStateChanged(IChannel *rtcChannel,
455  CONNECTION_STATE_TYPE state,
457  (void)rtcChannel;
458  (void)state;
459  (void)reason;
460  }
461 };
462 
464 class IChannel
465 {
466 public:
467  virtual ~IChannel() {}
475  virtual int release() = 0;
486  virtual int setChannelEventHandler(IChannelEventHandler *channelEh) = 0;
518  virtual int joinChannel(const char* token,
519  const char* info,
520  uid_t uid,
521  const ChannelMediaOptions& options) = 0;
550  virtual int joinChannelWithUserAccount(const char* token,
551  const char* userAccount,
552  const ChannelMediaOptions& options) = 0;
573  virtual int leaveChannel() = 0;
574 
587  virtual int publish() = 0;
588 
598  virtual int unpublish() = 0;
599 
606  virtual const char *channelId() = 0;
620  virtual int getCallId(agora::util::AString& callId) = 0;
635  virtual int renewToken(const char* token) = 0;
652  virtual int setEncryptionSecret(const char* secret) = 0;
673  virtual int setEncryptionMode(const char* encryptionMode) = 0;
689  virtual int registerPacketObserver(IPacketObserver* observer) = 0;
723  virtual int setClientRole(CLIENT_ROLE_TYPE role) = 0;
738  virtual int setRemoteUserPriority(uid_t uid, PRIORITY_TYPE userPriority) = 0;
761  virtual int setRemoteVoicePosition(int uid, double pan, double gain) = 0;
781  virtual int setRemoteRenderMode(uid_t userId, RENDER_MODE_TYPE renderMode, VIDEO_MIRROR_MODE_TYPE mirrorMode) = 0;
799  virtual int setDefaultMuteAllRemoteAudioStreams(bool mute) = 0;
821  virtual int setDefaultMuteAllRemoteVideoStreams(bool mute) = 0;
832  virtual int muteAllRemoteAudioStreams(bool mute) = 0;
853  virtual int adjustUserPlaybackSignalVolume(uid_t userId, int volume) = 0;
870  virtual int muteRemoteAudioStream(uid_t userId, bool mute) = 0;
881  virtual int muteAllRemoteVideoStreams(bool mute) = 0;
897  virtual int muteRemoteVideoStream(uid_t userId, bool mute) = 0;
917  virtual int setRemoteVideoStreamType(uid_t userId, REMOTE_VIDEO_STREAM_TYPE streamType) = 0;
933  virtual int setRemoteDefaultVideoStreamType(REMOTE_VIDEO_STREAM_TYPE streamType) = 0;
954  virtual int createDataStream(int* streamId, bool reliable, bool ordered) = 0;
979  virtual int sendStreamMessage(int streamId, const char* data, size_t length) = 0;
1004  virtual int addPublishStreamUrl(const char *url, bool transcodingEnabled) = 0;
1023  virtual int removePublishStreamUrl(const char *url) = 0;
1039  virtual int setLiveTranscoding(const LiveTranscoding &transcoding) = 0;
1072  virtual int addInjectStreamUrl(const char* url, const InjectStreamConfig& config) = 0;
1085  virtual int removeInjectStreamUrl(const char* url) = 0;
1126  virtual int startChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration) = 0;
1152  virtual int updateChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration) = 0;
1177  virtual int stopChannelMediaRelay() = 0;
1183 };
1187 class IRtcEngine2 : public IRtcEngine
1188 {
1189 public:
1190 
1213  virtual IChannel* createChannel(const char *channelId) = 0;
1214 
1215 };
1216 
1217 
1218 }
1219 }
1220 
1221 
1222 #endif
virtual int startChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration)=0
virtual int setClientRole(CLIENT_ROLE_TYPE role)=0
VIDEO_MIRROR_MODE_TYPE
Definition: IAgoraRtcEngine.h:353
virtual ~IChannel()
Definition: IAgoraRtcChannel.h:467
virtual int registerPacketObserver(IPacketObserver *observer)=0
virtual int setDefaultMuteAllRemoteVideoStreams(bool mute)=0
REMOTE_VIDEO_STREAM_TYPE
Definition: IAgoraRtcEngine.h:698
virtual void onNetworkQuality(IChannel *rtcChannel, uid_t uid, int txQuality, int rxQuality)
Definition: IAgoraRtcChannel.h:219
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:854
virtual int addInjectStreamUrl(const char *url, const InjectStreamConfig &config)=0
virtual void onRemoteAudioStats(IChannel *rtcChannel, const RemoteAudioStats &stats)
Definition: IAgoraRtcChannel.h:248
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:36
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:389
METADATA_TYPE
Definition: IAgoraRtcEngine.h:4045
virtual int setEncryptionMode(const char *encryptionMode)=0
unsigned int uid_t
Definition: IAgoraRtcEngine.h:18
CONNECTION_CHANGED_REASON_TYPE
Definition: IAgoraRtcEngine.h:1124
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:364
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:4112
bool autoSubscribeVideo
Definition: IAgoraRtcChannel.h:30
Definition: IAgoraRtcEngine.h:1925
virtual void onRemoteVideoStateChanged(IChannel *rtcChannel, uid_t uid, REMOTE_VIDEO_STATE state, REMOTE_VIDEO_STATE_REASON reason, int elapsed)
Definition: IAgoraRtcChannel.h:313
virtual int setChannelEventHandler(IChannelEventHandler *channelEh)=0
CHANNEL_MEDIA_RELAY_STATE
Definition: IAgoraRtcEngine.h:1533
Definition: IAgoraRtcChannel.h:1187
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:195
virtual void onConnectionLost(IChannel *rtcChannel)
Definition: IAgoraRtcChannel.h:174
virtual void onStreamMessageError(IChannel *rtcChannel, uid_t uid, int streamId, int code, int missed, int cached)
Definition: IAgoraRtcChannel.h:348
USER_OFFLINE_REASON_TYPE
Definition: IAgoraRtcEngine.h:608
Definition: IAgoraRtcEngine.h:2406
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:1491
virtual int renewToken(const char *token)=0
virtual void onRtcStats(IChannel *rtcChannel, const RtcStats &stats)
Definition: IAgoraRtcChannel.h:206
Definition: IAgoraRtcEngine.h:1307
Definition: IAgoraRtcEngine.h:1657
RTMP_STREAM_PUBLISH_STATE
Definition: IAgoraRtcEngine.h:620
virtual void onRemoteSubscribeFallbackToAudioOnly(IChannel *rtcChannel, uid_t uid, bool isFallbackOrRecover)
Definition: IAgoraRtcChannel.h:443
virtual void onTranscodingUpdated(IChannel *rtcChannel)
Definition: IAgoraRtcChannel.h:403
CHANNEL_MEDIA_RELAY_ERROR
Definition: IAgoraRtcEngine.h:1446
REMOTE_VIDEO_STATE_REASON
Definition: IAgoraRtcEngine.h:950
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:2112
virtual void onActiveSpeaker(IChannel *rtcChannel, uid_t uid)
Definition: IAgoraRtcChannel.h:283
virtual void onStreamInjectedStatus(IChannel *rtcChannel, const char *url, uid_t uid, int status)
Definition: IAgoraRtcChannel.h:413
CONNECTION_STATE_TYPE
Definition: IAgoraRtcEngine.h:1086
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:454
RENDER_MODE_TYPE
Definition: IAgoraRtcEngine.h:337
REMOTE_VIDEO_STATE
Definition: IAgoraRtcEngine.h:927
PRIORITY_TYPE
Definition: IAgoraRtcEngine.h:1075
virtual ~IChannelEventHandler()
Definition: IAgoraRtcChannel.h:42
CLIENT_ROLE_TYPE
Definition: IAgoraRtcEngine.h:599
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:645
Definition: IAgoraRtcEngine.h:2047
Definition: IAgoraRtcEngine.h:4039
virtual void onChannelMediaRelayEvent(IChannel *rtcChannel, CHANNEL_MEDIA_RELAY_EVENT code)
Definition: IAgoraRtcChannel.h:373
virtual void onJoinChannelSuccess(IChannel *rtcChannel, uid_t uid, int elapsed)
Definition: IAgoraRtcChannel.h:75
virtual void onRequestToken(IChannel *rtcChannel)
Definition: IAgoraRtcChannel.h:185
Definition: IAgoraRtcChannel.h:464
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:295
virtual void onRemoteAudioStateChanged(IChannel *rtcChannel, uid_t uid, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason, int elapsed)
Definition: IAgoraRtcChannel.h:265
virtual int adjustUserPlaybackSignalVolume(uid_t userId, int volume)=0
virtual void onRemoteVideoStats(IChannel *rtcChannel, const RemoteVideoStats &stats)
Definition: IAgoraRtcChannel.h:235
Definition: AgoraBase.h:40
Definition: IAgoraRtcEngine.h:1599
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:883
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:330