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

📄 net.h

📁 实时监控
💻 H
字号:
/*!	客户端管理器SDK. \n
 *	 - 本SDK中API用到的参数:\n
 *		ip是网络字节顺序	(network byte order, big endian)\n
 *		port是主机顺序		(host byte order, little endian)\n
 *	\n
 *		比如: "192.168.0.1:8101"\n
 *		对于本SDK的期望值为:\n
 *		ip = inet_addr("192.168.0.1");\n
 *		port = 8101\n
 *	 - 本SDK中两个重要概念: \n
 *		-# 视频通道(channel) \n
 *			视频通道是对于主机而言的, 它对应于主机端某个视频输入端口. \n
 *		-# 组别(group) \n
 *			组别是对客户端而言的, 它对应于客户端某个视频窗口. \n
 *	在客户端, 组是视频通道的容器. \n
 *	视频通道和组别既可以相同, 也可以不同.
 *	
 * \mainpage DVR-SDK APIs
 * \version 1.0
 * \author 深傲科技
 * \date 2003年9月
 */

#ifndef _NET_H
#define _NET_H

#include "../notif/notif_cmd.h"
#include "../notif/notif_av.h"
#include "../notif/notif_opt.h"
#include "../notif/notif_bk.h"
#include "../notif/notif_alarm.h"
#include "net_opt.h"


#define BEGIN_PORT 8000
#define END_PORT   8999
#define MAX_PORT (END_PORT - BEGIN_PORT)



/// 网络句柄.
#define NET_HANDLE LONG

/// 回调接收.
#define CALLEE	HWND

/// 网络命令/消息接收.
#define CMD_CALLEE CALLEE

/// 视频消息接收.
#define VIDEO_CALLEE CALLEE

/// 参数设置消息接收.
#define OPT_SET_CALLEE CALLEE

/// 参数获取消息接收.
#define OPT_GET_CALLEE CALLEE

/// 备份消息接收.
#define BACKUP_CALLEE CALLEE


/*!	码流的回调函数.
 *	@int group: 组别, 一般是客户端视频窗口序号.
 *	@unsigned char * buf: 数据返回的缓冲区.
 *	@int len: 返回数据的长度.
 *	@int type: 返回数据帧的类型.
 */
typedef int (*PCALLBACKSTREAMPROD)(int group, unsigned char * buf, int len, int type, DWORD duser1, DWORD duser2);

typedef int (*PCALLBACKDECODEDSTREAMPROD)(int group, unsigned char * buf, int len, int type, void * pvtype, DWORD duser1, DWORD duser2);

/*!	叠加图形的回调函数.
 *	@HDC* phDc: 组别, 一般是客户端视频窗口序号.
 */
typedef void (*pDraw_Add_Image)(HDC &phDc, DWORD duser1, DWORD duser2);

#include "color_space.h"
#include "v_std.h"

