#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的更多相关文章

  1. APUE中fcntl.h的使用及O_SYNC在Mac与Ubuntu下的测试

    此部分测试涉及到APUE V3中,第三章的图3-12到图3-14. 通过fcntl.h提供的功能,修改fd的文件属性,本处增加O_SYNC功能,并测试其效果. 本文涉及代码: tree ch3 ch3 ...

  2. 关于apue.3e中apue.h的使用

    关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.htm ...

  3. YYModel 源码解读(二)之NSObject+YYModel.h (1)

    本篇文章主要介绍 _YYModelPropertyMeta 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 ...

  4. YYModel 源码解读(一)之YYModel.h

    #if __has_include(<YYModel/YYModel.h>) FOUNDATION_EXPORT double YYModelVersionNumber; FOUNDATI ...

  5. error RC1015: cannot open include file 'afxres.h' 解决办法

    在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...

  6. afxcomctl32.h与afxcomctl32.inl报错

    afxcomctl32.h与afxcomctl32.inl报错 编译公司一个几年前的老项目,是从VC6.0升级到VS2005的. 1.编译时报缺少头文件,于是附件包含目录,于是出现了以下报错: 1&g ...

  7. C标准头文件<math.h>

    定义域错误可以理解为超出了函数的适用范围,如果发生了定义域错误,设errno为EDOM 如果结果不能表示为double值,则发生值域错误,如果结果上溢,则函数返回HUGE_VAL的值,设errno为E ...

  8. C标准头文件<ctype.h>

    主要包括了一些字符识别和转换函数 字符判断 isalnum() //函数原型 #include<ctype.h> int isalum(int c); 功能:如果输入的字符是字母(alph ...

  9. xcode中的.h和.m文件分别是什么意思?各有什么用?

    .h 表示头文件,用来声明各种成员变量,方法,属性之类的.在import的时候用头文件. .m 主要用来实现.h 里声明的方法.举个例子,如果要写一个方法,你要在.h里先声明: - (void)myM ...

随机推荐

  1. HttpURLConnection GET/POST写法

    现在虽然HttpClient很好使,但也有人在用最原生的HttpURLConnection, 记录一下,备忘之. public class HttpUrlConnect { //get请求 publi ...

  2. Javascript 严格模式

    简介 严格模式是一种将更好的错误检查引入代码中的方法. 在使用严格模式时,你无法使用隐式声明的变量.将值赋给只读属性或将属性添加到不可扩展的对象等. 声明严格模式 可以通过在文件.程序或函数的开头添加 ...

  3. SQL SERVER2012中使用游标来备份数据库

    在SQL SERVER中,添加JOB,可以使用以下语句设置定期备份数据库. DECLARE @name VARCHAR(50)--databasename DECLARE @path VARCHAR( ...

  4. windows下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件

    原创文章,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4535459.html android 程序打包成apk,如果在是命令行方式,一般都要经过如下步骤: 1.用a ...

  5. JAVA本地远程连接linux程序监控状态

    环境:  1.本地window 2.程序部署在centos   一,启动访问权限安全守护程序 新建文件:jstatd.all.policy ,注意路径 grant codebase "$JA ...

  6. 关于Parallel.For/Foreach并行方法中的localInit, body, localFinally使用

    对集合成员的操作往往可以通过并行来提高效率,.NET Parallel类提供了简单的方法来帮助我们实现这种并行,比如Paralle.For/ForEach/Invoke方法. 其中,For/ForEa ...

  7. spring中bean配置和bean注入

    1 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean ...

  8. ubuntu14.04 LTS 更新源

    官方源: deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse deb http://arc ...

  9. 十家国内知名的EDM服务提供商

    国内的EDM服务商多若繁星.下面博主为大家介绍十家国内知名的EDM服务提供商. 一.Webpower 威勃庞尔. 官方网站是:www.webpower.asia.作为全球领先的邮件营销解决方案提供商, ...

  10. PHP 常见语法 集合

    1.die()与exit()的真正区别 die 为 exit 的别名, 执行过程 将释放内存,停止代码执行 echo "begin exec <br/>"; show( ...