AnyChatCoreSDK.h
#ifndef ANYCHATCORESDK_H
#define ANYCHATCORESDK_H #include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include "BRAnyChatCoreSDK.h" // 初始化系统
BRAC_API DWORD BRAC_InitSDK(HWND hWnd, DWORD dwFuncMode);
typedef DWORD (_cdecl * BRAC_InitSDK_Func)(HWND hWnd, DWORD dwFuncMode); // 获取SDK版本信息
BRAC_API DWORD BRAC_GetSDKVersion(DWORD& dwMainVer, DWORD& dwSubVer, LPSTR lpCompileTime, DWORD dwBufLen);
typedef DWORD(_cdecl * BRAC_GetSDKVersion_Func)(DWORD& dwMainVer, DWORD& dwSubVer, LPSTR lpCompileTime, DWORD dwBufLen); // 激活(关闭)SDK调用日志
BRAC_API DWORD BRAC_ActiveCallLog(BOOL bActive);
typedef DWORD(_cdecl * BRAC_ActiveCallLog_Func)(BOOL bActive); // SDK内核参数设置
BRAC_API DWORD BRAC_SetSDKOption(int optname, const char FAR* optval, int optlen);
typedef DWORD(_cdecl * BRAC_SetSDKOption_Func)(int optname, const char FAR* optval, int optlen); // 设置服务器验证密码(可用于阻止非法用户用SDK连接服务器,合法用户可正常连接)
BRAC_API DWORD BRAC_SetServerAuthPass(LPCTSTR lpPassword);
typedef DWORD(_cdecl * BRAC_SetServerAuthPass_Func)(LPCTSTR lpPassword); // 设置视频数据回调函数
BRAC_API DWORD BRAC_SetVideoDataCallBack(BRAC_PixelFormat pixFmt, BRAC_VideoData_CallBack lpFunction, LPVOID lpUserValue);
typedef DWORD(_cdecl * BRAC_SetVideoDataCallBack_Func)(BRAC_PixelFormat pixFmt, BRAC_VideoData_CallBack lpFunction, LPVOID lpUserValue);
// 设置音频数据回调函数
BRAC_API DWORD BRAC_SetAudioDataCallBack(BRAC_AudioData_CallBack lpFunction, LPVOID lpUserValue);
typedef DWORD(_cdecl * BRAC_SetAudioDataCallBack_Func)(BRAC_AudioData_CallBack lpFunction, LPVOID lpUserValue);
// 设置音量变化回调函数
BRAC_API DWORD BRAC_SetVolumeChangeCallBack(BRAC_VolumeChange_CallBack lpFunction, LPVOID lpUserValue);
typedef DWORD(_cdecl * BRAC_SetVolumeChangeCallBack_Func)(BRAC_VolumeChange_CallBack lpFunction, LPVOID lpUserValue);
// 设置透明通道数据扩展回调函数
BRAC_API DWORD BRAC_SetTransBufferExCallBack(BRAC_TransBufferEx_CallBack lpFunction, LPVOID lpUserValue);
typedef DWORD(_cdecl * BRAC_SetTransBufferExCallBack_Func)(BRAC_TransBufferEx_CallBack lpFunction, LPVOID lpUserValue);
// 设置透明通道数据回调函数
BRAC_API DWORD BRAC_SetTransBufferCallBack(BRAC_TransBuffer_CallBack lpFunction, LPVOID lpUserValue);
typedef DWORD(_cdecl * BRAC_SetTransBufferCallBack_Func)(BRAC_TransBuffer_CallBack lpFunction, LPVOID lpUserValue);
// 设置文件传输回调函数
BRAC_API DWORD BRAC_SetTransFileCallBack(BRAC_TransFile_CallBack lpFunction, LPVOID lpUserValue);
typedef DWORD(_cdecl * BRAC_SetTransFileCallBack_Func)(BRAC_TransFile_CallBack lpFunction, LPVOID lpUserValue);
// 设置录像快照任务完成通知回调函数
BRAC_API DWORD BRAC_SetRecordSnapShotCallBack(BRAC_RecordSnapShot_CallBack lpFunction, LPVOID lpUserValue);
typedef DWORD(_cdecl * BRAC_SetRecordSnapShotCallBack_Func)(BRAC_RecordSnapShot_CallBack lpFunction, LPVOID lpUserValue);
// 设置SDK Filter通信数据回调函数定义
BRAC_API DWORD BRAC_SetSDKFilterDataCallBack(BRAC_SDKFilterData_CallBack lpFunction, LPVOID lpUserValue);
typedef DWORD(_cdecl * BRAC_SetSDKFilterDataCallBack_Func)(BRAC_SDKFilterData_CallBack lpFunction, LPVOID lpUserValue);
// 设置异步消息通知回调函数
BRAC_API DWORD BRAC_SetNotifyMessageCallBack(BRAC_NotifyMessage_CallBack lpFunction, LPVOID lpUserValue);
typedef DWORD(_cdecl * BRAC_SetNotifyMessageCallBack_Func)(BRAC_NotifyMessage_CallBack lpFunction, LPVOID lpUserValue);
// 设置文字消息回调函数
BRAC_API DWORD BRAC_SetTextMessageCallBack(BRAC_TextMessage_CallBack lpFunction, LPVOID lpUserValue);
typedef DWORD(_cdecl * BRAC_SetTextMessageCallBack_Func)(BRAC_TextMessage_CallBack lpFunction, LPVOID lpUserValue); // 连接服务器
BRAC_API DWORD BRAC_Connect(LPCTSTR lpServerAddr, DWORD dwPort);
typedef DWORD(_cdecl * BRAC_Connect_Func)(LPCTSTR lpServerAddr, DWORD dwPort);
// 登录系统
BRAC_API DWORD BRAC_Login(LPCTSTR lpUserName, LPCTSTR lpPassword, DWORD dwPassEncType);
typedef DWORD(_cdecl * BRAC_Login_Func)(LPCTSTR lpUserName, LPCTSTR lpPassword, DWORD dwPassEncType);
// 进入房间
BRAC_API DWORD BRAC_EnterRoom(DWORD dwRoomid, LPCTSTR lpRoomPass, DWORD dwPassEncType);
typedef DWORD(_cdecl * BRAC_EnterRoom_Func)(DWORD dwRoomid, LPCTSTR lpRoomPass, DWORD dwPassEncType);
// 进入房间
BRAC_API DWORD BRAC_EnterRoomEx(LPCTSTR lpRoomName, LPCTSTR lpRoomPass);
typedef DWORD(_cdecl * BRAC_EnterRoomEx_Func)(LPCTSTR lpRoomName, LPCTSTR lpRoomPass);
// 离开房间
BRAC_API DWORD BRAC_LeaveRoom(DWORD dwRoomid);
typedef DWORD(_cdecl * BRAC_LeaveRoom_Func)(DWORD dwRoomid);
// 注销系统
BRAC_API DWORD BRAC_Logout(VOID);
typedef DWORD(_cdecl * BRAC_Logout_Func)(VOID); // 操作用户视频
BRAC_API DWORD BRAC_UserCameraControl(DWORD dwUserid, BOOL bOpen);
typedef DWORD(_cdecl * BRAC_UserCameraControl_Func)(DWORD dwUserid, BOOL bOpen);
// 操作用户语音
BRAC_API DWORD BRAC_UserSpeakControl(DWORD dwUserid, BOOL bOpen);
typedef DWORD(_cdecl * BRAC_UserSpeakControl_Func)(DWORD dwUserid, BOOL bOpen);
// 设置视频显示位置
BRAC_API DWORD BRAC_SetVideoPos(DWORD dwUserid, HWND hWnd, DWORD dwLeft, DWORD dwTop, DWORD dwRight, DWORD dwBottom);
typedef DWORD(_cdecl * BRAC_SetVideoPos_Func)(DWORD dwUserid, HWND hWnd, DWORD dwLeft, DWORD dwTop, DWORD dwRight, DWORD dwBottom);
// 获取指定音频设备的当前音量
BRAC_API DWORD BRAC_AudioGetVolume(BRAC_AudioDevice device, DWORD& dwVolume);
typedef DWORD(_cdecl * BRAC_AudioGetVolume_Func)(BRAC_AudioDevice device, DWORD& dwVolume);
// 设置指定音频设备的音量
BRAC_API DWORD BRAC_AudioSetVolume(BRAC_AudioDevice device, DWORD dwVolume);
typedef DWORD(_cdecl * BRAC_AudioSetVolume_Func)(BRAC_AudioDevice device, DWORD dwVolume); // 获取当前房间在线用户列表
BRAC_API DWORD BRAC_GetOnlineUser(LPDWORD lpUserIDArray, DWORD& dwUserNum);
typedef DWORD(_cdecl * BRAC_GetOnlineUser_Func)(LPDWORD lpUserIDArray, DWORD& dwUserNum);
// 查询用户摄像头的状态
BRAC_API DWORD BRAC_GetCameraState(DWORD dwUserid, DWORD& dwState);
typedef DWORD(_cdecl * BRAC_GetCameraState_Func)(DWORD dwUserid, DWORD& dwState);
// 查询用户名称
BRAC_API DWORD BRAC_GetUserName(DWORD dwUserid, CHAR* lpUserName, DWORD dwLen);
typedef DWORD(_cdecl * BRAC_GetUserName_Func)(DWORD dwUserid, CHAR* lpUserName, DWORD dwLen);
// 查询房间名称
BRAC_API DWORD BRAC_GetRoomName(DWORD dwRoomId, CHAR* lpRoomName, DWORD dwLen);
typedef DWORD(_cdecl * BRAC_GetRoomName_Func)(DWORD dwRoomId, CHAR* lpRoomName, DWORD dwLen);
// 显示本地视频画面调节对话框
BRAC_API DWORD BRAC_ShowLVProperty(HWND hParent, LPCTSTR szCaption, DWORD dwX ,DWORD dwY);
typedef DWORD(_cdecl * BRAC_ShowLVProperty_Func)(HWND hParent, LPCTSTR szCaption, DWORD dwX ,DWORD dwY); // 枚举本地视频采集设备
BRAC_API DWORD BRAC_EnumVideoCapture(CHAR** lpDeviceName, DWORD& dwDeviceNum);
typedef DWORD(_cdecl * BRAC_EnumVideoCapture_Func)(CHAR** lpDeviceName, DWORD& dwDeviceNum);
// 枚举本地音频采集设备
BRAC_API DWORD BRAC_EnumAudioCapture(CHAR** lpDeviceName, DWORD& dwDeviceNum);
typedef DWORD(_cdecl * BRAC_EnumAudioCapture_Func)(CHAR** lpDeviceName, DWORD& dwDeviceNum);
// 选择指定的视频采集设备
BRAC_API DWORD BRAC_SelectVideoCapture(LPCTSTR szCaptureName);
typedef DWORD(_cdecl *BRAC_SelectVideoCapture_Func)(LPCTSTR szCaptureName);
// 选择指定的音频采集设备
BRAC_API DWORD BRAC_SelectAudioCapture(LPCTSTR szCaptureName);
typedef DWORD(_cdecl * BRAC_SelectAudioCapture_Func)(LPCTSTR szCaptureName);
// 获取当前使用的视频采集设备
BRAC_API DWORD BRAC_GetCurVideoCapture(CHAR* lpDeviceName, DWORD dwLen);
typedef DWORD(_cdecl * BRAC_GetCurVideoCapture_Func)(CHAR* lpDeviceName, DWORD dwLen);
// 获取当前使用的音频采集设备
BRAC_API DWORD BRAC_GetCurAudioCapture(CHAR* lpDeviceName, DWORD dwLen);
typedef DWORD(_cdecl * BRAC_GetCurAudioCapture_Func)(CHAR* lpDeviceName, DWORD dwLen); // 用户音、视频录制
BRAC_API DWORD BRAC_StreamRecordCtrl(DWORD dwUserId, BOOL bStartRecord, DWORD dwFlags, DWORD dwParam);
typedef DWORD(_cdecl* BRAC_StreamRecordCtrl_Func)(DWORD dwUserId, BOOL bStartRecord, DWORD dwFlags, DWORD dwParam);
// 对用户的视频进行抓拍(快照)
BRAC_API DWORD BRAC_SnapShot(DWORD dwUserId, DWORD dwFlags, DWORD dwParam);
typedef DWORD(_cdecl* BRAC_SnapShot_Func)(DWORD dwUserId, DWORD dwFlags, DWORD dwParam); // 透明通道传送缓冲区
BRAC_API DWORD BRAC_TransBuffer(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen);
typedef DWORD(_cdecl * BRAC_TransBuffer_Func)(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen);
// 透明通道传送缓冲区扩展
BRAC_API DWORD BRAC_TransBufferEx(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen, DWORD wParam, DWORD lParam, DWORD dwFlags, DWORD& dwTaskId);
typedef DWORD(_cdecl * BRAC_TransBufferEx_Func)(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen, DWORD wParam, DWORD lParam, DWORD dwFlags, DWORD& dwTaskId);
// 传送文件
BRAC_API DWORD BRAC_TransFile(DWORD dwUserid, LPCTSTR lpLocalPathName, DWORD wParam, DWORD lParam, DWORD dwFlags, DWORD& dwTaskId);
typedef DWORD(_cdecl * BRAC_TransFile_Func)(DWORD dwUserid, LPCTSTR lpLocalPathName, DWORD wParam, DWORD lParam, DWORD dwFlags, DWORD& dwTaskId);
// 取消传输任务
BRAC_API DWORD BRAC_CancelTransTask(DWORD dwUserid, DWORD dwTaskId);
typedef DWORD(_cdecl * BRAC_CancelTransTask_Func)(DWORD dwUserid, DWORD dwTaskId);
// 传送文本消息
BRAC_API DWORD BRAC_SendTextMessage(DWORD dwUserid, BOOL bSecret, LPCTSTR lpMsgBuf, DWORD dwLen);
typedef DWORD(_cdecl * BRAC_SendTextMessage_Func)(DWORD dwUserid, BOOL bSecret, LPCTSTR lpMsgBuf, DWORD dwLen);
// 查询传输任务相关信息
BRAC_API DWORD BRAC_QueryTransTaskInfo(DWORD dwUserid, DWORD dwTaskId, int infoname, char FAR* infoval, int infolen);
typedef DWORD(_cdecl * BRAC_QueryTransTaskInfo_Func)(DWORD dwUserid, DWORD dwTaskId, int infoname, char FAR* infoval, int infolen);
// 发送SDK Filter 通信数据
BRAC_API DWORD BRAC_SendSDKFilterData(LPBYTE lpBuf, DWORD dwLen);
typedef DWORD(_cdecl * BRAC_SendSDKFilterData_Func)(LPBYTE lpBuf, DWORD dwLen); // 查询指定用户相关状态
BRAC_API DWORD BRAC_QueryUserState(DWORD dwUserId, int infoname, char FAR* infoval, int infolen);
typedef DWORD(_cdecl * BRAC_QueryUserState_Func)(DWORD dwUserId, int infoname, char FAR* infoval, int infolen); // 释放所有资源
BRAC_API DWORD BRAC_Release(VOID);
typedef DWORD(_cdecl * BRAC_Release_Func)(VOID); #ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */ static HINSTANCE g_BRACModule=NULL;
static DWORD g_dwBRACModule_Count = ; static BRAC_InitSDK_Func g_BRAC_InitSDK_Func = NULL;
static BRAC_GetSDKVersion_Func g_BRAC_GetSDKVersion_Func = NULL;
static BRAC_ActiveCallLog_Func g_BRAC_ActiveCallLog_Func = NULL;
static BRAC_SetSDKOption_Func g_BRAC_SetSDKOption_Func = NULL;
static BRAC_SetVideoDataCallBack_Func g_BRAC_SetVideoDataCallBack_Func = NULL;
static BRAC_SetAudioDataCallBack_Func g_BRAC_SetAudioDataCallBack_Func = NULL;
static BRAC_SetVolumeChangeCallBack_Func g_BRAC_SetVolumeChangeCallBack_Func = NULL;
static BRAC_SetTransBufferExCallBack_Func g_BRAC_SetTransBufferExCallBack_Func = NULL;
static BRAC_SetTransBufferCallBack_Func g_BRAC_SetTransBufferCallBack_Func = NULL;
static BRAC_SetTransFileCallBack_Func g_BRAC_SetTransFileCallBack_Func = NULL;
static BRAC_SetRecordSnapShotCallBack_Func g_BRAC_SetRecordSnapShotCallBack_Func = NULL;
static BRAC_SetSDKFilterDataCallBack_Func g_BRAC_SetSDKFilterDataCallBack_Func = NULL;
static BRAC_AudioGetVolume_Func g_BRAC_AudioGetVolume_Func = NULL;
static BRAC_SetServerAuthPass_Func g_BRAC_SetServerAuthPass_Func = NULL;
static BRAC_Connect_Func g_BRAC_Connect_Func = NULL;
static BRAC_Login_Func g_BRAC_Login_Func = NULL;
static BRAC_SetNotifyMessageCallBack_Func g_BRAC_SetNotifyMessageCallBack_Func = NULL;
static BRAC_SetTextMessageCallBack_Func g_BRAC_SetTextMessageCallBack_Func = NULL;
static BRAC_GetUserName_Func g_BRAC_GetUserName_Func = NULL;
static BRAC_GetRoomName_Func g_BRAC_GetRoomName_Func = NULL;
static BRAC_EnterRoom_Func g_BRAC_EnterRoom_Func = NULL;
static BRAC_SetVideoPos_Func g_BRAC_SetVideoPos_Func = NULL;
static BRAC_UserCameraControl_Func g_BRAC_UserCameraControl_Func = NULL;
static BRAC_UserSpeakControl_Func g_BRAC_UserSpeakControl_Func = NULL;
static BRAC_AudioSetVolume_Func g_BRAC_AudioSetVolume_Func = NULL;
static BRAC_Release_Func g_BRAC_Release_Func = NULL;
static BRAC_EnterRoomEx_Func g_BRAC_EnterRoomEx_Func = NULL;
static BRAC_LeaveRoom_Func g_BRAC_LeaveRoom_Func = NULL;
static BRAC_GetOnlineUser_Func g_BRAC_GetOnlineUser_Func = NULL;
static BRAC_GetCameraState_Func g_BRAC_GetCameraState_Func = NULL;
static BRAC_Logout_Func g_BRAC_Logout_Func = NULL;
static BRAC_TransFile_Func g_BRAC_TransFile_Func = NULL;
static BRAC_QueryTransTaskInfo_Func g_BRAC_QueryTransTaskInfo_Func = NULL;
static BRAC_QueryUserState_Func g_BRAC_QueryUserState_Func = NULL;
static BRAC_TransBufferEx_Func g_BRAC_TransBufferEx_Func = NULL;
static BRAC_TransBuffer_Func g_BRAC_TransBuffer_Func = NULL;
static BRAC_CancelTransTask_Func g_BRAC_CancelTransTask_Func = NULL;
static BRAC_SendTextMessage_Func g_BRAC_SendTextMessage_Func = NULL;
static BRAC_ShowLVProperty_Func g_BRAC_ShowLVProperty_Func = NULL;
static BRAC_SelectVideoCapture_Func g_BRAC_SelectVideoCapture_Func = NULL;
static BRAC_SelectAudioCapture_Func g_BRAC_SelectAudioCapture_Func = NULL;
static BRAC_EnumVideoCapture_Func g_BRAC_EnumVideoCapture_Func = NULL;
static BRAC_GetCurVideoCapture_Func g_BRAC_GetCurVideoCapture_Func = NULL;
static BRAC_EnumAudioCapture_Func g_BRAC_EnumAudioCapture_Func = NULL;
static BRAC_GetCurAudioCapture_Func g_BRAC_GetCurAudioCapture_Func = NULL;
static BRAC_SendSDKFilterData_Func g_BRAC_SendSDKFilterData_Func = NULL;
static BRAC_StreamRecordCtrl_Func g_BRAC_StreamRecordCtrl_Func = NULL;
static BRAC_SnapShot_Func g_BRAC_SnapShot_Func = NULL; #ifdef WIN32
#define BRAC_DLL_ASSIGN(_Name) \
g_BRAC_##_Name##_Func = (BRAC_##_Name##_Func)GetProcAddress(g_BRACModule,"BRAC_"#_Name); \
if (g_BRAC_##_Name##_Func == NULL) Errors++;
#else
#define BRAC_DLL_ASSIGN(_Name) \
g_BRAC_##_Name##_Func = (BRAC_##_Name##_Func)dlsym(g_BRACModule,"BRAC_"#_Name); \
if (g_BRAC_##_Name##_Func == NULL) Errors++;
#endif static BOOL BRAC_DLL_Load(LPCTSTR szPathName)
{
if (g_dwBRACModule_Count > )
{
g_dwBRACModule_Count++;
return TRUE;
} /* Load library */
#ifdef WIN32
g_BRACModule = LoadLibraryEx(szPathName,NULL,LOAD_WITH_ALTERED_SEARCH_PATH);
#else
g_BRACModule = dlopen(szPathName,RTLD_NOW);
#endif
if (!g_BRACModule)
{
CHAR szErrorMsg[] = {};
#ifdef WIN32
_snprintf(szErrorMsg,sizeof(szErrorMsg),"LoadLibrary %s Error:%d",szPathName,GetLastError());
#else
_snprintf(szErrorMsg,sizeof(szErrorMsg),"LoadLibrary %s Error:%s",szPathName,dlerror());
#endif
//... TRACE(szErrorMsg);
return FALSE;
} DWORD Errors=;
BRAC_DLL_ASSIGN(InitSDK);
BRAC_DLL_ASSIGN(GetSDKVersion);
BRAC_DLL_ASSIGN(ActiveCallLog);
BRAC_DLL_ASSIGN(SetSDKOption);
BRAC_DLL_ASSIGN(SetVideoDataCallBack);
BRAC_DLL_ASSIGN(SetAudioDataCallBack);
BRAC_DLL_ASSIGN(SetVolumeChangeCallBack);
BRAC_DLL_ASSIGN(SetTransBufferExCallBack);
BRAC_DLL_ASSIGN(SetTransBufferCallBack);
BRAC_DLL_ASSIGN(SetTransFileCallBack);
BRAC_DLL_ASSIGN(SetRecordSnapShotCallBack);
BRAC_DLL_ASSIGN(SetSDKFilterDataCallBack);
BRAC_DLL_ASSIGN(AudioGetVolume);
BRAC_DLL_ASSIGN(SetServerAuthPass);
BRAC_DLL_ASSIGN(Connect);
BRAC_DLL_ASSIGN(Login);
BRAC_DLL_ASSIGN(SetNotifyMessageCallBack);
BRAC_DLL_ASSIGN(SetTextMessageCallBack);
BRAC_DLL_ASSIGN(GetUserName);
BRAC_DLL_ASSIGN(GetRoomName);
BRAC_DLL_ASSIGN(EnterRoom);
BRAC_DLL_ASSIGN(SetVideoPos);
BRAC_DLL_ASSIGN(UserCameraControl);
BRAC_DLL_ASSIGN(UserSpeakControl);
BRAC_DLL_ASSIGN(AudioSetVolume);
BRAC_DLL_ASSIGN(Release);
BRAC_DLL_ASSIGN(EnterRoomEx);
BRAC_DLL_ASSIGN(LeaveRoom);
BRAC_DLL_ASSIGN(GetOnlineUser);
BRAC_DLL_ASSIGN(GetCameraState);
BRAC_DLL_ASSIGN(Logout);
BRAC_DLL_ASSIGN(TransFile);
BRAC_DLL_ASSIGN(QueryTransTaskInfo);
BRAC_DLL_ASSIGN(QueryUserState);
BRAC_DLL_ASSIGN(TransBufferEx);
BRAC_DLL_ASSIGN(TransBuffer);
BRAC_DLL_ASSIGN(CancelTransTask);
BRAC_DLL_ASSIGN(SendTextMessage);
BRAC_DLL_ASSIGN(ShowLVProperty);
BRAC_DLL_ASSIGN(SelectVideoCapture);
BRAC_DLL_ASSIGN(SelectAudioCapture);
BRAC_DLL_ASSIGN(EnumVideoCapture);
BRAC_DLL_ASSIGN(GetCurVideoCapture);
BRAC_DLL_ASSIGN(EnumAudioCapture);
BRAC_DLL_ASSIGN(GetCurAudioCapture);
BRAC_DLL_ASSIGN(SendSDKFilterData);
BRAC_DLL_ASSIGN(StreamRecordCtrl);
BRAC_DLL_ASSIGN(SnapShot); if(Errors>)
return FALSE; g_dwBRACModule_Count++;
return TRUE;
} static BOOL BRAC_DLL_IsLoaded()
{
return g_BRACModule ? TRUE : FALSE;
} static void BRAC_DLL_UnLoad()
{
g_dwBRACModule_Count--;
if (g_dwBRACModule_Count > )
return;
#ifdef WIN32
FreeLibrary(g_BRACModule);
#else
dlclose(g_BRACModule);
#endif
g_BRACModule=NULL;
} #ifdef __cplusplus
}
#endif /*__cplusplus*/ #ifdef __cplusplus #define BRAC_TEST_VOID \
if (!IsReady()) return
#define BRAC_TEST_INT \
if (!IsReady()) return -
#define BRAC_TEST_BOOL \
if (!IsReady()) return FALSE class CAnyChatCoreSDK
{
public:
CAnyChatCoreSDK()
{
m_bSuccessLoadDll = FALSE;
}
CAnyChatCoreSDK(LPCTSTR szPathName)
{
m_bSuccessLoadDll = BRAC_DLL_Load(szPathName);
}
~CAnyChatCoreSDK()
{
BRAC_TEST_VOID;
BRAC_DLL_UnLoad();
m_bSuccessLoadDll = FALSE;
}
BOOL LoadFilterDll(LPCTSTR szPathName)
{
return (m_bSuccessLoadDll = BRAC_DLL_Load(szPathName));
}
BOOL IsReady()
{
return m_bSuccessLoadDll;
} // 初始化系统
DWORD InitSDK(HWND hWnd, DWORD dwFuncMode)
{
BRAC_TEST_INT;
return g_BRAC_InitSDK_Func(hWnd, dwFuncMode);
}
// 获取版本信息
DWORD GetSDKVersion(DWORD& dwMainVer, DWORD& dwSubVer, LPSTR lpCompileTime, DWORD dwBufLen)
{
BRAC_TEST_INT;
return g_BRAC_GetSDKVersion_Func(dwMainVer, dwSubVer, lpCompileTime, dwBufLen);
}
// 激活(关闭)SDK调用日志
DWORD ActiveCallLog(BOOL bActive)
{
BRAC_TEST_INT;
return g_BRAC_ActiveCallLog_Func(bActive);
}
// SDK内核参数设置
DWORD SetSDKOption(int optname, const char FAR* optval, int optlen)
{
BRAC_TEST_INT;
return g_BRAC_SetSDKOption_Func(optname, optval, optlen);
}
// 设置服务器验证密码(可用于阻止非法用户用SDK连接服务器,合法用户可正常连接)
DWORD SetServerAuthPass(LPCTSTR lpPassword)
{
BRAC_TEST_INT;
return g_BRAC_SetServerAuthPass_Func(lpPassword);
} // 设置视频数据回调函数
DWORD SetVideoDataCallBack(BRAC_PixelFormat pixFmt, BRAC_VideoData_CallBack lpFunction, LPVOID lpUserValue)
{
BRAC_TEST_INT;
return g_BRAC_SetVideoDataCallBack_Func(pixFmt, lpFunction, lpUserValue);
}
// 设置音频数据回调函数
DWORD SetAudioDataCallBack(BRAC_AudioData_CallBack lpFunction, LPVOID lpUserValue)
{
BRAC_TEST_INT;
return g_BRAC_SetAudioDataCallBack_Func(lpFunction, lpUserValue);
}
// 设置音量变化回调函数
DWORD SetVolumeChangeCallBack(BRAC_VolumeChange_CallBack lpFunction, LPVOID lpUserValue)
{
BRAC_TEST_INT;
return g_BRAC_SetVolumeChangeCallBack_Func(lpFunction, lpUserValue);
}
// 设置透明通道数据扩展回调函数
DWORD SetTransBufferExCallBack(BRAC_TransBufferEx_CallBack lpFunction, LPVOID lpUserValue)
{
BRAC_TEST_INT;
return g_BRAC_SetTransBufferExCallBack_Func(lpFunction, lpUserValue);
}
//设置透明通道数据回调函数
DWORD SetTransBufferCallBack(BRAC_TransBuffer_CallBack lpFunction, LPVOID lpUserValue)
{
BRAC_TEST_INT;
return g_BRAC_SetTransBufferCallBack_Func(lpFunction, lpUserValue);
}
// 设置文件传输回调函数
DWORD SetTransFileCallBack(BRAC_TransFile_CallBack lpFunction, LPVOID lpUserValue)
{
BRAC_TEST_INT;
return g_BRAC_SetTransFileCallBack_Func(lpFunction, lpUserValue);
}
// 设置录像快照任务完成通知回调函数
DWORD SetRecordSnapShotCallBack(BRAC_RecordSnapShot_CallBack lpFunction, LPVOID lpUserValue)
{
BRAC_TEST_INT;
return g_BRAC_SetRecordSnapShotCallBack_Func(lpFunction, lpUserValue);
}
// 设置SDK Filter通信数据回调函数定义
DWORD SetSDKFilterDataCallBack(BRAC_SDKFilterData_CallBack lpFunction, LPVOID lpUserValue)
{
BRAC_TEST_INT;
return g_BRAC_SetSDKFilterDataCallBack_Func(lpFunction, lpUserValue);
}
// 设置异步消息通知回调函数
DWORD SetNotifyMessageCallBack(BRAC_NotifyMessage_CallBack lpFunction, LPVOID lpUserValue)
{
BRAC_TEST_INT;
return g_BRAC_SetNotifyMessageCallBack_Func(lpFunction, lpUserValue);
}
// 设置文字消息回调函数
DWORD SetTextMessageCallBack(BRAC_TextMessage_CallBack lpFunction, LPVOID lpUserValue)
{
BRAC_TEST_INT;
return g_BRAC_SetTextMessageCallBack_Func(lpFunction, lpUserValue);
} // 连接服务器
DWORD Connect(LPCTSTR lpServerAddr, DWORD dwPort)
{
BRAC_TEST_INT;
return g_BRAC_Connect_Func(lpServerAddr, dwPort);
}
// 登录系统
DWORD Login(LPCTSTR lpUserName, LPCTSTR lpPassword, DWORD dwPassEncType)
{
BRAC_TEST_INT;
return g_BRAC_Login_Func(lpUserName, lpPassword, dwPassEncType);
}
// 进入房间
DWORD EnterRoom(DWORD dwRoomid, LPCTSTR lpRoomPass, DWORD dwPassEncType)
{
BRAC_TEST_INT;
return g_BRAC_EnterRoom_Func(dwRoomid, lpRoomPass, dwPassEncType);
}
// 进入房间
DWORD EnterRoomEx(LPCTSTR lpRoomName, LPCTSTR lpRoomPass)
{
BRAC_TEST_INT;
return g_BRAC_EnterRoomEx_Func(lpRoomName, lpRoomPass);
}
// 离开房间
DWORD LeaveRoom(DWORD dwRoomid)
{
BRAC_TEST_INT;
return g_BRAC_LeaveRoom_Func(dwRoomid);
}
// 注销系统
DWORD Logout(VOID)
{
BRAC_TEST_INT;
return g_BRAC_Logout_Func();
} // 操作用户视频
DWORD UserCameraControl(DWORD dwUserid, BOOL bOpen)
{
BRAC_TEST_INT;
return g_BRAC_UserCameraControl_Func(dwUserid, bOpen);
}
// 操作用户语音
DWORD UserSpeakControl(DWORD dwUserid, BOOL bOpen)
{
BRAC_TEST_INT;
return g_BRAC_UserSpeakControl_Func(dwUserid, bOpen);
}
// 设置视频显示位置
DWORD SetVideoPos(DWORD dwUserid, HWND hWnd, DWORD dwLeft, DWORD dwTop, DWORD dwRight, DWORD dwBottom)
{
BRAC_TEST_INT;
return g_BRAC_SetVideoPos_Func(dwUserid, hWnd, dwLeft, dwTop, dwRight,dwBottom);
}
// 获取指定音频设备的当前音量
DWORD AudioGetVolume(BRAC_AudioDevice device, DWORD& dwVolume)
{
BRAC_TEST_INT;
return g_BRAC_AudioGetVolume_Func(device, dwVolume);
}
// 设置指定音频设备的音量
DWORD AudioSetVolume(BRAC_AudioDevice device, DWORD dwVolume)
{
BRAC_TEST_INT;
return g_BRAC_AudioSetVolume_Func(device,dwVolume);
} // 枚举本地视频采集设备
DWORD EnumVideoCapture(CHAR** lpDeviceName, DWORD& dwDeviceNum)
{
BRAC_TEST_INT;
return g_BRAC_EnumVideoCapture_Func(lpDeviceName, dwDeviceNum);
}
// 枚举本地音频采集设备
DWORD EnumAudioCapture(CHAR** lpDeviceName, DWORD& dwDeviceNum)
{
BRAC_TEST_INT;
return g_BRAC_EnumAudioCapture_Func(lpDeviceName, dwDeviceNum);
}
// 选择指定的视频采集设备
DWORD SelectVideoCapture(LPCTSTR szCaptureName)
{
BRAC_TEST_INT;
return g_BRAC_SelectVideoCapture_Func(szCaptureName);
}
// 选择指定的音频采集设备
DWORD SelectAudioCapture(LPCTSTR szCaptureName)
{
BRAC_TEST_INT;
return g_BRAC_SelectAudioCapture_Func(szCaptureName);
}
// 获取当前使用的视频采集设备
DWORD GetCurVideoCapture(CHAR* lpDeviceName, DWORD dwLen)
{
BRAC_TEST_INT;
return g_BRAC_GetCurVideoCapture_Func(lpDeviceName, dwLen);
}
// 获取当前使用的音频采集设备
DWORD GetCurAudioCapture(CHAR* lpDeviceName, DWORD dwLen)
{
BRAC_TEST_INT;
return g_BRAC_GetCurAudioCapture_Func(lpDeviceName, dwLen);
} // 获取当前房间在线用户列表
DWORD GetOnlineUser(LPDWORD lpUserIDArray, DWORD& dwUserNum)
{
BRAC_TEST_INT;
return g_BRAC_GetOnlineUser_Func(lpUserIDArray, dwUserNum);
}
// 查询用户摄像头的状态
DWORD GetCameraState(DWORD dwUserid, DWORD& dwState)
{
BRAC_TEST_INT;
return g_BRAC_GetCameraState_Func(dwUserid, dwState);
}
// 查询用户名称
DWORD GetUserName(DWORD dwUserid, CHAR* lpUserName, DWORD dwLen)
{
BRAC_TEST_INT;
return g_BRAC_GetUserName_Func(dwUserid, lpUserName, dwLen);
}
// 查询房间名称
DWORD GetRoomName(DWORD dwRoomId, CHAR* lpRoomName, DWORD dwLen)
{
BRAC_TEST_INT;
return g_BRAC_GetRoomName_Func(dwRoomId, lpRoomName, dwLen);
}
// 显示本地视频画面调节对话框
DWORD ShowLVProperty(HWND hParent, LPCTSTR szCaption, DWORD dwX ,DWORD dwY)
{
BRAC_TEST_INT;
return g_BRAC_ShowLVProperty_Func(hParent, szCaption, dwX, dwY);
} // 用户音、视频录制
DWORD StreamRecordCtrl(DWORD dwUserId, BOOL bStartRecord, DWORD dwFlags, DWORD dwParam)
{
BRAC_TEST_INT;
return g_BRAC_StreamRecordCtrl_Func(dwUserId, bStartRecord, dwFlags, dwParam);
}
// 对用户的视频进行抓拍(快照)
DWORD SnapShot(DWORD dwUserId, DWORD dwFlags, DWORD dwParam)
{
BRAC_TEST_INT;
return g_BRAC_SnapShot_Func(dwUserId, dwFlags, dwParam);
} // 透明通道传送缓冲区
DWORD TransBuffer(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen)
{
BRAC_TEST_INT;
return g_BRAC_TransBuffer_Func(dwUserid, lpBuf, dwLen);
}
// 透明通道传送缓冲区扩展
DWORD TransBufferEx(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen, DWORD wParam, DWORD lParam, DWORD dwFlags, DWORD& dwTaskId)
{
BRAC_TEST_INT;
return g_BRAC_TransBufferEx_Func(dwUserid, lpBuf, dwLen, wParam, lParam, dwFlags, dwTaskId);
}
// 传送文件
DWORD TransFile(DWORD dwUserid, LPCTSTR lpLocalPathName, DWORD wParam, DWORD lParam, DWORD dwFlags, DWORD& dwTaskId)
{
BRAC_TEST_INT;
return g_BRAC_TransFile_Func(dwUserid, lpLocalPathName, wParam, lParam, dwFlags, dwTaskId);
}
// 取消传输任务
DWORD CancelTransTask(DWORD dwUserid, DWORD dwTaskId)
{
BRAC_TEST_INT;
return g_BRAC_CancelTransTask_Func(dwUserid, dwTaskId);
}
// 传送文本消息
DWORD SendTextMessage(DWORD dwUserid, BOOL bSecret, LPCTSTR lpMsgBuf, DWORD dwLen)
{
BRAC_TEST_INT;
return g_BRAC_SendTextMessage_Func(dwUserid, bSecret, lpMsgBuf, dwLen);
}
// 查询传输任务相关信息
DWORD QueryTransTaskInfo(DWORD dwUserid, DWORD dwTaskId, int infoname, char FAR* infoval, int infolen)
{
BRAC_TEST_INT;
return g_BRAC_QueryTransTaskInfo_Func(dwUserid, dwTaskId, infoname, infoval, infolen);
}
// 发送SDK Filter 通信数据
DWORD SendSDKFilterData(LPBYTE lpBuf, DWORD dwLen)
{
BRAC_TEST_INT;
return g_BRAC_SendSDKFilterData_Func(lpBuf, dwLen);
} // 查询指定用户相关状态
DWORD QueryUserState(DWORD dwUserId, int infoname, char FAR* infoval, int infolen)
{
BRAC_TEST_INT;
return g_BRAC_QueryUserState_Func(dwUserId, infoname, infoval, infolen);
} // 释放所有资源
DWORD Release(VOID)
{
BRAC_TEST_INT;
return g_BRAC_Release_Func();
} private:
BOOL m_bSuccessLoadDll;
}; #endif /*__cplusplus*/ #endif // ANYCHATCORESDK_H
http://newalitest.csdn.net/99263/anychat/blob/master/client/windows/qt/AnyChatQt/AnyChatCoreSDK.h
AnyChatCoreSDK.h的更多相关文章
- APUE中fcntl.h的使用及O_SYNC在Mac与Ubuntu下的测试
此部分测试涉及到APUE V3中,第三章的图3-12到图3-14. 通过fcntl.h提供的功能,修改fd的文件属性,本处增加O_SYNC功能,并测试其效果. 本文涉及代码: tree ch3 ch3 ...
- 关于apue.3e中apue.h的使用
关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.htm ...
- YYModel 源码解读(二)之NSObject+YYModel.h (1)
本篇文章主要介绍 _YYModelPropertyMeta 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 ...
- YYModel 源码解读(一)之YYModel.h
#if __has_include(<YYModel/YYModel.h>) FOUNDATION_EXPORT double YYModelVersionNumber; FOUNDATI ...
- error RC1015: cannot open include file 'afxres.h' 解决办法
在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...
- afxcomctl32.h与afxcomctl32.inl报错
afxcomctl32.h与afxcomctl32.inl报错 编译公司一个几年前的老项目,是从VC6.0升级到VS2005的. 1.编译时报缺少头文件,于是附件包含目录,于是出现了以下报错: 1&g ...
- C标准头文件<math.h>
定义域错误可以理解为超出了函数的适用范围,如果发生了定义域错误,设errno为EDOM 如果结果不能表示为double值,则发生值域错误,如果结果上溢,则函数返回HUGE_VAL的值,设errno为E ...
- C标准头文件<ctype.h>
主要包括了一些字符识别和转换函数 字符判断 isalnum() //函数原型 #include<ctype.h> int isalum(int c); 功能:如果输入的字符是字母(alph ...
- xcode中的.h和.m文件分别是什么意思?各有什么用?
.h 表示头文件,用来声明各种成员变量,方法,属性之类的.在import的时候用头文件. .m 主要用来实现.h 里声明的方法.举个例子,如果要写一个方法,你要在.h里先声明: - (void)myM ...
随机推荐
- [玩转微信平台]XML的格式化- 如何去掉XML 文档头和命名空间
前言 系统要求能够回复微信用户发过来的文本消息.实现中使用的实体对象进行XML的序列化的方式来实现XML消息. 微信平台的回复例子 http://mp.weixin.qq.com/wiki/14/ ...
- Faster R-CNN CPU环境搭建
操作系统: bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/tools$ cat /etc/issue Ubuntu LTS \n \l Python版 ...
- Discuz! 的编码规范
http://open.discuz.net/?ac=document&page=dev_coderule 前言 本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形 ...
- BusyBox
http://blog.csdn.net/a345017062/article/details/6250619
- JDBC性能分析与优化
JDBC性能分析与优化V1.0http://www.docin.com/p-758600080.html
- 如何做好IT运营.
定义IT管理的重点在于业务策略与 IT 部门提供的服务之间的一致性.IT 管理可建立必要的管理机制来确保可预测的 IT 服务交付,从而确保业务流程和 IT 流程之间的联系.IT 管理传统上属于CIO. ...
- android 开发 - 使用okhttp框架封装的开发框架
概述 在android开发中经常要访问网络,目前最流行的网络访问框架就是Okhttp了,然而我们在具体使用时,往往仍然需要二次封装.我使用Builder设计模式进行了封装形成oknet开源库. 介绍 ...
- synchronized关键字,Lock接口以及可重入锁ReentrantLock
多线程环境下,必须考虑线程同步的问题,这是因为多个线程同时访问变量或者资源时会有线程争用,比如A线程读取了一个变量,B线程也读取了这个变量,然后他们同时对这个变量做了修改,写回到内存中,由于是同时做修 ...
- sql: 查找约束
主键约束 SELECT tab.name AS [表名], idx.name AS [主键名称], col.name AS [主键列名] FROM sys.indexes idx ...
- WPA字典锦集
1.xiemimendictionary 字典下载(第二季),500W整理过后还有282W条不重复的密码 字典下载,600W整理过后还有400W条不重复的密码 历次泄+常用弱口令字典集合[无中文去重复 ...