1,221
社区成员
发帖
与我相关
我的任务
分享
unit ipcamera;
interface
uses
Windows, SysUtils, MMSystem, Classes;
const IpcameraSDK='ipcamera.dll';
const MAX_IPADDR_SIZE = 256;
const MAX_USERNAME_SIZE = 256;
const MAX_USERPASSWORD_SIZE = 256;
const MAX_STRINGINFO_SIZE=2048;
const MAX_UUID_SIZE=256;
type
IPCAMBYTE=Byte;
IPCAMBWORD=Word;
IPCAMDWORD=DWORD;
PCALLHANDLE= Pointer;
PTipaddr=^Tipaddr;
Tipaddr=record
addr:array[0..MAX_IPADDR_SIZE-1] of char;
port:array[0..MAX_IPADDR_SIZE-1] of char;
end;
pTuserinfo=^Tuserinfo;
Tuserinfo=record
username:array[0..MAX_USERNAME_SIZE-1] of char;
userpassword:array[0..MAX_USERPASSWORD_SIZE-1] of char;
end;
pTstringinfo=^Tstringinfo;
Tstringinfo=record
len:DWORD;
stringinfo:array[0..MAX_STRINGINFO_SIZE-1] of Char;
end;
PTsystemconfig=^Tsystemconfig;
Tsystemconfig=record
name:array[0..MAX_USERNAME_SIZE-1] of char;
types:word;
alarm_in_count:word;
alarm_out_count:word;
HDD_count:word;
uuid :word;
firmware:array[0..MAX_USERNAME_SIZE-1] of char;
hardware:array[0..MAX_USERNAME_SIZE-1] of char;
codec:array[0..MAX_USERNAME_SIZE-1] of char;
end;
ECallState=( _FILL0,
ECS_IDLE,
ECS_CONNECT,
ECS_LOGIN
);
EStream=(
ES_HD,
ES_D1,
ES_CIF
);
Elocalvideoconfig =(
ELV_ENABLE,
ELV_DISABLE
);
{typedef struct _Tnetworkconfig
{
Etype Device_type;//add by ltq
IPCAMBYTE mac_addr[MAX_MACADDR_SIZE]; //xx:xx:xx:xx:xx:xx(Hex byte)
Eaddrmode addr_mode;
Tipaddr address;
Tipaddr gateway;
IPCAMBYTE rtsp_port[MAX_IPADDR_SIZE] ;
IPCAMBYTE http_port[MAX_IPADDR_SIZE];
Tnetworkconfig;
PTnetworkconfig=^Tnetworkconfig;
Tnetworkconfig=record
}
PTcallinfo=^Tcallinfo;
Tcallinfo=record
callState:ECallState;
callAddr:Tipaddr;
userInfo:Tuserinfo;
end;
//被动式IPCamera TCP接入响应回调函数
pcbPassiveServiceConnectFunc=procedure(pcall:PCALLHANDLE;callAddr:Tipaddr);cdecl;
//被动式IPCamera TCP断开响应回调函数
pcbPassiveServiceDisconnectFunc = procedure(pcall:PCALLHANDLE;callAddr:Tipaddr);cdecl;
//系统参数更新事件通知回调函数
pcbSystemConfigNotifyFunc=procedure(pcall:PCALLHANDLE;systemConfig:Tsystemconfig);cdecl;
//媒体流参数更新事件通知回调函数
pcbStreamConfigNotifyFunc=procedure(pcall:PCALLHANDLE;eStream:EStream;streamConfig:Tsystemconfig);cdecl;
//视频信号丢失状态通知回调函数
pcbVideoLossNotifyFunc=procedure(pcall:PCALLHANDLE);cdecl;
//视频信号恢复状态通知回调函数
pcbVideoRestoreNotifyFunc=procedure(pcall:PCALLHANDLE);cdecl;
PTglobalconfig=^Tglobalconfig;
Tglobalconfig=record
cbPassiveSrvConnectFunc :pcbPassiveServiceConnectFunc ;
//IPCamera设备或网络断线引发的被动挂断回调指针,该域如为NULL,SDK将不发起回调,呼叫实体状态会自动置为ECS_IDLE
cbPassiveSrvDisconnectFun : pcbPassiveServiceDisconnectFunc;
//IPCamera设备系统配置被修改通知,仅通知第三方管理用户
cbSystemConfigNotifyFunc: pcbSystemConfigNotifyFunc ;
//IPCamera设备流配置被修改通知,仅通知第三方管理用户
cbStreamConfigNotifyFunc: pcbStreamConfigNotifyFunc ;
//IPCamera设备视频信号丢失通知
cbVideoLossNotifyFunc: pcbVideoLossNotifyFunc ;
//IPCamera设备视频信号恢复通知
cbVideoRestoreNotifyFunc: pcbVideoRestoreNotifyFunc ;
//链路活跃检查周期,单位ms, 0表示系统采用默认值。该字段建议使用默认值
linkAliveTimeout:Word;
//缺省回叫监听口, 0 表示系统采用默认值(5000)。该字段建议使用默认值
defaultServicePort:word;
end;
//被动式IPCamera TCP接入响应回调函数
//TPSC=procedure(pcall:PCALLHANDLE;callAddr:Tipaddr);cdecl;
//被动式IPCamera TCP断开响应回调函数
//TPSD=procedure(pcall:PCALLHANDLE;callAddr:Tipaddr);cdecl;
///////////////////////////////////////////////////////////////////////////////////////////
// 通信链路操作接口
//主动生成一个面向IPCamera设备的呼叫实体
procedure makeCall(callAddr:Tipaddr;userInfo:Tuserinfo;var nErr:PInteger); cdecl; external IpcameraSDK;
//生成一个监听服务
procedure makeService(serviceAddr:Tipaddr); cdecl; external IpcameraSDK;
//关闭一个监听服务
procedure deleteService(serviceAddr:Tipaddr); cdecl; external IpcameraSDK;
//清除所有监听服务
procedure clearServices(); cdecl; external IpcameraSDK;
//被动生成一个面向IPCamera设备的呼叫实体
procedure acceptCall(pcall:PCALLHANDLE;userInfo:Tuserinfo); cdecl; external IpcameraSDK;
//获取呼叫实体信息
procedure getCallInfo(pcall:PCALLHANDLE;var callInfo:Tcallinfo); cdecl; external IpcameraSDK;
//释放呼叫实体资源
procedure deleteCall(pcall:PCALLHANDLE); cdecl; external IpcameraSDK;
//释放所有呼叫实体资源
procedure clearCalls(); cdecl; external IpcameraSDK;
///////////////////////////////////////////////////////////////////////////////////////////
// IPCamera 媒体流控制接口
//打开指定媒体流
procedure openMediaStream(pcall:PCALLHANDLE;eStream:EStream;var streamInfo:Tstringinfo) ; cdecl; external IpcameraSDK;
//关闭指定媒体流
procedure closeMediaStream(pcall:PCALLHANDLE;eStream:EStream); cdecl; external IpcameraSDK;
//打开广播媒体流
procedure openBCMediaStream(pcall:PCALLHANDLE;eStram:EStream;var streamInfo:Tstringinfo) ; cdecl; external IpcameraSDK;
//关闭广播媒体流
procedure closeBCMediaStream(pcall:PCALLHANDLE) ; cdecl; external IpcameraSDK;
//生成JPEG快照
procedure snapshotMediaStream(pcall:PCALLHANDLE) ; cdecl; external IpcameraSDK;
//本地录像功能手动控制
procedure manualRecordMediaStream(pcall:PCALLHANDLE;estream:EStream;bEnable:Boolean); cdecl; external IpcameraSDK;
///////////////////////////////////////////////////////////////////////////////////////////
// IPCamera 配置接口
//设置系统参数
procedure SetSystemConfig(pcall:PCALLHANDLE;systemConfig:Tsystemconfig) ; cdecl; external IpcameraSDK;
//获取系统参数
procedure GetSystemConfig(pcall:PCALLHANDLE;var systemConfig:Tsystemconfig); cdecl; external IpcameraSDK;
//设置本地视频输出方式
procedure SetLocalVideoOutput(pcall:PCALLHANDLE;eLV:Elocalvideoconfig); cdecl; external IpcameraSDK;
//设置指定码流工作参数
procedure SetStreamConfig(pCall:PCALLHANDLE;eStream:EStream;streamConfig:Tsystemconfig); cdecl; external IpcameraSDK;
//获取指定码流工作参数
//IPCAMAPI int GetStreamConfig(PCALLHANDLE pCall, EStream eStream, Tstreamconfig & streamConfig);
//procedure (pCall:PCALLHANDLE;eStream:EStream;var streamConfig:Tstreamconfig); cdecl; external IpcameraSDK;
////复位IPCamera设备
//IPCAMAPI void RebootSystem(PCALLHANDLE pCall);
//procedure ; cdecl; external IpcameraSDK;
//设置IPCamera设备网络参数
//IPCAMAPI int SetNetworkConfig(PCALLHANDLE pCall, Tnetworkconfig networkConfig);
//procedure ; cdecl; external IpcameraSDK;
//获取IPCamera设备网络参数
//IPCAMAPI int GetNetworkConfig(PCALLHANDLE pCall, Tnetworkconfig & networkConfig);
//procedure ; cdecl; external IpcameraSDK;
//设置IPCamera设备Sensor参数
//IPCAMAPI int SetSensorConfig(PCALLHANDLE pCall, Tsensorconfig sensorConfig);
//procedure ; cdecl; external IpcameraSDK;
//获取IPCamera设备Sensor参数
//IPCAMAPI int GetSensorConfig(PCALLHANDLE pCall, Tsensorconfig & sensorConfig);
//procedure ; cdecl; external IpcameraSDK;
//设置指定码流OSD参数
//IPCAMAPI int SetStreamOSDConfig(PCALLHANDLE pCall, EStream eStream, Tosdstreamconfig osdConfig);
//procedure SetStreamOSDConfig(); cdecl; external IpcameraSDK;
//获取指定码流OSD参数
//IPCAMAPI int GetStreamOSDConfig(PCALLHANDLE pCall, EStream eStream, Tosdstreamconfig & osdConfig);
//procedure ; cdecl; external IpcameraSDK;
//设置IPCamera设备NTP服务参数
//IPCAMAPI int SetNTPConfig(PCALLHANDLE pCall, Tntpconfig ntpConfig);
//procedure ; cdecl; external IpcameraSDK;
//获取IPCamera设备NTP服务参数
//IPCAMAPI int GetNTPConfig(PCALLHANDLE pCall, Tntpconfig & ntpConfig);
//procedure ; cdecl; external IpcameraSDK;
//设置IPCamera设备UPnP参数
//IPCAMAPI int SetUPnpConfig(PCALLHANDLE pCall, Tupnpconfig & upnpConfig);
//procedure ; cdecl; external IpcameraSDK;
//获取IPCamera设备UPnP参数
//IPCAMAPI int GetUPnpConfig(PCALLHANDLE pCall, Tupnpconfig & upnpConfig);
//procedure ; cdecl; external IpcameraSDK;
procedure startIPCamSDK ( gconfig: Tglobalconfig ); cdecl; external IpcameraSDK;
//startIPCamSDK(Tglobalconfig gconfig)
//启动IPCamera SDK
//Start=procedure(gconfig:Tglobalconfig);cdecl;
//生成一个监听服务
//IPCAMAPI int makeService(Tipaddr serviceAddr);
//function makeService(serviceAddr:Tipaddr):Integer;cdecl;
//启动IPCamera SDK
//IPCAMAPI void startIPCamSDK(Tglobalconfig gconfig);
//function startIPCamSDK(gconfig:Tglobalconfig):variant;cdecl;
//停止IPCamera SDK
//IPCAMAPI void stopIPCamSDK();
//function stopIPCamSDK():Variant;cdecl;
//zx
//procedure callback_start ( sta:Start );cdecl;external 'ipcamera.dll';
{procedure lg_start
(
sta:TPSC
);cdecl;external 'ipcamera.dll';
}
implementation
//启动IPCamera SDK
//function startIPCamSDK;external IpcameraSDK name 'startIPCamSDK';
//停止IPCamera SDK
//function stopIPCamSDK;external IpcameraSDK name 'stopIPCamSDK' ;
//生成一个监听服务
//function makeService;external IpcameraSDK name 'makeService';
end.
unit ipcamera;
interface
uses
Windows, SysUtils, MMSystem, Classes;
const IpcameraSDK='ipcamera.dll';
const MAX_IPADDR_SIZE = 256;
const MAX_USERNAME_SIZE = 256;
const MAX_USERPASSWORD_SIZE = 256;
type
IPCAMBYTE=Byte;
PCALLHANDLE=Pointer;
PTsipaddr=^Tsipaddr;
Tsipaddr=record
addr:array[0..MAX_IPADDR_SIZE] of char;
port:array[0..MAX_IPADDR_SIZE] of char;
end;
pTuserinfo=^Tuserinfo;
Tuserinfo=record
username:array[0..MAX_USERNAME_SIZE] of char;
userpassword:array[0..MAX_USERPASSWORD_SIZE] of char;
end;
{ PECallState=^ECallState;//这里怎么转关ENUM的
ECallState=record
ECS_IDLE;
ECS_CONNECT;
ECS_LOGIN;
end; }
PTcallinfo=^Tcallinfo;
Tcallinfo=record
callAddr:Tsipaddr;
userInfo:Tuserinfo;
end;
PTglobalconfig=^Tglobalconfig;
Tglobalconfig=record
cbPassiveSrvConnectFunc:Pointer;
cbPassiveSrvDisconnectFunc:Pointer;
cbSystemConfigNotifyFunc:Pointer;
end;
//被动式IPCamera TCP接入响应回调函数
TPSC=procedure(pcall:PCALLHANDLE;callAddr:Tsipaddr);cdecl;
//被动式IPCamera TCP断开响应回调函数
TPSD=procedure(pcall:PCALLHANDLE;callAddr:Tsipaddr);cdecl;
ipcamapi.h
#ifndef _WANIN_IPCAMERA_API_H_
#define _WANIN_IPCAMERA_API_H_
#include "ipcamdef.h"
//启动IPCamera SDK
IPCAMAPI void startIPCamSDK(Tglobalconfig gconfig);
//停止IPCamera SDK
IPCAMAPI void stopIPCamS();
///////////////////////////////////////////////////////////////////////////////////////////
// 通信链路操作接口
//主动生成一个面向IPCamera设备的呼叫实体
IPCAMAPI PCALLHANDLE makeCall(Tipaddr callAddr, Tuserinfo userInfo, int& nErr);
//生成一个监听服务
IPCAMAPI int makeService(Tipaddr serviceAddr);
//关闭一个监听服务
IPCAMAPI void deleteService(Tipaddr serviceAddr);
#endif
ipcamdef.h
#ifndef _WANIN_IPCAMERA_DEF_H_
#define _WANIN_IPCAMERA_DEF_H_
#ifdef IPCAMERA_EXPORTS
#define IPCAMAPI extern "C" __declspec(dllexport)
#define IPCAMCLASS __declspec(dllexport)
#else
#define IPCAMAPI extern "C" __declspec(dllimport)
#define IPCAMCLASS __declspec(dllimport)
#endif
typedef unsigned char IPCAMBYTE;
typedef void * PCALLHANDLE;
//字符段长度限制性定义
#define MAX_IPADDR_SIZE 256
//数据结构定义
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(4)
typedef struct _Tipaddr
{
IPCAMBYTE addr[MAX_IPADDR_SIZE]; //xxx.xxx.xxx.xxx(byte)
IPCAMBYTE port[MAX_IPADDR_SIZE]; //xxxx(word)
} Tipaddr;
typedef struct _Tuserinfo
{
IPCAMBYTE username[MAX_USERNAME_SIZE];
IPCAMBYTE userpassword[MAX_USERPASSWORD_SIZE];
} Tuserinfo;
//被动式IPCamera TCP接入响应回调函数
typedef void (*pcbPassiveServiceConnectFunc)(PCALLHANDLE pCall, Tipaddr callAddr);
//被动式IPCamera TCP断开响应回调函数
typedef void (*pcbPassiveServiceDisconnectFunc)(PCALLHANDLE pCall, Tipaddr callAddr);
//sdk配置定义
typedef struct _Tglobalconfig
{
//被动模式的IPCamera设备接入回调指针,该域如为NULL,SDK将不启动被动接入模式
pcbPassiveServiceConnectFunc cbPassiveSrvConnectFunc;
//IPCamera设备或网络断线引发的被动挂断回调指针,该域如为NULL,SDK将不发起回调,呼叫实体状态会自动置为ECS_IDLE
pcbPassiveServiceDisconnectFunc cbPassiveSrvDisconnectFunc;
} Tglobalconfig;
#ifdef __cplusplus
}
#endif
#endif
///////////////////////////////////////////////////////////////////////////////////////////
// 文 件 名:ipcamapi.h
// 创 建 者:汤戈
// 创建时间:2009年11月10日
// 内容描述:库引出接口函数头文件
//
// 1、ipcam接口函数均为线程安全;
// 2、ipcam接口函数均为同步调用模式;
// 3、ipcam接口函数除有特殊定义外,所有int型返回值均采用ipcamdef.h的“返回值定义”;
// 4、ipcam接口函数除有特殊定义外,所有字符串型返回值的阈值均采用ipcamdef.h的“//字符段长度限制性定义”;
// 5、呼叫实体的创建由接口调用者使用makeCall或在pcbPassiveServiceConnectFunc回调中使用acceptCall完成;
// 6、呼叫实体的释放由接口调用者直接使用或在pcbPassiveServiceDisconnectFunc回调中使用deleteCall完成;
///////////////////////////////////////////////////////////////////////////////////////////
#ifndef _WANIN_IPCAMERA_API_H_
#define _WANIN_IPCAMERA_API_H_
#include "ipcamdef.h"
//启动IPCamera SDK
IPCAMAPI void startIPCamSDK(Tglobalconfig gconfig);
//停止IPCamera SDK
IPCAMAPI void stopIPCamSDK();
///////////////////////////////////////////////////////////////////////////////////////////
// 通信链路操作接口
//主动生成一个面向IPCamera设备的呼叫实体
IPCAMAPI PCALLHANDLE makeCall(Tipaddr callAddr, Tuserinfo userInfo, int& nErr);
//生成一个监听服务
IPCAMAPI int makeService(Tipaddr serviceAddr);
//关闭一个监听服务
IPCAMAPI void deleteService(Tipaddr serviceAddr);
//清除所有监听服务
IPCAMAPI void clearServices();
//被动生成一个面向IPCamera设备的呼叫实体
IPCAMAPI int acceptCall(PCALLHANDLE pCall, Tuserinfo userInfo);
//获取呼叫实体信息
IPCAMAPI int getCallInfo(PCALLHANDLE pCall, Tcallinfo &callInfo);
//释放呼叫实体资源
IPCAMAPI void deleteCall(PCALLHANDLE pCall);
//释放所有呼叫实体资源
IPCAMAPI void clearCalls();
///////////////////////////////////////////////////////////////////////////////////////////
// IPCamera 媒体流控制接口
//打开指定媒体流
IPCAMAPI int openMediaStream(PCALLHANDLE pCall, EStream eStream, Tstringinfo& streamInfo);
//关闭指定媒体流
IPCAMAPI int closeMediaStream(PCALLHANDLE pCall, EStream eStream);
//打开广播媒体流
IPCAMAPI int openBCMediaStream(PCALLHANDLE pCall, EStream eStream, Tstringinfo& streamInfo);
//关闭广播媒体流
IPCAMAPI int closeBCMediaStream(PCALLHANDLE pCall);
#endif
#ifndef _WANIN_IPCAMERA_DEF_H_
#define _WANIN_IPCAMERA_DEF_H_
#ifdef IPCAMERA_EXPORTS
#define IPCAMAPI extern "C" __declspec(dllexport)
#define IPCAMCLASS __declspec(dllexport)
#else
#define IPCAMAPI extern "C" __declspec(dllimport)
#define IPCAMCLASS __declspec(dllimport)
#endif
typedef unsigned char IPCAMBYTE;
typedef unsigned short IPCAMWORD;
typedef unsigned long IPCAMDWORD;
typedef __int64 IPCAMFOURWORD;
typedef unsigned char * PIPCAMBYTE;
typedef unsigned short * PIPCAMWORD;
typedef unsigned long * PIPCAMDWORD;
typedef void * PCALLHANDLE;
//返回值定义
//成功
#define IPCAM_OK 0
//未定义错误
#define IPCAM_FAIL -1
//呼叫实体不存在
#define IPCAM_FAIL_CALL_NOEXIST -2
//呼叫实体未连接
#define IPCAM_FAIL_CALL_NOLINK -3
//呼叫实体未登陆
#define IPCAM_FAIL_CALL_STATE -4
//信令交互超时
#define IPCAM_FAIL_SIGNAL_TIMEOUT -5
//信令交互对端拒绝
#define IPCAM_FAIL_SIGNAL_PEER -6
//信令参数空间不足
#define IPCAM_FAIL_SIGNAL_PARAM_SPACE -7
//输入参数非法
#define IPCAM_FAIL_PARAM -8
//服务已存在
#define IPCAM_FAIL_SERVICE_EXIST -9
//字符段长度限制性定义
#define MAX_IPADDR_SIZE 256
#define MAX_UUID_SIZE 256
#define MAX_MACADDR_SIZE 256
#define MAX_USERNAME_SIZE 256
#define MAX_USERPASSWORD_SIZE 256
#define MAX_STRINGINFO_SIZE 2048
//缺省值定义
#define DEFAULT_LINK_ALIVE_TIMEOUT 60
#define DEFAULT_SERVICE_PORT 5000
//数据结构定义
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(4)
typedef struct _Tipaddr
{
IPCAMBYTE addr[MAX_IPADDR_SIZE]; //xxx.xxx.xxx.xxx(byte)
IPCAMBYTE port[MAX_IPADDR_SIZE]; //xxxx(word)
} Tipaddr;
typedef struct _Tuserinfo
{
IPCAMBYTE username[MAX_USERNAME_SIZE];
IPCAMBYTE userpassword[MAX_USERPASSWORD_SIZE];
} Tuserinfo;
typedef enum _ECallState{
ECS_IDLE, //空闲实体
ECS_CONNECT, //TCP链路连通实体
ECS_LOGIN, //登录有效实体
} ECallState;
//被动式IPCamera TCP接入响应回调函数
typedef void (*pcbPassiveServiceConnectFunc)(PCALLHANDLE pCall, Tipaddr callAddr);
//被动式IPCamera TCP断开响应回调函数
typedef void (*pcbPassiveServiceDisconnectFunc)(PCALLHANDLE pCall, Tipaddr callAddr);
//系统参数更新事件通知回调函数
typedef void (*pcbSystemConfigNotifyFunc)(PCALLHANDLE pCall, Tsystemconfig systemConfig);
//媒体流参数更新事件通知回调函数
typedef void (*pcbStreamConfigNotifyFunc)(PCALLHANDLE pCall, EStream eStream, Tstreamconfig streamConfig);
//视频信号丢失状态通知回调函数
typedef void (*pcbVideoLossNotifyFunc)(PCALLHANDLE pCall);
//视频信号恢复状态通知回调函数
typedef void (*pcbVideoRestoreNotifyFunc)(PCALLHANDLE pCall);
//sdk配置定义
typedef struct _Tglobalconfig
{
//被动模式的IPCamera设备接入回调指针,该域如为NULL,SDK将不启动被动接入模式
pcbPassiveServiceConnectFunc cbPassiveSrvConnectFunc;
//IPCamera设备或网络断线引发的被动挂断回调指针,该域如为NULL,SDK将不发起回调,呼叫实体状态会自动置为ECS_IDLE
pcbPassiveServiceDisconnectFunc cbPassiveSrvDisconnectFunc;
//IPCamera设备系统配置被修改通知,仅通知第三方管理用户
pcbSystemConfigNotifyFunc cbSystemConfigNotifyFunc;
//IPCamera设备流配置被修改通知,仅通知第三方管理用户
pcbStreamConfigNotifyFunc cbStreamConfigNotifyFunc;
//IPCamera设备视频信号丢失通知
pcbVideoLossNotifyFunc cbVideoLossNotifyFunc;
//IPCamera设备视频信号恢复通知
pcbVideoRestoreNotifyFunc cbVideoRestoreNotifyFunc;
//链路活跃检查周期,单位ms, 0表示系统采用默认值。该字段建议使用默认值
IPCAMDWORD linkAliveTimeout;
//缺省回叫监听口, 0 表示系统采用默认值(5000)。该字段建议使用默认值
IPCAMWORD defaultServicePort;
} Tglobalconfig;