www.pudn.com > ITSever.rar > DVRClientAPI.h
/*************************************************************************
(Copyright (c) 2005-2007 海康威视公司研发中心)
** 文件名 : DVRClientAPI.h
** 创建人 : 闫春
** 修改记录 :
*************************************************************************/
#ifndef __DVRCLIENTAPI_H__
#define __DVRCLIENTAPI_H__
#include "DVRClientDef_0.h"
#include "DVRClientDef_1.h"
#ifdef DVRCLIENTAPI_EXPORTS
#define DVRCLIENT_API __declspec(dllexport)
#else
#define DVRCLIENT_API __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
enum DVRAPI_RET
{
RET_SUCC = 1, //执行成功
RET_FAIL = 0, //执行失败
RET_USPT = -1 //不支持该方法
};
#define API_CALL_CONVENTION __stdcall
/**************************************************************************/
/*sys functions*/
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_GetLibVersion(char ** sversion);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_GetLastError(DWORD &dwerr);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_InitLib(BOOL bautoload=TRUE);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_FiniLib();
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_SetLanguage(unsigned int ulanguage=0);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_EnumerateDeviceType(unsigned int uindex, char **sdevtype);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_CheckDeviceTypeSupt(char *sdevtype);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_LoadDvrPlugin(char *sdllname);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_LoadPlyPlugin(char *sdllname);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_UACRegister(char *serverip,char *usrid, char *password);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_sys_UACUnregister();
/**************************************************************************/
/*dvr functions*/
//创建|修改|显示设备连接信息
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_ShowDeviceURLDlg(char * sdvrtype, DLG_USE_TYPE mode, int *iret, PSDEVICEURL purl, BOOL bcenter=TRUE, unsigned int ux=0, unsigned int uy=0);
//连接|断开设备
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_ConnectDeviceByIP(char * sdvrtype, char *sip, int iport, char *usrname, char *paswd, HANDLE *hdev);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_ConnectDeviceByURL(char * sdvrtype, PSDEVICEURL purl, HANDLE *hdev);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_DisconnectDevice(HANDLE hdev);
//获取设备信息
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_GetDeviceInfo(HANDLE hdev, PSDEVICEINFO pdevinfo);
//获取通道信息
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_GetChannelInfo(HANDLE hdev, PSCHANNELINFO pchaninfo);
//获取云台信息
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_GetPTZInfo(HANDLE hdev, unsigned int uchannel, PSPTZINFO pptzinfo);
//获得|修改设备时间
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_GetSystemTime(HANDLE hdev,PSDEVICETIME pdevtime);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_SetSystemTime(HANDLE hdev,PSDEVICETIME pdevtime);
//实时音视频预览(0<=ismooth<=4)
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_RealPlayStart(HANDLE hdev, PSTREAMPARAMS sparams, HANDLE * hstream, CBF_GetRealtimeData cbf);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_RealPlayStop(HANDLE hstream);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_RealPlay_SetShowHwnd(HANDLE hstream, HWND hwnd, int ismooth=2);
//预览控制
//解码加速(0<=itrubo<=4)
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_RealPlay_DecordTurbo(HANDLE hstream, int itrubo);
//强制关键帧
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_RealPlay_IFrameForce(HANDLE hstream);
//声音控制
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_RealPlay_PlaySound(HANDLE hstream);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_RealPlay_StopSound(void);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_SetVolume(HANDLE hstream, WORD nVolume);
//抓图
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_RealPlay_PictureCap(HANDLE hstream, char *sfilename);
//录像控制
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_GetRecordState(HANDLE hdev, PSSTATEGROUP precordstate);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_DevRecordStart(HANDLE hdev, unsigned int uchannel);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_DevRecordStop(HANDLE hdev, unsigned int uchannel);
//视频控制
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_GetVideoParams(HANDLE hdev, unsigned int uchannel, int *ibri, int *icon, int *isat, int *ihue);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_SetVideoParams(HANDLE hdev, unsigned int uchannel, int ibri, int icon, int isat, int ihue);
//云台控制
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_PTZControl(HANDLE hdev, unsigned int uchannel, unsigned int ucommand, int iparam1, int iparam2, int iparam3, int iparam4);
//IO口控制
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_GetIOInState(HANDLE hdev, PSSTATEGROUP pioinstate);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_GetIOOutState(HANDLE hdev, PSSTATEGROUP piooutstate);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_SetIOOutState(HANDLE hdev, unsigned int ioport, BOOL boutput);
//透明通道
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_SerialStart(HANDLE hdev, DVR_SERIALPORT_TYPE iserialtype, unsigned int uport, int iusrdata, CBF_SerialCom cbf, HANDLE *hserial);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_SerialSend(HANDLE hserial, char *pbuf, unsigned int ulength);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_SerialStop(HANDLE hserial);
//报警订阅
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_AlarmSubscribe(HANDLE hdev, int iusrdata, CBF_AlarmInfo cbf);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_AlarmUnsubscribe(HANDLE hdev);
//心跳订阅
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_HeartBeatSubscribe(HANDLE hdev, unsigned int intervals,int iusrdata, CBF_HeartBeat cbf);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_HeartBeatUnsubscribe(HANDLE hdev);
//打开远程配置窗口
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_ShowSettingDlg(HANDLE hdev, BOOL bcenter=TRUE, unsigned int ux=0, unsigned int uy=0);
//打开语音对讲窗口
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_ShowVoiceComDlg(HANDLE hdev, BOOL bcenter=TRUE, unsigned int ux=0, unsigned int uy=0);
//打开远程点播窗口
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_ShowVODDlg(HANDLE hdev, BOOL bcenter=TRUE, unsigned int ux=0, unsigned int uy=0);
//打开设备日志窗口
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_ShowLogDlg(HANDLE hdev, BOOL bcenter=TRUE, unsigned int ux=0, unsigned int uy=0);
//用户自定义功能接口
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_CustomFunc(HANDLE hdev,char* pInbuf,int nInbufLen,char* pOutbuf,int* nOutbufLen);
//开始监听设备上传的消息
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_StartAlarmListen(char *sLocalIP, WORD wStartPort, CBF_AlarmInfo_Listen cbf);
//停止监听设备上传的消息
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_StopAlarmListen();
//开始语音对讲
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_VoiceComStart(HANDLE hdev, HANDLE *AudioHandle);
//停止语音对讲
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_VoiceComStop(HANDLE AudioHandle);
//调节语音对讲音量
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_dvr_VoiceComVolume(HANDLE AudioHandle, WORD wVolume);
/**************************************************************************/
/*ply functions*/
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_GetFileHeadLength(char *sfilename, int *ilength);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_BuildIndexFile(char *sfilename);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_OpenFile(char *sfilename, HANDLE *hplay);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_CloseFile(HANDLE hplay);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_Play(HANDLE hplay, HWND hwnd);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_Stop(HANDLE hplay);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_RefreshPlay(HANDLE hplay);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_SetFileEndMsg(HANDLE hplay, HWND hWnd,UINT nMsg);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_Pause(HANDLE hplay, DWORD nPause);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_Fast(HANDLE hplay);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_Slow(HANDLE hplay);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_SetPlayPos(HANDLE hplay, float fRelativePos);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_GetPlayPos(HANDLE hplay, float *fRelativePos);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_SetVolume(HANDLE hplay, WORD nVolume);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_PlaySound(HANDLE hplay);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_StopSound();
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_OneByOne(HANDLE hplay);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_SetVideoParams(HANDLE hplay, int nBrightness, int nContrast, int nSaturation, int nHue);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_GetVideoParams(HANDLE hplay, int *pBrightness, int *pContrast, int *pSaturation, int *pHue);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_GetFileTime(HANDLE hplay, DWORD *dwFileTime);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_GetPlayedTime(HANDLE hplay, DWORD *dwPlayedTime);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_GetFileTotalFrames(HANDLE hplay, DWORD *dwTotalFrames);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_GetPlayedFrames(HANDLE hplay, DWORD *dwPlayedFrames);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_ply_ThrowBFrameNum(HANDLE hplay,DWORD nNum);
/**************************************************************************/
/*vod functions*/
//文件查询
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_DoQueryByDVRIP(PSVODQUERYBYIP pParam, int iPage, char** resultXMLDoc, int &pagesAmount);
//文件点播
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_Create(IHikClientAdviseSink *pSink, HWND hwnd, HANDLE *hsession);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_Destroy(HANDLE hsession);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_Open(HANDLE hsession, char *serverIP,int iport, char *sfilename);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_Play(HANDLE hsession);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_Stop(HANDLE hsession);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_RandomPlay(HANDLE hsession, unsigned long timepos);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_Pause(HANDLE hsession);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_Resume(HANDLE hsession);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_GetCurTime(HANDLE hsession, unsigned long *utime);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_ChangeRate(HANDLE hsession, int scale);
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_SetVolume(HANDLE hsession, unsigned short volume);
//cli_vod_Create的扩展接口
DVRCLIENT_API DVRAPI_RET API_CALL_CONVENTION cli_vod_CreateEx(IHikClientAdviseSink *pSink, HWND hwnd, HANDLE *hsession, pDataRec pRecFunc, pMsgBack pMsgFunc,int TransMethod);
/**************************************************************************/
/*error code*/
#define CAPIERR_NOERROR 0x0000 //没有错误
#define CAPIERR_INVALID_HANDLE 0x0001 //无效句柄
#define CAPIERR_INVALID_PARAMS 0x0002 //参数错误
#define CAPIERR_ORDER_ERROR 0x0003 //调用顺序错误
#define CAPIERR_INITIALIZEPLAYER_FAIL 0x0004 //播放层初始化失败
#define CAPIERR_UNSUPPORT_DVRTYPE 0x0005 //不支持该设备类型
/**************************************************************************/
#ifdef __cplusplus
}
#endif
#endif //__DVRCLIENTAPI_H__
/**************************/
/*报警类型及参数定义 */
/************************************************************************************************
//报警类型-ialarmtype
0x01 - I O 报警 (iparam表示IO输入)
0x02 - 手动报警 (iparam表示报警按钮序号)
0x03 - 视频移动报警 (iparam表示通道号)
0x04 - 视频遮蔽报警 (iparam表示通道号)
0x05 - 视频丢失报警 (iparam表示通道号)
0x99 - 系统状态报警 (iparam/1-硬盘错误报警/2-硬盘满报警/3-编码器错误报警/4-网络攻击报警/99-其它系统报警)
********************************************************************************************************/
/**************************/
/*云台控制命令码及参数定义*/
/************************************************************************************************
0 - 关闭(或断开)所有开关 (Param1: 无效, Param2: 无效, Param3: 无效, Param4: 无效)
1 - 接通摄像机电源 (Param1: 1-开始/0-停止, Param2: 无效, Param3: 无效, Param4: 无效)
2 - 接通灯光电源 (Param1: 1-开始/0-停止, Param2: 无效, Param3: 无效, Param4: 无效)
3 - 接通雨刷开关 (Param1: 1-开始/0-停止, Param2: 无效, Param3: 无效, Param4: 无效)
4 - 接通风扇开关 (Param1: 1-开始/0-停止, Param2: 无效, Param3: 无效, Param4: 无效)
5 - 接通加热器开关 (Param1: 1-开始/0-停止, Param2: 无效, Param3: 无效, Param4: 无效)
6 - 接通辅助设备开关 (Param1: 1-开始/0-停止, Param2: 无效, Param3: 无效, Param4: 无效)
10 - 停止所有连续量(镜头,云台)动作 (Param1: 无效, Param2: 无效, Param3: 无效, Param4: 无效)
11 - 焦距变大(倍率变大) (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
12 - 焦距变小(倍率变小) (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
13 - 焦点前调 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
14 - 焦点后调 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
15 - 光圈扩大 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
16 - 光圈缩小 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
17 - 开自动焦距(自动倍率) (Param1: 1-开始/0-停止, Param2: 无效, Param3: 无效, Param4: 无效)
18 - 开自动调焦 (Param1: 1-开始/0-停止, Param2: 无效, Param3: 无效, Param4: 无效)
19 - 开自动光圈 (Param1: 1-开始/0-停止, Param2: 无效, Param3: 无效, Param4: 无效)
21 - 云台上仰 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
22 - 云台下俯 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
23 - 云台左转 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
24 - 云台右转 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
25 - 云台上仰和左转 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
26 - 云台上仰和右转 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
27 - 云台下俯和左转 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
28 - 云台下俯和右转 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
29 - 云台左右自动扫描 (Param1: 1-开始/0-停止, Param2: 速度 [0-10,0表示默认速度,1-10表示速度级别], Param3: 无效, Param4: 无效)
40 - 设置预置点 (Param1: 预置点序号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
41 - 清除预置点 (Param1: 预置点序号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
42 - 转到预置点 (Param1: 预置点序号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
51 - 启动巡航记忆 (Param1: 巡航路线号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
52 - 关闭巡航记忆 (Param1: 巡航路线号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
53 - 将预置点加入巡航序列 (Param1: 巡航路线号[>=0], Param2: 预置点序号[>=0], Param3: 停顿时间[秒,>=0], Param4: 巡航速度[1-10])
54 - 开始巡航 (Param1: 巡航路线号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
55 - 停止巡航 (Param1: 巡航路线号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
61 - 启动轨迹记忆 (Param1: 轨迹号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
62 - 关闭轨迹记忆 (Param1: 轨迹号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
63 - 开始轨迹 (Param1: 轨迹号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
64 - 停止轨迹 (Param1: 轨迹号[>=0], Param2: 无效, Param3: 无效, Param4: 无效)
99 - 系统复位 (Param1: 无效, Param2: 无效, Param3: 无效, Param4: 无效)
********************************************************************************************************/