extern "C" {

/*!	创建网络对象.
 *	@param ip: 本地IP地址, 一般指定0, 表示默认.
 *	@param port: 本地网络端口, 范围4096 ~ 65535, 一般指定8101.
 *	@param cb: 网络消息回调.
 *	@param MPEG4: 是否使用MPEG4解码库? TRUE: 使用, FALSE: 使用H263解码库
 *	@BOOL jump_frame: 是否丢弃不完整的帧?
 *	@return 成功:网络对象句柄.\n失败:返回 0.
 */
NET_HANDLE WINAPI net_create(ULONG ip, USHORT port, CMD_CALLEE cb, ULONG Mpeg4, BOOL jump_frame, BOOL network_type);

/*!	销毁网络对象.
 *	@param h: 由net_create创建的网络对象句柄.
 *	@return 无.
 */
VOID WINAPI net_destroy(NET_HANDLE h);

/*!	登录远程主机.
 *	@param h: 由net_create创建的网络句柄.
 *	@param ip, port: 远程主机的ip地址和网络端口.
 *	@param password: 登录密码.
 *	@return 无
 */
VOID WINAPI net_login(NET_HANDLE h, ULONG ip, USHORT port,LPCTSTR user, LPCTSTR password);

/*!	查询用户对于某主机的权限
 *	@param h: 由net_create创建的网络句柄.
 *	@param ip, port: 某主机网络地址.
 *	@return 返回PRIVILEGE类型, USER: 普通用户, ADMIN: 系统管理员, INVALID: 可能未登录该主机.
 *	@see PRIVILEGE
 */
PRIVILEGE WINAPI net_get_privilege(NET_HANDLE h, ULONG ip, USHORT port);

/*!	断开与远程主机的连接.
 *	@param h: 由net_create创建的网络句柄.
 *	@param ip, port: 远程主机的网络地址.
 *	@param close_remote: 断开连接时是否关闭远程主机的视频, TRUE: 关闭, FALSE: 不关闭
 */
VOID WINAPI net_logout(NET_HANDLE h, ULONG ip, USHORT port, BOOL close_remote);

/*!	设置视频显示方式.
 *	@param h: 由net_create创建的网络句柄.
 *	@param cs: 显示方式.
 *	@param video_mem: TRUE: 使用视频内存显示, FALSE: 使用系统内存显示
 *	@see COLOR_SPACE
 */
VOID WINAPI net_set_color_space(NET_HANDLE h, COLOR_SPACE cs, BOOL video_mem);

/*!	打开/关闭本地或远程主机的视频通道.
 *	@param h: 由net_create创建的网络句柄.
 *	@param ip, port: 远程主机的网络地址.
 *	@param channel: 主机端某视频通道序号.
 *	@param group: 组别, 一般是客户端视频窗口序号.
 *	@param cb: 视频消息接收者.(可以为空)
 */
VOID WINAPI net_open_remote_channel(NET_HANDLE h, 
									ULONG ip, USHORT port, 
									int channel, 
									int group, 
									VIDEO_CALLEE cb,
									BOOL bUdpav);

/*!	关闭远程主机的视频通道.
 *	@param h: 由net_create创建的网络句柄.
 *	@param group: 组别.
 *	@warning 该操作会影响到连接到同一台主机的其他客户端查看.
 *	@see net_close_local_channel
 */
VOID WINAPI net_close_remote_channel(NET_HANDLE h, int group);

/*!	在本地机器上停止接收视频数据.
 *	@param h: 由net_create创建的网络句柄.
 *	@param group: 组别.
 *	@see net_close_remote_channel
 */
VOID WINAPI net_close_local_channel(NET_HANDLE h, int group);

/*!	更新某组窗口位置和大小.
 *	@param h: 由net_create创建的网络句柄.
 *	@param group: 组别.
 */
VOID WINAPI net_update_window(NET_HANDLE h, int group);

/// 视频点播组.
#define VOD_GROUP -1

/*!	查询当前音频组.
 *	@param h: 由net_create创建的网络句柄.
 *	@return 组别.
 */
LONG WINAPI net_get_audio_group(NET_HANDLE h);

/*!	切换音频通道.
 *	@param h: 由net_create创建的网络句柄.
 *	@param group: 要切换为当前音频组的组别.
 */
VOID WINAPI net_switch_audio(NET_HANDLE h, int group);

/*!	静音
 *	@param h: 由net_create创建的网络句柄.
 *	@param mute: TRUE(1): 静音, FALSE(0): 取消静音.
 */
VOID WINAPI net_mute_audio(NET_HANDLE h, BOOL mute);

/*!	查询静音
 *	@param h: 由net_create创建的网络句柄.
 *	@return TRUE: 已静音, 否则返回FALSE.
 */
BOOL WINAPI net_is_muted(NET_HANDLE h);

///	视频点播命令
//##ModelId=3F9A1D25020F
typedef enum 
{
	VOD_REQ,			///< 打开视频点播.
	VOD_END,			///< 关闭视频点播.
	VOD_SET_SPEED		///< 设置视频点播方式.
} VOD_CMD;

///	视频点播播放方式
//##ModelId=3F9A1D250219
typedef enum
{
	VS_INVALID = -3,	///< 无效.
	VS_FRAME = -2,		///< 帧进.
	VS_PAUSE = -1,		///< 暂停.

	VS_PLAYx1 = 0x2800,	///< 快放.
	VS_PLAYx2 = 0x1400,	///< 2倍快放.
	VS_PLAYx3 = 0x0a00,	///< 3倍快放.

	VS_FFx1	= 0xFF66,	///< 快进.
	VS_FFx2 = 0x8066,	///< 2倍快进.
	VS_FFx3 = 0x5066,	///< 3倍快进.
	VS_FFx4 = 0x4066,   ///< 4倍快进.

	VS_FBx1 = 0xFF33,	///< 快退.
	VS_FBx2 = 0x8033,	///< 2倍快退.
	VS_FBx3 = 0x5033,	///< 3倍快退.
	VS_FBx4 = 0x4033,   ///< 4倍快退.

	VS_DEFAULT = VS_PLAYx1	///< 默认方式.
} VOD_SPEED;

/*!	打开视频点播.
 *	@param h: 由net_create创建的网络句柄.
 *	@param ip, port: 主机网络地址.
 *	@param ft: 视频点播文件的起始日期时间.
 *	@param group: 视频点播播放组别.
 *	@param cb: 视频点播消息接收.
 *	@see TREC_FILETIME
 */
VOID WINAPI net_start_vod(NET_HANDLE h, 
						  ULONG ip, 
						  USHORT port, 
						  const TREC_FILETIME* ft, 
						  int group, 
						  VIDEO_CALLEE cb);

/*!	设置视频点播播放方式.
 *	@param h: 由net_create创建的网络句柄.
 *	@param vs: 视频点播播放方式.
 *	@see VOD_SPEED
 */
VOID WINAPI net_set_vod_mul_speed(NET_HANDLE h,ULONG ip, VOD_SPEED vs,int group);

VOID WINAPI net_set_vod_speed(NET_HANDLE h, VOD_SPEED vs);

/*!	获取当前的视频点播播放方式.
 *	@param h: 由net_create创建的网络句柄.
 *	@return 视频点播播放方式.
 *	@see VOD_SPEED
 */
VOD_SPEED WINAPI net_get_vod_speed(NET_HANDLE h,ULONG ip, int group);

/*!	关闭视频点播.
 *	@param h: 由net_create创建的网络句柄.
 */
VOID WINAPI net_stop_vod(NET_HANDLE h,ULONG ip, USHORT port, int group);

/*!	获取主机点播文件信息.
 *	
 */

VOID WINAPI net_get_options_file(NET_HANDLE h, ULONG ip, USHORT port, 
							 byte * m_byte, OPT_GET_CALLEE cb);

/*!	获取主机备份区文件信息.
 *	
 */

VOID WINAPI net_get_options_backup_file(NET_HANDLE h, ULONG ip, USHORT port, 
								 byte * m_byte, OPT_GET_CALLEE cb);

/*!	获取主机设置信息.
 *	@param h: 由net_create创建的网络句柄.
 *	@param ip, port: 主机网络地址.
 *	@param opt: 参数类型.
 *	@param channel: 主机通道序号.
 *	@param cb: 参数获取消息通知.
 *	@see NET_OPTIONS
 */

VOID WINAPI net_get_options(NET_HANDLE h, ULONG ip, USHORT port, 
							NET_OPTIONS opt, int channel, 
							OPT_GET_CALLEE cb);

/*!	更改主机设置.
 *	@param h: 由net_create创建的网络句柄.
 *	@param ip, port: 主机网络地址.
 *	@param opt: 参数类型.
 *	@param stuff: 参数内容. 其数据结构请参考具体参数类型.
 *	@param cb: 参数设置消息通知.
 *	@see NET_OPTIONS
 */
VOID WINAPI net_set_options(NET_HANDLE h, ULONG ip, USHORT port, 
							NET_OPTIONS opt, void* stuff,
							OPT_SET_CALLEE cb);

/*!	开始本地录像.
 *	@param h: 由net_create创建的网络句柄.
 *	@param group: 要进行本地录像的组别. 该组必须已经打开视频通道(或视频点播).
 *	@param drive: 本地录像文件保存分区. 如_T('C')表示保存到C:
 */
VOID WINAPI net_start_local_record(NET_HANDLE h, int group, TCHAR drive);

/*!	停止本地录像.
 *	@param h: 由net_create创建的网络句柄.
 *	@param group: 要停止的本地录像组别.
 */
VOID WINAPI net_stop_local_record(NET_HANDLE h, int group);

///	根据由net_get_local_record返回的分区判断当前是否正在录像.
#define IS_RECORDING(drive) (drive!=0)

/*!	获取本地录像存放分区.
 *	@param h: 由net_create创建的网络句柄.
 *	@param group: 组别.
 *	@return 分区. _T('C')表示本地录像目前保存到C:
 */
TCHAR WINAPI net_get_local_record(NET_HANDLE h, int group);

/*!	开始备份.
 *	@param h: 由net_create创建的网络句柄.
 *	@param ip, port: 主机网络地址.
 *	@param opt: 备份参数.
 *	@param cb: 备份消息通知.
 */
VOID WINAPI net_start_backup(NET_HANDLE h, ULONG ip, USHORT port, TREC_BACKUPTIME* opt, BACKUP_CALLEE cb);

/*!	取消备份.
 *	@param h: 由net_create创建的网络句柄.
 */
VOID WINAPI net_stop_backup(NET_HANDLE h, ULONG ip, USHORT port) ;


/*!	开始对讲.
 *	@param h: 由net_create创建的网络句柄.
 *	@param ip, port: 主机网络地址.
 *	@param opt: 备份参数.
 *	@param cb: 备份消息通知.
 */

VOID WINAPI net_start_talk(NET_HANDLE h, ULONG ip, USHORT port, int channel, BACKUP_CALLEE cb);
/*!	取消对讲.
 *	@param h: 由net_create创建的网络句柄.
 */
VOID WINAPI net_stop_talk(NET_HANDLE h, ULONG ip, USHORT port) ;

/*!	抓图.
 *	@param h: 由net_create创建的网络句柄.
 *	@param group: 组别. 该组必须已经打开视频通道(或视频点播).
 *	@param bmpfile: 保存为BMP文件的文件名.
 *	@return TRUE: 成功, FALSE: 失败.
 */

LONG WINAPI net_snapshot(NET_HANDLE h, int group, LPCTSTR bmpfile);

/*!	辅助功能: 建立多级子目录.
 *	@param dir: 目录名. 如"C:\\abc\\def\\hij"
 */
VOID WINAPI recursive_create_dir(LPCTSTR dir);

/*!	辅助功能: 转换 YV12 -> RGB24. \n
 *	宽度x高度: 352x288
 *	@param yv12: 源 YV12 图像.
 *	@param rgb24: 目标 RGB24 图像.
 */
VOID WINAPI yv12_to_rgb24(void* yv12, void* rgb24);

/*!	辅助功能: 转换 YV12 -> RGB32. \n
 *	宽度x高度: 352x288
 *	@param yv12: 源 YV12 图像.
 *	@param rgb32: 目标 RGB32 图像.
 */
VOID WINAPI yv12_to_rgb32(void* yv12, void* rgb32);

/*!	清除报警: */
VOID WINAPI clear_alarm(NET_HANDLE h, ULONG ip, USHORT port);

/*!	获取硬盘信息: */
VOID WINAPI net_get_disk_info(NET_HANDLE h, ULONG ip, LONG port);

/*!	获得特定解码器信息: */
VOID WINAPI net_get_zh_decstate(NET_HANDLE h, ULONG ip, LONG port, int address);

/*!	是否开启网络优化: */
VOID WINAPI set_lost_frame_jump(BOOL jump_frame);

/*!域名解析: */
ULONG WINAPI net_get_host_by_name(NET_HANDLE h, LPCTSTR m_name);

VOID WINAPI net_set_network_begin_port(NET_HANDLE h, USHORT port);

/*!设置原始码流回调函数: */
BOOL WINAPI SetEncodeStreamProdCallBack(NET_HANDLE h, int group, PCALLBACKSTREAMPROD  p, DWORD duser1, DWORD duser2);

/*!设置解码后码流回调函数: */
BOOL WINAPI SetDecodedStreamProdCallBack(NET_HANDLE h, int group, PCALLBACKDECODEDSTREAMPROD  p, DWORD duser1, DWORD duser2);

/*!设置图像显示句柄: */
BOOL WINAPI SetEncodeStreamShowHandle(NET_HANDLE h, int group, VIDEO_CALLEE ImageHandle);

/*!设置图像叠加回调函数: */
BOOL WINAPI SetDrawAddImageCallBack(NET_HANDLE h, int group, pDraw_Add_Image pimage, DWORD duser1, DWORD duser2);

/*!打开报警服务器tcp方式: */
BOOL WINAPI open_alarm_server(NET_HANDLE h, USHORT bindport);

/*!关闭报警服务器连接: */
BOOL WINAPI close_alarm_server(NET_HANDLE h);

/*!使主机端处于升级状态*/
BOOL WINAPI SetDvrUpdateStatue(NET_HANDLE h, ULONG ip, LONG port);

/*!设置网吧的信息*/
BOOL WINAPI SetDvrNetClubInfo(NET_HANDLE h, ULONG ip, LONG port, void *buf, int len);

BOOL WINAPI SetDvrRESTART(NET_HANDLE h, ULONG ip, LONG port);

BOOL WINAPI net_sendcardid(NET_HANDLE h, ULONG ip, LONG port, void *buf);

BOOL WINAPI net_opennet_alarm(NET_HANDLE h, ULONG ip, LONG port, int channel);

BOOL WINAPI net_closenet_alarm(NET_HANDLE h, ULONG ip, LONG port, int channel);

BOOL WINAPI net_openalarm_output(NET_HANDLE h, ULONG ip, USHORT port, int output);

UINT WINAPI net_get_bitrate(NET_HANDLE h,int group);//得到当前显示窗口的码流

UINT WINAPI net_get_tcp_bitrate(NET_HANDLE h);

UINT WINAPI net_get_udp_bitrate(NET_HANDLE h);

//设置是否进行软解码;
VOID WINAPI net_set_decode_data(BOOL m_bool);

VOID WINAPI net_query_dvr(CMD_CALLEE cb);

};	// extern "C"

#endif	// _NET_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -