rtc_plugins/include/IMRTCEngine.hpp

873 lines
28 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/******************************************************************************************************************
* 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默认值100Android、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默认值100Android、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<mrtc::MRTCPublishAndMixUserList> userList) = 0;
//
// 更新混流推流
//
virtual int16_t updateLiveStreaming(std::vector<mrtc::MRTCPublishAndMixUserList> userList,
MRTCLiveStreamMode mode) = 0;
//
// 停止混流推流
//
virtual int16_t stopLiveStreaming() = 0;
//
// 发送自定义消息
//
virtual int16_t sendCustomMessage(const char* roomid, const char* peerid,std::vector<std::string> 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__