/****************************************************************************************************************** * Copyright(C): 本代码所有版权归MIGU所有 * @file : IMRTCEngine.hpp * @brief : MrtcSdk接口 * @version : 1.8.0 * @date : 2022/01/19 ******************************************************************************************************************/ #ifndef __I_RTC_ENGINE_HPP__ #define __I_RTC_ENGINE_HPP__ #include "MRTCEngineDefine.hpp" RTCENGINE_NAMESPACE_BEGIN class RTCENGINE_API RTCENGINE_API_CPP IMRTCEngine { public: DELETE_CTOR_COPY(IMRTCEngine); /** * @brief 构造函数 */ IMRTCEngine() = default; /** * @brief 析构函数 */ virtual ~IMRTCEngine() = default; public: /** * @brief 引擎初始化函数 * @param engineConfig 引擎配置结构体 * @param pCallBack 消息回调指针 * @return 返回0代表成功 */ virtual int16_t init(MRTCEngineConfig& engineConfig, IMRTCMessageCallBack* pCallBack) = 0; /** * @brief 引擎资源销毁 * @return 返回0代表成功 */ virtual int16_t destroy() = 0; /** * @brief 设置用户信息 * @param userId 用户id * @param displayName 用户昵称 * @param roomId 房间id * @return 返回0代表成功 */ virtual int16_t setUserInfo(const char* userId, const char* displayName, const char* roomId) = 0; /** * @brief 注册监听回调 * @param eType 监听类型 * @param pFun 回调基函数指针 * @return 返回0代表成功 */ virtual int16_t registerListener(MRTCListenerType eType, IMRTCBaseCallBack* pFun) = 0; /** * @brief 注册视频数据回调 * @param listenerType 视频回调类型 * @param dataType 视频数据格式 * @param userId 视频生产方的用户id * @param callBack 视频渲染回调指针 * @param MRTCVideoView* view windows专用 * @return 返回0代表成功 */ virtual int16_t registerVideoListener(MRTCVideoListenerType listenerType, MRTCVideoDataType dataType, const char* userId, IMRTCVideoRenderCallBack* callBack, MRTCVideoView* pView = nullptr) = 0; /** * @brief 注册远端视频编码后数据回调 * @param roomId 视频生产方的房间Id * @param userId 视频生产方的用户id * @param channelIndex 视频生产方的通道id * @param callBack 视频渲染回调指针 * @return 返回0代表成功 */ virtual int16_t registerRemoteEncodedVideoListener(MRTCVideoListenerType eListenerType, const char* roomId, const char* userId, const int16_t channelIndex, IMRTCRemoteEncodedVideoCallBack* pCallBack) = 0; /** * @brief 注册音频声浪值回调 * @param audioSourceType 音频类型 * @param userId 用户id * @param callBack 音频声浪值回调指针 * @return 返回0代表成功 */ virtual int16_t registerSoundLevelListener(MRTCAudioSourceType audioSourceType, const char* roomId, const char* peerId, const int16_t channelIndex, IMRTCReceivedAudioInfoCallBack* callBack) = 0; /** * @brief 进入房间 * @param authority 鉴权参数 * @param loginConfig 加入房间参数 * @return 返回0代表成功 */ virtual int16_t joinRoom(MRTCJoinAuthority& authority, MRTCJoinConfig& loginConfig) = 0; /** * @brief 离开房间 * @return 返回0代表成功 */ virtual int16_t leaveRoom() = 0; /** * @brief 进入房间 * @param address 房间地址 * @param port 房间端口 * @param authority 鉴权参数 * @param loginConfig 加入房间参数 * @return 返回0代表成功 */ virtual int16_t joinIMRoom(const char* address, const unsigned short port, MRTCJoinAuthority& authority, MRTMJoinConfig& loginConfig, const char* roomId = "") = 0; /** * @brief 离开房间 * @return 返回0代表成功 */ virtual int16_t leaveIMRoom(const char* roomId = "") = 0; /** * @brief 加入多房间 * @param roomId 加入的房间ID * @return 返回0代表成功 */ virtual int16_t joinMultiRoom(const char* roomId = "") = 0; /** * @brief 离开多房间 * @param loginConfig 离开的房间ID * @return 返回0代表成功 */ virtual int16_t leaveMultiRoom(const char* roomId = "") = 0; /** * @brief 开启摄像头本地预览 * @param option 摄像头预览参数 * @return 返回0代表成功 */ virtual int16_t startLocalPreview(const MRTCCameraOption& option) = 0; /** * @brief 关闭摄像头本地预览 * @return 返回0代表成功 */ virtual int16_t stopLocalPreview() = 0; /** * @brief 开始摄像头推流 * @param option 摄像头推流参数 * @return 返回0代表成功 */ virtual int16_t startPublishing(const MRTCPublishOption& option) = 0; /** * @brief 关闭摄像头推流 * @return 返回0代表成功 */ virtual int16_t stopPublishing() = 0; /** * @brief 开启屏幕分享 * @param option 屏幕分享参数 * @return 返回0代表成功 */ virtual int16_t startScreenSharing(const MRTCScreenOption& option) = 0; /** * @brief 关闭屏幕分享 * @return 返回0代表成功 */ virtual int16_t stopScreenSharing() = 0; /** * @brief 修改共享流模式 * @return 返回0代表成功 */ virtual int16_t changeVideoStreamMode(MRTCVideoSourceType videoSourceType,MRTCContentHint mode, int channelIndex = 0) = 0; /** * @brief 动态设置视频编码参数 * @return 返回0代表成功 */ virtual int16_t setVideoEncodeConfig(MRTCVideoSourceType videoSourceType, const MRTCVideoEncodeOption& option) = 0; /** * @brief 开启麦克风 * @param option 音频参数 * @return 返回0代表成功 */ virtual int16_t startMicStreaming(const MRTCAudioOption& option) = 0; /** * @brief 关闭麦克风 * @return 返回0代表成功 */ virtual int16_t stopMicStreaming() = 0; /** * @brief 设置模式(摄像头镜像、前后摄像头、扬声器开/关等) * @param type 模式类型 * @return 返回0代表成功 */ virtual int16_t setMode(MRTCModeType type) = 0; /** * @brief 暂停/继续消费者或自身摄像头/屏幕分享的视频流 * @param userId 用户id * @param videoSourceType 视频类型 * @param channelIndex 通道编号 * @param enable 暂停(true)或继续(false) * @return 返回0代表成功 */ virtual int16_t muteVideo(const char* roomId, const char* userId, MRTCVideoSourceType videoSourceType, bool bEnable = false, uint8_t channelIndex = 0) = 0; /** * @brief 暂停/继续消费者或自身摄像头/屏幕分享的音频流 * @param userId 用户id * @param audioSourceType 音频类型 * @param channelIndex 通道编号 * @param enable 暂停(true)或继续(false) * @return 返回0代表成功 */ virtual int16_t muteAudio(const char* roomId, const char* userId, MRTCAudioSourceType audioSourceType, bool bEnable = false, uint8_t channelIndex = 0) = 0; /** * @brief 设置音效/滤镜插件 * @param pluginIndex 插件序号,任意大于0的自然数 * @param type 插件类型 * @param plugin 插件回调基函数指针 * @return 返回0代表成功 */ virtual int16_t addEffectPlugin(int pluginIndex, MRTCPluginType type, IMRTCEffectPlugin* plugin) = 0; /** * @brief 移除音效/滤镜插件 * @param pluginIndex 插件序号 * @return 返回0代表成功 */ virtual int16_t removeEffectPlugin(int pluginIndex) = 0; /** * @brief 获取屏幕源/窗口源个数 * @param type 屏幕分享类型 * @param count 获取到的个数 * @return 返回0代表成功 */ virtual int16_t getShareSourceCount(MRTCScreenShareType type, uint16_t& count) = 0; /** * @brief 获取屏幕源/窗口源列表 * @param type 屏幕分享类型 * @param count 个数 * @param souceList 屏幕分享列表 * @return 返回0代表成功 */ virtual int16_t getShareSourceList(MRTCScreenShareType type, uint16_t count, MRTCShareSource* souceList) = 0; /********************************************************************************************* * 麦克风/扬声器操作接口 * ********************************************************************************************/ /** * @brief 设置音频输入/音频输出设备 * @param type 硬件设备类型 * @param setting 音频设备设置 * @return 返回0代表成功 */ virtual int16_t setAudioDevice(MRTCMediaDeviceType type, MRTCAudioDeviceOption setting) = 0; /** * @brief 设置本地音频的采集音量 * @param volume 0~100,默认值100;Android、iOS可超过100,超过100的volume会有爆音的风险,请谨慎操作 * @return 返回0代表成功 */ virtual int16_t setAudioCaptureVolume(uint32_t volume) = 0; /** * @brief 获取本地音频的采集音量 * @param volume 获取到的音量值 * @return 返回0代表成功 */ virtual int16_t getAudioCaptureVolume(uint32_t& volume) = 0; /** * @brief 设置音频的播放音量 * @param volume 0-100,默认值100;Android、iOS可超过100,超过100的volume会有爆音的风险,请谨慎操作 * @return 返回0代表成功 */ virtual int16_t setAudioPlayoutVolume(uint32_t volume) = 0; /** * @brief 获取音频的播放音量 * @param volume 获取到的音量值 * @return 返回0代表成功 */ virtual int16_t getAudioPlayoutVolume(uint32_t& volume) = 0; /** * @brief 获取音频播放设备/音频输入设备/摄像头数量(摄像头仅支持Windows) * @param type 硬件设备类型 * @param number 获取到的数量值 * @return 返回0代表成功 */ virtual int16_t getDevicesCount(MRTCMediaDeviceType type, uint32_t& number) = 0; /** * @brief 获取音频播放设备/音频输入设备名称 * @param type 硬件设备类型 * @param index 设备索引 * @param name 设备名称列表 * @param guid 设备id列表 * @return 返回0代表成功 */ virtual int16_t getAudioDeviceName(MRTCMediaDeviceType type, uint16_t index, char name[MAX_DEVICE_NAME_SIZE], char guid[MAX_DEVICE_GUID_SIZE]) = 0; /** * @brief 获取音频播放设备/音频输入设备选择序号 * @param type 硬件设备类型 * @param index 设备索引 * @return 返回0代表成功 */ virtual int16_t getMediaDeviceIndex(MRTCMediaDeviceType type, uint16_t& index) = 0; /** * @brief 获取摄像头设备名称(deviceUniqueId、productUniqueId为UTF8字符串) * @param index 设备索引 * @param name 设备名称列表 * @param deviceUniqueId 设备id列表 * @param productUniqueId 产品id列表 * @return 返回0代表成功 */ virtual int16_t getCameraDeviceName(uint16_t index, char name[MAX_DEVICE_NAME_SIZE], char deviceUniqueId[MAX_DEVICE_GUID_SIZE], char productUniqueId[MAX_DEVICE_GUID_SIZE]) = 0; /** * @brief 切换扬声器/麦克风/摄像头设备 * @param type 硬件设备类型 * @param device 设备名称 * @param index 设备序号 * @return 返回0代表成功 */ virtual int16_t switchDevice(MRTCMediaDeviceType type, const char* device, int index = -1000) = 0; /** * @brief 设置重连次数或者时间(若maxTimes、maxSeconds都为设置-1,则无限次重连,直到连上) * @param maxTimes 重连最大次数,-1为不限制次数 * @param maxSeconds 重连最大秒数,-1为不限制时间 * @return 返回0代表成功 */ virtual int16_t setReConnectLimit(int32_t maxTimes = -1, int32_t maxSeconds = -1) = 0; /** * @brief 设置拉流方式 * @param roomId 房间id * @param userId 用户id * @param sourceType 视频类型 * @param type 视频流类型 * @param channelIndex 流通道 * @return 返回0代表成功 */ virtual int16_t setPlayVideoStreamType(const char* roomId, const char* userId, MRTCVideoSourceType eSourceType, MRTCVideoStreamType eType , uint8_t channelIndex) = 0; /********************************************************************************************* * 视频分享接口 * ********************************************************************************************/ /** * @brief 注册视频分享进度回调 * @param callBack 视频分享进度回调指针 * @return 返回0代表成功 */ virtual int16_t registerVideoCallBack(IMRTCVideoProcessCallBack* callBack) = 0; /** * @brief 启动分享视频 * @param option 视频文件分享参数 * @param path 视频文件路径 * @param loop 是否循环播放 * @return 返回0代表成功 */ virtual int16_t startPlayVideo(const MRTCVideoFileOption& option, const char* path, bool loop = true) = 0; /** * @brief 停止分享视频 * @return 返回0代表成功 */ virtual int16_t stopPlayVideo() = 0; /** * @brief 暂停播放视频文件 * @return 返回0代表成功 */ virtual int16_t pausePlayVideo() = 0; /** * @brief 继续播放视频文件 * @return 返回0代表成功 */ virtual int16_t resumePlayVideo() = 0; /** * @brief 获取视频文件总时长,单位毫秒 * @param path 视频文件路径 * @param duration 获取到的文件时长 * @return 返回0代表成功 */ virtual int16_t getVideoDurationInMS(const char* path, uint32_t& duration) = 0; /** * @brief 设置视频播放进度 * @param pos 播放位置 * @return 返回0代表成功 */ virtual int16_t seekVideoToPosInMS(uint32_t pos) = 0; /** * @brief 设置视频播放的音量 * @param volume 0~100 * @return 返回0代表成功 */ virtual int16_t setVideoPlayoutVolume(int16_t volume) = 0; /** * @brief 设置视频远端播放音量 * @param volume 0~100 * @return 返回0代表成功 */ virtual int16_t setVideoPublishVolume(int16_t volume) = 0; /************************************************************************************************* * * 以下接口Windows平台暂不可用 * * *************************************************************************************************/ //#ifndef WIN32 /** * @brief 开启音频共享 * @param option 音频参数 * @return 返回0代表成功 */ virtual int16_t startShareAudioStreaming(const MRTCAudioOption& option) = 0; /** * @brief 关闭音频共享 * @return 返回0代表成功 */ virtual int16_t stopShareAudioStreaming() = 0; /** * @brief 开启耳返功能 * @param enable 开启(true)或关闭(false) * @return 返回0代表成功 */ virtual int16_t setInearMonitoring(bool enable) = 0; /** * @brief 设置耳返音量 * @param volume 0~100 * @return 返回0代表成功 */ virtual int16_t setInEarMonitoringVolume(int16_t volume) = 0; /********************************************************************************************* * 背景音乐操作接口 * ********************************************************************************************/ /** * @brief 注册背景音乐进度回调 * @param callBack 背景音乐进度回调函数指针 * @return 返回0代表成功 */ virtual int16_t registerMusicCallBack(IMRTCMusicProcessCallBack* callBack) = 0; /** * @brief 启动播放背景音乐 * @param path 背景音乐路径 * @param loop 是否循环播放 * @return 返回0代表成功 */ virtual int16_t startPlayMusic(const char* path, bool loop = true) = 0; /** * @brief 停止播放背景音乐 * @return 返回0代表成功 */ virtual int16_t stopPlayMusic() = 0; /** * @brief 暂停播放背景音乐 * @return 返回0代表成功 */ virtual int16_t pausePlayMusic() = 0; /** * @brief 继续播放背景音乐 * @return 返回0代表成功 */ virtual int16_t resumePlayMusic() = 0; /** * @brief 获取音乐文件总时长,单位毫秒 * @param path 音乐文件路径 * @param duration 获取到的时长 * @return 返回0代表成功 */ virtual int16_t getMusicDurationInMS(const char* path, uint32_t& duration) = 0; /** * @brief 设置音乐播放进度 * @param pos 播放位置 * @return 返回0代表成功 */ virtual int16_t seekMusicToPosInMS(uint32_t pos) = 0; /** * @brief 设置音乐播放的音量 * @param volume 0~100 * @return 返回0代表成功 */ virtual int16_t setMusicPlayoutVolume(int16_t volume) = 0; /** * @brief 设置音乐远端播放音量 * @param volume 0~100 * @return 返回0代表成功 */ virtual int16_t setMusicPublishVolume(int16_t volume) = 0; /********************************************************************************************* * 自定义视频接口 * ********************************************************************************************/ /** * @brief 开启自定义视频 * @param option 自定义视频流参数 * @return 返回0代表成功 */ virtual int16_t StartCustomVideo(const MRTCCustomVideoOption& option) = 0; /** * @brief 关闭摄像头推流 * @return 返回0代表成功 */ virtual int16_t stopCustomVideo() = 0; /** * @brief 发送自定义视频数据 * @param frame 视频帧数据 * @return 返回0代表成功 */ virtual int16_t sendCustomVideoData(const MRTCVideoFrame& frame) = 0; // // 开启多路自定义视频 // virtual int16_t StartCustomVideo(const MRTCCustomVideoOption& objOption,MRTCPublishChannel channel) = 0; // // 关闭指定某通道推流 // virtual int16_t stopCustomVideo(MRTCPublishChannel channel) = 0; // // 指定发送多路自定义视频数据 // virtual int16_t sendCustomVideoData(const MRTCVideoFrame& objFrame,MRTCPublishChannel channel) = 0; /********************************************************************************************* * 自定义音频接口 * ********************************************************************************************/ /** * @brief 开启自定义音频 * @param option 音频参数 * @return 返回0代表成功 */ virtual int16_t startCustomAudio(const MRTCAudioOption& option) = 0; /** * @brief 关闭自定义音频 * @param channeIndex 通道 * @return 返回0代表成功 */ virtual int16_t stopCustomAudio(uint8_t channelIndex = 0) = 0; /** * @brief 发送自定义音频数据 * @param channeIndex 通道 * @param data 音频数据,默认采用16bit的位深进行采样 * @param sampleRate 采样率 * @param numberOfChannels 通道数 * @param dataLength 数据长度 * @return 返回0代表成功 */ virtual int16_t sendCustomAudioData(uint8_t channelIndex = 0, const void* pData = nullptr, int32_t nSampleRate = 48000, uint64_t nNumberOfChannels = 2, uint64_t dataLength = 0) = 0; /** * @brief 发送自定义AAC音频数据 * @param channeIndex 通道 * @param data AAC音频数据 * @param dataLength 数据长度 * @param sampleRate 采样率 * @param channels 通道数 * @return 返回0代表成功 */ virtual int16_t sendCustomAudioAACData(uint8_t channelIndex = 0, const unsigned char* pData = nullptr, unsigned int nDataLength = 0, uint32_t sampleRate = 48000, uint32_t channels = 2) = 0; /** * @brief 设置自定义音频推流音量 * @param volume 0~100 * @return 返回0代表成功 */ virtual int16_t setCustomAudioPublishVolume(int16_t volume) = 0; /********************************************************************************************* * 自定义裸视频流接口 * ********************************************************************************************/ /** * @brief 开启自定义裸视频 * @param option 自定义裸视频流参数 * @return 返回0代表成功 */ virtual int16_t startCustomRawVideo(const MRTCCustomRawVideoOption& option) = 0; /** * @brief 关闭自定义裸视频推流 * @return 返回0代表成功 */ virtual int16_t stopCustomRawVideo(uint8_t channelIndex = 0) = 0; /** * @brief 发送自定义裸视频数据 * @param * @return 返回0代表成功 */ virtual int16_t sendCustomRawVideoData(const MRTCRawVideoFrame& frame) = 0; /** * @brief 切换用户角色 * @inparam role 角色 * @return 返回0代表成功 */ virtual int16_t switchClientRole(const MRTCClientRole& role) = 0; /** * @brief 获取房间总人数 * @outparam nCount * @return 返回0代表成功 */ virtual int16_t getUserCount(int32_t& nCount) = 0; /** * @brief 分页获取房间用户列表 * @outparam peerList 人员列表 * @outparam nCount 个数 * @inparam page 页数 默认 0 * @inparam limit 每页人数限制 0-100 默认 10 * @return 返回0代表成功 */ virtual int16_t getRoomUsers(MRTCRoomUserInfo* peerList, int32_t& nCount, const int32_t page = 0, const int32_t limit = 10) = 0; /** * @brief 分页获取房间用户列表 * @outparam peerList 人员列表 * @outparam nCount 个数 * @inparam page 页数 默认 0 * @inparam limit 每页人数限制 0-100 默认 10 * @return 返回0代表成功 */ virtual int16_t getRTMRoomUsers(MRTMRoomUserInfo* peerList, int32_t& nCount, const char* roomId, const int32_t page = 0, const int32_t limit = 10) = 0; //#endif /************************************************************************************************* * * 以下是其他平台特性接口 * * *************************************************************************************************/ /** * @brief 同步网络状态 */ virtual void synNetworkStaus(bool enable, const char* networkType) = 0; /** * @brief 开始播放设备 */ virtual int16_t StartPlayout() = 0; /** * @brief 停止播放设备 */ virtual int16_t StopPlayout()= 0; #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS) // // 设置使用通话、媒体 // virtual int16_t setUseMedia(bool bPlayoutUseMedia, bool bRecordUseMedia) = 0; #endif // // 安卓音视频启动、采集错误上报 // virtual void getWebrtcVideoAndAudioDeviceError(int16_t sourceType, const char * errorMsg) = 0; // // 设置混流推流 // virtual int16_t startLiveStreaming(MRTCLiveStreamingInfo& liveStreamingInfo, MRTCPublishAndMixEncoding& encoding, std::vector userList) = 0; // // 更新混流推流 // virtual int16_t updateLiveStreaming(std::vector userList, MRTCLiveStreamMode mode) = 0; // // 停止混流推流 // virtual int16_t stopLiveStreaming() = 0; // // 发送自定义消息 // virtual int16_t sendCustomMessage(const char* roomid, const char* peerid,std::vector m_Peers,const char* content) = 0; // // 设置硬编码 // virtual int16_t requireHardwareEncoder(bool enable = true) = 0; // // 设置硬解码 // virtual int16_t requireHardwareDecoder(bool enable = true) = 0; // // 设置是否打开丢帧 // virtual int16_t setEnableIgnoreFrame(bool enable = true) = 0; // // 根据StreamID 调整音量 // virtual int16_t SetPlayVolume(const std::string peerId, const std::string dataType, int16_t audioSourceType, int16_t videoSourceType, int16_t volume) = 0; // // 上传Dump文件 // virtual int16_t uploadDump(const char*& errorMessage) = 0; virtual int16_t setVerbose(bool on) = 0; // // 开启自定义数据传输 // virtual int16_t StartCustomData(const char* customParam) = 0; // // 关闭自定义数据传输 // virtual int16_t StopCustomData() = 0; // // 发送自定义数据 // virtual int16_t SendCustomData(const MRTCCustomDataObject &object) = 0; // // 设置特定某路视频流超分的开关 // virtual int16_t EnableSuperResolution(MRTCSuperResolutionOption& srOption) = 0; // // 开启H265编码,接口已废弃 // virtual int16_t EnableH265(bool enable) = 0; // 开启安全模式,限制某些特性 virtual void EnterMRTCSafeMode(MRTCSafeMode safeMode,bool isEnable) = 0; // 外部创建混音能力 virtual void enableAudioMixCapablity(bool enable,int audioSampleRate, int audioChannel) = 0; // 外部发送混音音频数据 virtual int16_t sendAudioMixData(const int16_t* audioData, int32_t dataLength, int32_t audioVolume) = 0; // 设置关键帧间隔 virtual int16_t setVideoKeyFrameInterval(int interval) = 0; // 设置音频信息回调间隔 virtual int16_t setAudioInfoInterval(int interval) = 0; // 设置质量回调间隔 virtual int16_t setQualityInterval(int interval) = 0; // 设置Vad开关 virtual int16_t enabelVad(bool enable) = 0; // 设置mic静音 virtual int16_t SetMicMute(bool bMute) = 0; // 获取Mic是否静音 virtual bool IsMicMuted() = 0; // 获取SDK能力清单 virtual const char* SDKCapability() = 0; // 获取摄像头能力 pCamList传入最大10数组指针 virtual int16_t getCameraCapabilities(MRTCCameraCapabilities* pCamList, int& nCount) = 0; // 这里是兼容处理,正常情况这个宏是预编译就定义好的 // 防止某个平台未定义,定义默认值为使用异步 #ifndef API_SYNC #define API_SYNC 0 #endif // static void setUseSyncApi(bool enable) { //// 这个方法只能这么写,否则define会报警告,有可能执行错误 //// 需要重新定义API_SYNC 的值 // if (enable){ //#ifdef API_SYNC //#undef API_SYNC //#endif //#define API_SYNC 1 // SL_LOG_DEBUG2("Engine::setUseSyncApi", "Use sync api."); // } else { //#ifdef API_SYNC //#undef API_SYNC //#endif //#define API_SYNC 0 // SL_LOG_DEBUG2("Engine::setUseSyncApi", "Use async api."); // } // } }; /** * @brief 获取SDK版本H265H26 */ RTCENGINE_API const char* getSDKVersion(); /** * @brief 获取Git版本 */ RTCENGINE_API const char* getGitVersion(); /** * @brief 获取编译时间 */ RTCENGINE_API const char* getBuildTime(); /** * @brief 上传日志 */ RTCENGINE_API int16_t uploadLog(const char* applicationId, const char* userId, const char* userName, const char*& errorMessage); /** * @brief 设置日志路径 */ RTCENGINE_API void setSDKLogDirectory(const char* logDirectory); #ifdef __ANDROID__ RTCENGINE_API void InitJavaVM(jobject context, jobject activity); RTCENGINE_API void UnInitJavaVM(); RTCENGINE_API void* GetPCClient(); RTCENGINE_API void RequestScreenShare(IMRTCRequestCallBack* callbak); #endif RTCENGINE_NAMESPACE_END #endif //__I_RTC_ENGINE_HPP__