📄 net.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 + -