⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvrnet.h

📁 影像采集卡开发源程序
💻 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 + -