On-premise Recording SDK v3.0.6 API Reference for Linux (C++)
IAgoraRecordingEngine.h
Go to the documentation of this file.
1 #ifndef _IAGORA_RECORDINGENGINE_H_
2 #define _IAGORA_RECORDINGENGINE_H_
3 #include "IAgoraLinuxSdkCommon.h"
4 
5 namespace agora {
6 namespace recording {
11 
12 public:
14 
22  virtual void onError(int error, agora::linuxsdk::STAT_CODE_TYPE stat_code) = 0;
23 
30  virtual void onWarning(int warn) = 0;
31 
37  virtual void onJoinChannelSuccess(const char * channelId, uid_t uid) = 0;
38 
44 
55  virtual void onUserJoined(uid_t uid, agora::linuxsdk::UserJoinInfos &infos) = 0;
56 
64 
72 
81 
87  virtual void audioFrameReceived(unsigned int uid, const agora::linuxsdk::AudioFrame *frame) const = 0;
88 
100  virtual void videoFrameReceived(unsigned int uid, const agora::linuxsdk::VideoFrame *frame) const = 0;
101 
108  virtual void onActiveSpeaker(uid_t uid) = 0;
109 
117  virtual void onAudioVolumeIndication(const agora::linuxsdk::AudioVolumeInfo* speakers, unsigned int speakerNum) = 0;
118 
128  virtual void onFirstRemoteVideoDecoded(uid_t uid, int width, int height, int elapsed) = 0;
129 
135  virtual void onFirstRemoteAudioFrame(uid_t uid, int elapsed) = 0;
136 
142  virtual void onReceivingStreamStatusChanged(bool receivingAudio, bool receivingVideo) = 0;
143 
155  virtual void onConnectionLost() = 0;
156 
168  virtual void onConnectionInterrupted() = 0;
169 
177  virtual void onRejoinChannelSuccess(const char* channelId, uid_t uid) = 0;
178 
185 
198 
211 
216  virtual void onRecordingStats(const agora::linuxsdk::RecordingStats& stats) = 0;
217 
226  virtual void onLocalUserRegistered(uid_t uid, const char* userAccount) = 0;
227 
235  virtual void onUserInfoUpdated(uid_t uid, const agora::linuxsdk::UserInfo& info) = 0;
236 };
237 
239 typedef struct RecordingConfig {
250  bool isAudioOnly;
261  bool isVideoOnly;
307  const char * mixResolution;
321  const char * decryptionMode;
325  const char * secret;
330  const char * appliteDir;
335  const char * recordFileRootDir;
371  const char * cfgFilePath;
431  int proxyType;
439  const char * proxyServer;
449  const char * defaultVideoBg;
459  const char * defaultUserBg;
465  const char * subscribeVideoUids;
471  const char * subscribeAudioUids;
472 
481 
487 
488 
490  isVideoOnly(false),
491  isMixingEnabled(false),
492  autoSubscribe(true),
493  enableCloudProxy(false),
495  mixResolution(NULL),
496  decryptionMode(NULL),
497  secret(NULL),
498  appliteDir(NULL),
499  recordFileRootDir(NULL),
500  cfgFilePath(NULL),
503  lowUdpPort(0),
504  highUdpPort(0),
505  idleLimitSec(300),
506  captureInterval(5),
510  triggerMode(agora::linuxsdk::AUTOMATICALLY_MODE),
511  lang(agora::linuxsdk::CPP_LANG),
512  proxyType(1),
513  proxyServer(NULL),
515  defaultVideoBg(NULL),
516  defaultUserBg(NULL),
517  subscribeVideoUids(NULL),
518  subscribeAudioUids(NULL),
519  enableIntraRequest(true),
520  enableH265Support(false)
521  {}
522 
523  virtual ~RecordingConfig() {}
525 
527 typedef struct RecordingEngineProperties {
529  char* storageDir;
531  {}
533 
536 public:
537 
545  static IRecordingEngine* createAgoraRecordingEngine(const char * appId, IRecordingEngineEventHandler *eventHandler);
546 
547  virtual ~IRecordingEngine() {}
548 
569  virtual int joinChannel(const char * channelKey, const char *channelId, uid_t uid, const RecordingConfig &config) = 0;
570 
601  virtual int joinChannelWithUserAccount(const char* token, const char* channelId, const char*userAccount, const RecordingConfig& config) = 0;
602 
624  virtual int getUserInfoByUserAccount(const char* userAccount, agora::linuxsdk::UserInfo* userinfo) = 0;
625 
647  virtual int getUserInfoByUid(uid_t uid, agora::linuxsdk::UserInfo* userInfo) = 0;
648 
661 
671  virtual int stoppedOnError() = 0;
672 
679  virtual int leaveChannel() = 0;
680 
687  virtual int release() = 0;
688 
699 
708  virtual int startService() = 0;
709 
718  virtual int stopService() = 0;
719 
731  virtual int setUserBackground(uid_t uid, const char* img_path) = 0;
732 
743 
756  virtual int updateSubscribeVideoUids(uid_t *uids, uint32_t num) = 0;
757 
770  virtual int updateSubscribeAudioUids(uid_t *uids, uint32_t num) = 0;
771 
798  virtual int updateWatermarkConfigs(uint32_t wm_num, linuxsdk::WatermarkConfig* config) = 0;
799 };
800 
801 }
802 }
803 
804 #endif
Definition: IAgoraRecordingEngine.h:10
virtual void onActiveSpeaker(uid_t uid)=0
virtual void onConnectionStateChanged(agora::linuxsdk::ConnectionStateType state, agora::linuxsdk::ConnectionChangedReasonType reason)=0
virtual void audioFrameReceived(unsigned int uid, const agora::linuxsdk::AudioFrame *frame) const =0
virtual void onError(int error, agora::linuxsdk::STAT_CODE_TYPE stat_code)=0
virtual void onRemoteAudioStats(agora::linuxsdk::uid_t uid, const agora::linuxsdk::RemoteAudioStats &stats)=0
virtual void onLeaveChannel(agora::linuxsdk::LEAVE_PATH_CODE code)=0
virtual void onFirstRemoteAudioFrame(uid_t uid, int elapsed)=0
virtual void onUserOffline(uid_t uid, agora::linuxsdk::USER_OFFLINE_REASON_TYPE reason)=0
virtual void onRejoinChannelSuccess(const char *channelId, uid_t uid)=0
virtual void onUserJoined(uid_t uid, agora::linuxsdk::UserJoinInfos &infos)=0
virtual void onRemoteVideoStats(agora::linuxsdk::uid_t uid, const agora::linuxsdk::RemoteVideoStats &stats)=0
virtual void onRemoteAudioStreamStateChanged(uid_t uid, linuxsdk::RemoteStreamState state, linuxsdk::RemoteStreamStateChangedReason reason)=0
virtual void onUserInfoUpdated(uid_t uid, const agora::linuxsdk::UserInfo &info)=0
virtual void onRecordingStats(const agora::linuxsdk::RecordingStats &stats)=0
virtual void onFirstRemoteVideoDecoded(uid_t uid, int width, int height, int elapsed)=0
virtual void onRemoteVideoStreamStateChanged(uid_t uid, linuxsdk::RemoteStreamState state, linuxsdk::RemoteStreamStateChangedReason reason)=0
virtual void onReceivingStreamStatusChanged(bool receivingAudio, bool receivingVideo)=0
virtual void onAudioVolumeIndication(const agora::linuxsdk::AudioVolumeInfo *speakers, unsigned int speakerNum)=0
virtual void onJoinChannelSuccess(const char *channelId, uid_t uid)=0
virtual void videoFrameReceived(unsigned int uid, const agora::linuxsdk::VideoFrame *frame) const =0
virtual void onLocalUserRegistered(uid_t uid, const char *userAccount)=0
virtual ~IRecordingEngineEventHandler()
Definition: IAgoraRecordingEngine.h:13
Definition: IAgoraRecordingEngine.h:535
virtual int joinChannel(const char *channelKey, const char *channelId, uid_t uid, const RecordingConfig &config)=0
virtual int setUserBackground(uid_t uid, const char *img_path)=0
virtual int updateSubscribeVideoUids(uid_t *uids, uint32_t num)=0
virtual int joinChannelWithUserAccount(const char *token, const char *channelId, const char *userAccount, const RecordingConfig &config)=0
virtual int getUserInfoByUid(uid_t uid, agora::linuxsdk::UserInfo *userInfo)=0
virtual int setVideoMixingLayout(const agora::linuxsdk::VideoMixingLayout &layout)=0
static IRecordingEngine * createAgoraRecordingEngine(const char *appId, IRecordingEngineEventHandler *eventHandler)
virtual int updateSubscribeAudioUids(uid_t *uids, uint32_t num)=0
virtual ~IRecordingEngine()
Definition: IAgoraRecordingEngine.h:547
virtual const RecordingEngineProperties * getProperties()=0
virtual int updateWatermarkConfigs(uint32_t wm_num, linuxsdk::WatermarkConfig *config)=0
virtual int setLogLevel(agora::linuxsdk::agora_log_level level)=0
virtual int getUserInfoByUserAccount(const char *userAccount, agora::linuxsdk::UserInfo *userinfo)=0
agora_log_level
Definition: IAgoraLinuxSdkCommon.h:247
USER_OFFLINE_REASON_TYPE
Definition: IAgoraLinuxSdkCommon.h:129
REMOTE_VIDEO_STREAM_TYPE
Definition: IAgoraLinuxSdkCommon.h:142
@ REMOTE_VIDEO_STREAM_HIGH
Definition: IAgoraLinuxSdkCommon.h:144
STAT_CODE_TYPE
Definition: IAgoraLinuxSdkCommon.h:48
TRIGGER_MODE_TYPE
Definition: IAgoraLinuxSdkCommon.h:219
@ AUTOMATICALLY_MODE
Definition: IAgoraLinuxSdkCommon.h:221
VIDEO_FORMAT_TYPE
Definition: IAgoraLinuxSdkCommon.h:150
@ VIDEO_FORMAT_DEFAULT_TYPE
Definition: IAgoraLinuxSdkCommon.h:152
RemoteStreamState
Definition: IAgoraLinuxSdkCommon.h:271
ConnectionChangedReasonType
Definition: IAgoraLinuxSdkCommon.h:357
ConnectionStateType
Definition: IAgoraLinuxSdkCommon.h:318
AUDIO_PROFILE_TYPE
Definition: IAgoraLinuxSdkCommon.h:237
@ AUDIO_PROFILE_DEFAULT
Definition: IAgoraLinuxSdkCommon.h:239
unsigned int uid_t
Definition: IAgoraLinuxSdkCommon.h:22
AUDIO_FORMAT_TYPE
Definition: IAgoraLinuxSdkCommon.h:171
@ AUDIO_FORMAT_DEFAULT_TYPE
Definition: IAgoraLinuxSdkCommon.h:173
LEAVE_PATH_CODE
Definition: IAgoraLinuxSdkCommon.h:77
CHANNEL_PROFILE_TYPE
Definition: IAgoraLinuxSdkCommon.h:120
@ CHANNEL_PROFILE_COMMUNICATION
Definition: IAgoraLinuxSdkCommon.h:122
RemoteStreamStateChangedReason
Definition: IAgoraLinuxSdkCommon.h:263
LANGUAGE_TYPE
Definition: IAgoraLinuxSdkCommon.h:229
@ CPP_LANG
Definition: IAgoraLinuxSdkCommon.h:231
MIXED_AV_CODEC_TYPE
Definition: IAgoraLinuxSdkCommon.h:281
@ MIXED_AV_DEFAULT
Definition: IAgoraLinuxSdkCommon.h:283
struct agora::recording::RecordingEngineProperties RecordingEngineProperties
struct agora::recording::RecordingConfig RecordingConfig
Definition: IAgoraLinuxSdkCommon.h:8
Definition: IAgoraLinuxSdkCommon.h:550
Definition: IAgoraLinuxSdkCommon.h:390
Definition: IAgoraLinuxSdkCommon.h:464
Definition: IAgoraLinuxSdkCommon.h:435
Definition: IAgoraLinuxSdkCommon.h:403
Definition: IAgoraLinuxSdkCommon.h:378
Definition: IAgoraLinuxSdkCommon.h:934
Definition: IAgoraLinuxSdkCommon.h:684
Definition: IAgoraLinuxSdkCommon.h:846
Definition: IAgoraLinuxSdkCommon.h:821
Definition: IAgoraRecordingEngine.h:239
bool isVideoOnly
Definition: IAgoraRecordingEngine.h:261
agora::linuxsdk::AUDIO_PROFILE_TYPE audioProfile
Definition: IAgoraRecordingEngine.h:442
agora::linuxsdk::REMOTE_VIDEO_STREAM_TYPE streamType
Definition: IAgoraRecordingEngine.h:419
agora::linuxsdk::CHANNEL_PROFILE_TYPE channelProfile
Definition: IAgoraRecordingEngine.h:416
const char * decryptionMode
Definition: IAgoraRecordingEngine.h:321
int proxyType
Definition: IAgoraRecordingEngine.h:431
bool isMixingEnabled
Definition: IAgoraRecordingEngine.h:274
bool enableCloudProxy
Definition: IAgoraRecordingEngine.h:289
RecordingConfig()
Definition: IAgoraRecordingEngine.h:489
int audioIndicationInterval
Definition: IAgoraRecordingEngine.h:414
const char * appliteDir
Definition: IAgoraRecordingEngine.h:330
agora::linuxsdk::VIDEO_FORMAT_TYPE decodeVideo
Definition: IAgoraRecordingEngine.h:376
bool enableIntraRequest
Definition: IAgoraRecordingEngine.h:480
const char * proxyServer
Definition: IAgoraRecordingEngine.h:439
int lowUdpPort
Definition: IAgoraRecordingEngine.h:386
agora::linuxsdk::MIXED_AV_CODEC_TYPE mixedVideoAudio
Definition: IAgoraRecordingEngine.h:296
int captureInterval
Definition: IAgoraRecordingEngine.h:408
const char * mixResolution
Definition: IAgoraRecordingEngine.h:307
agora::linuxsdk::LANGUAGE_TYPE lang
Definition: IAgoraRecordingEngine.h:423
const char * defaultVideoBg
Definition: IAgoraRecordingEngine.h:449
int idleLimitSec
Definition: IAgoraRecordingEngine.h:401
int highUdpPort
Definition: IAgoraRecordingEngine.h:391
virtual ~RecordingConfig()
Definition: IAgoraRecordingEngine.h:523
agora::linuxsdk::TRIGGER_MODE_TYPE triggerMode
Definition: IAgoraRecordingEngine.h:421
bool isAudioOnly
Definition: IAgoraRecordingEngine.h:250
const char * subscribeVideoUids
Definition: IAgoraRecordingEngine.h:465
agora::linuxsdk::AUDIO_FORMAT_TYPE decodeAudio
Definition: IAgoraRecordingEngine.h:381
const char * recordFileRootDir
Definition: IAgoraRecordingEngine.h:335
const char * subscribeAudioUids
Definition: IAgoraRecordingEngine.h:471
const char * defaultUserBg
Definition: IAgoraRecordingEngine.h:459
bool autoSubscribe
Definition: IAgoraRecordingEngine.h:282
bool enableH265Support
Definition: IAgoraRecordingEngine.h:486
const char * secret
Definition: IAgoraRecordingEngine.h:325
const char * cfgFilePath
Definition: IAgoraRecordingEngine.h:371
Definition: IAgoraRecordingEngine.h:527
RecordingEngineProperties()
Definition: IAgoraRecordingEngine.h:530
char * storageDir
Definition: IAgoraRecordingEngine.h:529