📄 dvrnet.h
字号:
/*************************************************
**
** 文件名:DVRNet.h
**
** 发行商:维视图像 Microvision Copyright
**
** 发行时间:2003.05.01
**
** 最后更新:2003.06.30
**
** 说明:DVRNet.dll API 函数的声明文件, ver 2.0
**
**************************************************/
#ifndef DVRNet_INCLUDE
#define DVRNet_INCLUDE
#ifdef DVRNet_EXPORTS
#define DVRNet_API __declspec(dllexport)
#else
#define DVRNet_API __declspec(dllimport)
#endif
// 传输模式定义
#define IS_SERVER_MODE 0x00 // 服务端(发送端)
#define IS_CLIENT_MODE 0x01 // 客户端(接收端)
#define IS_SUPPLY_MODE 0x02 // 代理端
#define SAVE_NET_VIDEO 0x01 // 存储网络视频流
#define SAVE_NET_AUDIO 0x02 // 存储网络音频流
#define PLAY_NET_VIDEO 0x01 // 播放网络视频流
#define PLAY_NET_AUDIO 0x02 // 播放网络音频流
// 自定义视频窗口消息
#ifndef WM_VIDEOWND_NOTIFY
#define WM_VIDEOWND_NOTIFY WM_USER + 0x501
#endif
//===========================
// 动态监测参数
//===========================
#define MOTION_DETECT_RECT_NUM_WIDTH (16)
#define MOTION_DETECT_RECT_NUM_HEIGHT (12)
// 定义动态监测返回消息 wParam = 卡号,lParam = 变化值
#define VM_MOTIONDETECT_OUTPUT (WM_USER + 0x502)
// 网络数据流统计信息结构
typedef struct tagNetStatute
{
DWORD Rxbitrate; // 当前Rx bit rate 统计值
DWORD Framerate; // 当前Frame rate 统计值
DWORD IFramerate; // 当前IFrame bitrate 统计值
DWORD PFramerate; // 当前PFrame bit rate 统计值,暂不用
} STATUTE_PARAM;
// 命令请求参数定义
// 0-15供系统请求发送使用,
// 16-31供NTF通知请求使用,
// 32-127为自定义区
#define REQ_SEND_AVSTREAM 0x01 // 请求视频+音频流
#define REQ_SEND_VISTREAM 0x02 // 请求视频流
#define REQ_SEND_AUSTREAM 0x03 // 请求音频流
#define REQ_STOP_AVSTREAM 0x04 // 请求关闭AV流
#define REQ_STOP_VISTREAM 0x05 // 请求关闭视频流
#define REQ_STOP_AUSTREAM 0x06 // 请求关闭音频流
#if !defined _HotNetCmd
#define _HotNetCmd
//****************************************************************
// 发送网络指令 HxnNET_SendNetDVRCmd
// 参数说明
// 1.m_nScreenIndex:当前客户端显示位置
// 2.int m_Cmd:参见远程控制命令定义
// 3.BOOL isKeyDown:具体操作方法(isKeyDown = TRUE,云台动作)
// 4.int m_Data:参见远程控制命令定义,量的定义范围
// 修改 "HNetAgPt.h"
//****************************************************************
// 使用 HxnNET_SendNetDVRCmd 远程控制命令定义
typedef enum
{
// 云台控制命令 0 - 34
NetCtl_noues0,
NetCtl_ConnectAVRun,
NetCtl_ConnectARun,
NetCtl_ConnectVRun,
NetCtl_ConnectAVStop,
NetCtl_ConnectAStop,
NetCtl_ConnectVStop,
NetCtl_noues7,
NetCtl_noues8,
NetCtl_noues9,
NetCtl_noues10,
NetCtl_noues11,
NetCtl_noues12,
NetCtl_noues13,
NetCtl_noues14,
NetCtl_noues15,
NetCtl_ytaddress, // 云台地址
NetCtl_ytaperturesub, // 云台光圈小
NetCtl_ytapertureadd, // 云台光圈大
NetCtl_ytright, // 云台右转
NetCtl_ytnear, // 云台拉近
NetCtl_ytleft, // 云台左转
NetCtl_ytfocussub, // 云台聚焦减
NetCtl_ytfocusadd, // 云台聚焦增
NetCtl_ytfar, // 云台拉远
NetCtl_ytfocus, // 云台自动聚焦
NetCtl_ytaperture, // 云台自动光圈
NetCtl_ytscan, // 云台自动扫描
NetCtl_ytbrush, // 云台自动雨刷
NetCtl_ytbottom, // 云台向下
NetCtl_ytauto, // 云台自动
NetCtl_yttop, // 云台向上
NetCtl_ytlt, // 云台左上
NetCtl_ytrt, // 云台右上
NetCtl_ytlb, // 云台左下
NetCtl_ytrb, // 云台左上
// 色亮度控制命令 36 - 40
NetCtl_Brightness, // 亮度--调节范围: 0 ~ 510 最佳:255
NetCtl_Contrast, // 对比度调节范围: 0 ~ 510 最佳:255
NetCtl_Hue, // 色调--调节范围: 0 ~ 510 最佳:255
NetCtl_Saturation, // 饱和度调节范围: 0 ~ 510 最佳:300
NetCtl_Default,
// TCP IP指令
NetCtl_CONNECT_BE_ACCEPT,
NetCtl_CONNECT_BE_REFUSE,
NetCtl_DISCONNECT,
NetCtl_REQUEST,
NetCtl_ACCEPT,
NetCtl_REFUSE,
NetCtl_CANCEL,
NetCtl_YOU_ARE_HERE,
NetCtl_I_AM_HERE
} DVRFOX_NET_COMMAND;
// 远程控制命令定义重复次数
#define REPEAT_DVRFOXCMD_COUNT 5
// 远程控制命令附加结构定义
typedef struct HotNetCmd
{
BOOL m_isBntDown; // 按钮状态
int m_useData; // 附加数据
char m_UserName [16]; // 用户名
char m_PassWord [16]; // 密码
} HotNet_Cmd;
#endif HotNetCmd
// 系统函数 - 初始化网传系统并分配资源
DVRNet_API BOOL HxnNET_Init ( WORD usLocalPort, // 本地帧听端口
WORD usRole, // 传输模式
BOOL is_Agent = FALSE,
DWORD * m_DataIn = NULL,
DWORD * m_DataOut = NULL,
char * pLocalIp = NULL );
// 系统函数 - 退出网传系统并释放资源
DVRNet_API void HxnNET_UnInit ();
// 系统函数 - 创建视频传送机制
DVRNet_API int HxnNET_CreateVideoDevice ( HWND hParentWnd, // 父窗口句柄
HWND hNotifyWnd, // 消息接收窗口句柄
RECT rect,
int nWidth,
int nHeight,
int nSpace, // 窗口间隔
BOOL bUseOverlay );
// 系统函数 - 创建音频传送机制
// 参数 m_isUseFocus 为播放音频流是否使用窗口焦点
// m_isUseFocus = TRUE 为使用焦点作为开关量,否则焦点无效
DVRNet_API BOOL HxnNET_CreateAudioDevice ( HWND hMainWnd, BOOL m_isUseFocus = TRUE );
// 系统函数 - 设置请求超时的时间长度
DVRNet_API void HxnNET_SetWaitTimeLong ( WORD usTimeOut );
// 显示函数 - 取得呼叫所对应的视频显示输出位置
DVRNet_API int HxnNET_GetIndexByCallID(int nCallID);
// 显示函数 - 获得显示位置所对应的呼叫
DVRNet_API int HxnNET_GetCallIDByIndex ( int nIndex );
// 显示函数 - 设置视频窗口的显示分切模式
DVRNet_API int HxnNET_Display_SetMode ( int nMode );
// 显示函数 - 向后翻页,直到当前显示模式下的最后一页
DVRNet_API int HxnNET_Display_NextPage ( );
// 显示函数 - 向前翻页,直到当前显示模式下的第一页
DVRNet_API int HxnNET_Display_PrePage ( );
// 显示函数 - 获取得当前显示的页号
DVRNet_API int HxnNET_Display_GetCurPage ( );
// 显示函数 - 设定视频显示窗口的位置
DVRNet_API BOOL HxnNET_Display_SetPosition ( RECT rc );
// 显示函数 - 向视频显示窗口发送消息指令
DVRNet_API void HxnNET_Display_SendMessage ( UINT nMessage, WPARAM wParam, LPARAM lParam );
// 显示函数 - 将请求视频显示到指定的窗口
DVRNet_API BOOL HxnNET_SetVideoOutput ( int nCallID, int nIndex );
// 显示函数 - 播放指定呼叫号的音频数据
DVRNet_API BOOL HxnNET_SetAudioOutput (int nCallID, BOOL isAdjust = FALSE);
// 系统函数 - 获取最后一次操作的错误码
DVRNet_API int HxnNET_GetLastError ( );
// 系统函数 - 取得呼叫的视频传输流量统计值
DVRNet_API void HxnNET_GetNetStatute ( int nCallID, STATUTE_PARAM &StatuteBuf );
// 录像函数 - 捕获通知回调函数
typedef void (*WhenCaptureNotify) ( int nCallID, int nError );
// 录像函数 - 开始捕获媒体流数据
DVRNet_API BOOL HxnNET_StartCapture ( int nCallID,
const char *pFileName,
DWORD dwMode,
WhenCaptureNotify WhenCapNotify );
// 录像函数 - 停止音视频数据的捕获操作
DVRNet_API void HxnNET_StopCapture ( int nCallID );
// 获取当前网络流捕获操作状态
DVRNet_API BOOL HxnNET_GetCapState ( int nCallID, BOOL &bCapVid, BOOL &bCapAud );
// 系统函数 - 通知回调函数
typedef void (*EvCmdRespond) (int nCallId, unsigned char biCmd, int nResult, BYTE *pRetData );
// 系统函数 - 设置网络收发缓冲区大小
DVRNet_API BOOL HxnNET_SetNetBufferSize ( int nCallID, int &iSndBufSize, int &iRcvBufSize );
// 系统函数 - 向服务端发送一个请求或命令
DVRNet_API LONGLONG HxnNET_Request ( int nCallID, // Call ID
BYTE biReqType, // 请求命令字
BYTE biMaxRepeat, // 最大重试次数
BYTE *pAnnexData, // 附加数据
WORD inDataSize, // 附加数据长度
BYTE *pRetBuffer, // 返回数据存放地址
WORD retBufSize, // 缓冲区长度
HANDLE hEventNotify, // 通知事件
EvCmdRespond evCallNotify ); // 通知回调函数
// 系统函数 - 服务端向客户端发送命令请求或通知
DVRNet_API LONGLONG HxnNET_Notify ( char *pClientAddr, // 客户机地址
WORD usClientPort, // 客户机端口
BYTE biReqType, // 请求命令字
BYTE biMaxRepeat, // 最大重试次数
BYTE *pAnnexData, // 附加数据
WORD inDataSize, // 附加数据长度
BYTE *pRetBuffer, // 返回数据存放地址
WORD retBufSize, // 缓冲区长度
HANDLE hEventNotify, // 通知事件
EvCmdRespond evCallNotify ); // 通知回调函数
// 系统函数 - 申请呼叫资源
DVRNet_API int HxnNET_NewCall ( char *pRemoteIp,
WORD usRemotePort,
BYTE biCardNo );
// 系统函数 - 发起呼叫,请求媒体传送服务
DVRNet_API BOOL HxnNET_RunCall ( int nCallID, // Call ID
BYTE biReqType, // 请求类型
BOOL bWANCall, // 是否广域网呼叫
BYTE *lpSndData, // 附加数据
BYTE biSndSize, // 附加数据长度
HANDLE hEventNotify, // 通知事件
EvCmdRespond evCallNotify ); // 通知回调函数
// 系统函数 - 清除呼叫,释放系统资源
DVRNet_API void HxnNET_CloseCall ( int nCallId, BOOL bWait );
// 服务端强制停止一路呼叫
DVRNet_API void HxnNET_StopCall ( BYTE biCard,
DWORD dwRemoteIp,
WORD usRemotePort,
BOOL bWait);
// 系统函数 - 请求打开(/关闭)音频(/视频)流传送服务
DVRNet_API BOOL HxnNET_RequestStream ( int nCallID, // Call ID
BOOL bVStream, // TRUE:视频流,FALSE:音频流
BOOL bOpen, // TRUE:打开,FALSE:关闭
BYTE *lpSndData, // 附加数据指针
BYTE biSndSize, // 附加数据长度
HANDLE hEventNotify, // 通知事件
EvCmdRespond evCallNotify ); // 通知回调函数
typedef BYTE (*UserGetNetStream) ( DWORD dwIp, WORD usPort, BYTE biCardNo, BYTE biCmd, BYTE *lpInData, WORD biInSize, BYTE *lpOutData, WORD &biOutSize );
// 系统函数 - 建立网络接收请求的回调函数
DVRNet_API BOOL HxnNET_SetNetStreamCallback ( UserGetNetStream NetByUserCall );
// 系统函数 - 发送视频数据
DVRNet_API void HxnNET_SendVideoData ( BYTE nCardNo,
BYTE *pData,
LONG lSize,
BOOL bIFrm );
// 系统函数 - 发送音频数据
DVRNet_API void HxnNET_SendAudioData ( BYTE nCardNo,
BYTE *pData,
LONG lSize );
// 回放函数 - 分配用于回放操作的系统资源
DVRNet_API int HxnNET_PlayBack_Create ( LPCTSTR lpFileName );
// 回放函数 - 释放系统回放资源
DVRNet_API void HxnNET_PlayBack_Delete ( int nPlayBackID );
// 回放函数 - 打开要回放文件
DVRNet_API BOOL HxnNET_PlayBack_Open ( int nPlayBackID, LPCTSTR lpFileName );
// 回放函数 - 从当前位置处开始播放文件
DVRNet_API BOOL HxnNET_PlayBack_Play ( int nPlayBackID, DWORD dwMode );
// 回放函数 - 暂停播放文件
DVRNet_API void HxnNET_PlayBack_Pause ( int nPlayBackID );
// 回放函数 - 关闭回放的文件
DVRNet_API void HxnNET_PlayBack_Close ( int nPlayBackID) ;
// 回放函数 - 设置文件播放位置
DVRNet_API BOOL HxnNET_PlayBack_SetPositon ( int nPlayBackID, DWORD dwPlayTime );
// 回放函数 - 获取当前回放文件的播放位置
DVRNet_API DWORD HxnNET_PlayBack_GetPositon ( int nPlayBackID, BOOL * bPlaying );
// 回放函数 - 得到回放文件中视频图像的尺寸大小
DVRNet_API BOOL HxnNET_PlayBack_GetSize ( int nPlayBackID, WORD *usWidth, WORD *usHeight );
// 回放函数 - 得到回放文件的总时间长度
DVRNet_API int HxnNET_PlayBack_TimeLong ( int nPlayBackID );
// 系统函数 - 局域网支持代理服务器函数
// 注册服务器配置信息到代理端
DVRNet_API BOOL HxnNET_RegServer ( const char *lpRegUserName, // 注册用户名
const char *lpRegPassword, // 注册密码
const char *lpSupplyAddr, // 代理地址
WORD usSupplyPort, // 代理端口
EvCmdRespond evCallNotify ); // 响应回调函数
// 系统函数 - 获取呼叫服务器的配置信息
DVRNet_API BOOL HxnNET_GetSrvAddr ( int nCallID, // call id
const char *lpServerName, // 服务器注册名
const char *lpSupplyAddr, // 代理地址
WORD usSupplyPort ); // 代理端口
// 动态监测函数 - 是否显示当前监测变化网格
DVRNet_API BOOL HxnNET_DisplayCheckMotionGrid ( int nCallID, BYTE * lparam, BOOL isShowGrid );
// 回调函数 - 设置MPEG4 压缩视频流回调
typedef void (CALLBACK *HxnNET_ForMpegCallBack) ( DWORD dwCardID, BYTE * pbuff, DWORD dwSize, BOOL isKeyFrm );
DVRNet_API void WINAPI HxnNET_SetCallBackForMPEG4VideoBuffer ( DWORD dwCardID, HxnNET_ForMpegCallBack ppCall, BOOL m_isVidDecode = FALSE);
// 回调函数 - 设置音频流回调
typedef void (CALLBACK *HxnNET_ForAudioCallBack) ( DWORD dwCardID, BYTE*pbuf, DWORD dwSize );
DVRNet_API void WINAPI HxnNET_SetCallBackForAudioBuffer ( DWORD dwCardID, HxnNET_ForAudioCallBack pAuCall, BOOL m_isAudDecode = FALSE);
// 服务器控制函数 - 针对云台和色亮度调节
void WINAPI HxnNET_SendNetDVRCmd ( int m_nScreenIndex, int m_Cmd, BOOL isKeyDown, int m_Data );
// 判断当前卡号是否正在发送数据
DVRNet_API BOOL HxnNET_IsSendBuf ( DWORD dwCardID );
// 判断当前还有几用户需要发送数据
DVRNet_API int HxnNET_IsStillSendBuf ( DWORD dwCardID );
// 抓图函数 - 抓拍 BMP 图片
BOOL WINAPI HxnNET_SaveToBmpFile ( int nCallID, char *filename );
// 抓图函数 - 抓拍 JPG 图片
BOOL WINAPI HxnNET_SaveToJpgFile( int nCallID, char *filename, DWORD dwQuality );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -