NetSDK Programming Manual
NetSDK Programming Manual
2009-01-10
Foreword
Thank you for using our VANGUARD devices. We are going to provide best service for you. This manual may contain spelling grammar and punctuation errors.We will update this manual regularly.
Modification History
Date
2008.10.22 2009.02.12 2009.02.18
Content Create
Add H264_DVR_SearchDevice for search device at LAN Add API with talk:
H264_DVR_StartVoiceCom_MRH264_DVR_VoiceComSendDataH264_DVR_StopVoiceC omH264_DVR_SetTalkMode
2009.09.26
Catalogue
1. GENERAL INTRODUCTION.........................................................................................5 1.1 INTRODUCTION................................................................................................................5 1.2 APPLICABILITY................................................................................................................5 DESIG OF PRINCIPIA .......................................................................................................6 1.3 PROGRAMMING DESCRIPTION...........................................................................................6 1.4 API CALLING REFERENCE .............................................................................................7 2 DATA STRUCTURE DESCRIPTION.............................................................................9 2.1 CLIENT DATA STRUCTURE DESCRIPTION ..........................................................................9 2.1.1 Structure of device information .......................................................................12 2.1.2 Date Information.................................................................................................12 2.1.3 Record File Information.....................................................................................12 2.1.4 Structure of Configuration................................................................................16 2.1.5 Network keyboard define...................................................................................28 3 API DEFINITION.............................................................................................................31 3.1 SDK INITIALIZATION....................................................................................................31 3.2 GET ALARM STATUS.......................................................................................................32 3.3 DEVICE REGISTRATION..................................................................................................34 3.4 REAL-TIME MONITOR....................................................................................................35 3.5 PLAYBACK AND DOWNLOAD..........................................................................................37 3.6 PLAYBACK CONTROL.....................................................................................................40 3.7 PTZ CONTROL.............................................................................................................40 3.8 SYSTEM CONFIGURATION...............................................................................................41 3.9 LOG MANAGEMENT.......................................................................................................42 3.10 REMOTE CONTROL......................................................................................................43 3.11 UPGRADE...................................................................................................................43 3.11 AUDIO TALK...............................................................................................................45 3.12 RECORD MODE...........................................................................................................47 3.13 SET SYSTEM TIME......................................................................................................48 3.14 GET DEVICE STATUS....................................................................................................48 3.15 NET KEYBOARD..........................................................................................................48
1. General Introduction
1.1 Introduction
This SDK is for VANGUARD DVR,network video server and etc. The text describes functions and interfaces as well as relations among them.It also provide detailed demonstration. This package includes two parts: operation and equipment management Operation state listening, real-time monitor, real-time preview, character overlay, audio control, record playback and download, data storage, PTZ control, alarm deployment, voice dialogue, log management, user management, action on alarm, transparent com port and etc. Device management remote upgrade, remote restart/shutdown, equipment parameters setup such as general setting, alarm, record, serial port, image, log, user management, device timing, motion detection, network and etc. The development package includes the following files Network library Assitante library NetSDK NetSDK.lib NetSDK.dll H264Play.dll DllDeinterlace.dll hi_h264dec_w.dll Head file Lib file Interface library Decode assistant library Decode assistant library Decode assistant library
1.2 Applicability
etc Support real-time monitor playback, Alarm Remote config management and log Support TCP network tramsmisson, Max 10 TCP connections You can use this SDK to connect to device to develop client-end program, or you can use SDK callback interface to develop server program such as stream media transfer, playback, alarm and etc. The client supports multiimage resolutions including QCIF CIF 2CIF HalfD1 D1VGA640480and etc. When SDK is playback/download, one logged ID can not operate playback and downalod for the same channel at the same time.
SDK performance has relationship woth device running status and client-end PC capability. Basically, it can support 1024 users to register at the same time, 1024-ch network preview and playback at the same time. Support 1024-ch alarm upload at the same time .And 100-ch video display
Desig of principia
gramming Description
Initialization and clean up 1First calling H264_DVR_Init() to initialize SDKwhen Application exit, calling H264_DVR_Cleanup()to release all occupied resource. 2 Most API shall call after H264_DVR_Init(), before H264_DVR_Cleanup() But H264_DVR_GetLastError can be called anywhere. Login in and login out
Befor access device, you shall call H264_DVR_Login() login first, also you can call H264_DVR_LoginEx() to assign your client type logined. If login succeeded, will return a global handle, the handle is a session channel, you can use it to operate device. Call
H264_DVR_Logout() to close this session.
Callback Fuction
Callback function have a parameter: dwUser, it is elf-define parameter, you can define your owner data.
Calling Reference
The below diagram describes a brief API calling reference for basic client application, and users can add in other function modules according to actual application requirements.
C. Login in Login in
H264_DVR_Login ()
H264_DVR_LoginEx () H264_DVR_SetupAlarmChan ()
D. Operation of device ,get and set parameter configuration Parameter configuration Log searching PTZ control
H264_DVR_GetDevConfig () H264_DVR_SetDevConfig () H264_DVR_FindDVRLog () H264_DVR_PTZControl () H264_DVR_PTZControlEx ()
()
Download
()
H. Login out Cancel subscribe for alarm message Disconnect I. Release SDK resource SDK exit
H264_DVR_Cleanup () H264_DVR_CloseAlarmChan () H264_DVR_Logout ()
H264_DVR_OPEN_CHANNEL_ERROR = -11200, //open channel fail H264_DVR_CLOSE_CHANNEL_ERROR = -11201, //close channel fail H264_DVR_SUB_CONNECT_ERROR = -11202, //open media connet fail H264_DVR_SUB_CONNECT_SEND_ERROR = -11203, //media connet send data fail /// error code of user management H264_DVR_NOPOWER = -11300, //no power H264_DVR_PASSWORD_NOT_VALID = -11301, // password not valid H264_DVR_LOGIN_USER_NOEXIST = -11302, // user not exist H264_DVR_USER_LOCKED = -11303, // user is locked H264_DVR_USER_IN_BLACKLIST = -11304, // user is in backlist H264_DVR_USER_HAS_USED = -11305, // user have logined H264_DVR_USER_NOT_LOGIN = -11305, // no login H264_DVR_CONNECT_DEVICE_ERROR = -11306, // maybe device no exist
/// error code of configure management H264_DVR_OPT_RESTART = -11400, H264_DVR_OPT_REBOOT = -11401, H264_DVR_OPT_FILE_ERROR = -11402, H264_DVR_OPT_CAPS_ERROR = -11403, H264_DVR_OPT_VALIDATE_ERROR = -11404, H264_DVR_OPT_CONFIG_NOT_EXIST = -11405, H264_DVR_CTRL_PAUSE_ERROR = -11500, };
// // // // // // //
need to restart application need to reboot system write file fail not support validate fail config not exist pause fail
enum SDK_EventCodeTypes
SDK_EVENT_CODE_INIT = 0, SDK_EVENT_CODE_LOCAL_ALARM = 1, // local alarm SDK_EVENT_CODE_NET_ALARM, // network alarm SDK_EVENT_CODE_MANUAL_ALARM, // manual alarm SDK_EVENT_CODE_VIDEO_MOTION, // motion detect SDK_EVENT_CODE_VIDEO_LOSS, // loss detect SDK_EVENT_CODE_VIDEO_BLIND, // blind detect SDK_EVENT_CODE_VIDEO_TITLE, SDK_EVENT_CODE_VIDEO_SPLIT, SDK_EVENT_CODE_VIDEO_TOUR, SDK_EVENT_CODE_STORAGE_NOT_EXIST, SDK_EVENT_CODE_STORAGE_FAILURE, SDK_EVENT_CODE_LOW_SPACE, SDK_EVENT_CODE_NET_ABORT, SDK_EVENT_CODE_COMM, SDK_EVENT_CODE_STORAGE_READ_ERROR, SDK_EVENT_CODE_STORAGE_WRITE_ERROR, SDK_EVENT_CODE_NET_IPCONFLICT, SDK_EVENT_CODE_ALARM_EMERGENCY, SDK_EVENT_CODE_DEC_CONNECT, SDK_EVENT_CODE_NR,
};
//alarm information typedef struct SDK_ALARM_INFO { int nChannel; int iEvent; ///< refer to SDK_EventCodeTypes
char sSoftWareVersion[64]; ///< software version char sHardWareVersion[64]; ///< hardware version char sEncryptVersion[64]; ///< encrypt version SDK_SYSTEM_TIME tmBuildTime;///< build time char sSerialNumber[64]; ///< device serial number int byChanNum; ///< channel number of video in int iVideoOutChannel; ///< channel number of video out int byAlarmInPortNum; ///< channel number of alarm in int byAlarmOutPortNum; ///< channel number of alarm out int iTalkInChannel; ///< channel number of talk in int iTalkOutChannel; ///< channel number of talk out int iExtraChannel; ///< channel number of extra int iAudioInChannel; ///< channel number of audio in int iCombineSwitch; ///< channel number of combine }H264_DVR_DEVICEINFO,*LPH264_DVR_DEVICEINFO;
{ int nChannelN0; //channel NO, start with 0 int nFileType; //record type H264_DVR_TIME startTime; //start time H264_DVR_TIME endTime; //end time char szCard[32]; //card number }H264_DVR_FINDINFO;
struct SDK_COMMATTRI { int iDataBits; // data bit: [5,8] int iStopBits; // stop bit: [0,2] int iParity; // parity: 0: None 1: odd 2even 3: mark 4: space int iBaudRate; // baudrate: 115200,57600,38400,9600,4800,2400 and so on }; // serial configure struct SDK_CONFIG_COMM_X { char iProtocolName[32]; // Protocol:Console int iPortNo; // Port No. SDK_COMMATTRI aCommAttri; // attribute of serial };
struct SDK_STR_CONFIG_PTZ {
char sProtocolName[NET_MAX_PTZ_PROTOCOL_LENGTH]; // Protocol int ideviceNo; // PTZ device NO. int iNumberInMatrixs; // NO. in matrixs int iPortNo; // serial port NO.: [1, 4] SDK_COMMATTRI dstComm; // attribute of serial }; //all channel of PTZ protocol struct SDK_STR_PTZCONFIG_ALL { SDK_STR_CONFIG_PTZ ptzAll[NET_MAX_CHANNUM]; };
Right List
typedef struct _OPR_RIGHT { string name; }OPR_RIGHT; typedef struct _USER_INFO { int rigthNum; string rights[NET_MAX_RIGTH_NUM]; string strGroupname; string strmemo; string strname; string strpassWord; bool reserved; //is reserved user bool shareable; //is shareable }USER_INFO; typedef struct _USER_GROUP_INFO { int rigthNum; string memo; string name; string rights[NET_MAX_RIGTH_NUM]; //right list }USER_GROUP_INFO; //all of user and group information structure typedef struct _USER_MANAGE_INFO {
//modify user typedef struct _CONF_MODIFYUSER { std::string sUserName; USER_INFO User; }CONF_MODIFYUSER; //modify group typedef struct _CONF_MODIFYGROUP { std::string sGroupName; USER_GROUP_INFO Group; }CONF_MODIFYGROUP;
/// modify password struct _CONF_MODIFY_PSW { std::string sUserName; std::string sPassword; std::string sNewPassword; };
Log Information
#define NET_MAX_RETURNED_LOGLIST 1024 //the max item of Log /// log search condition struct SDK_LogSearchCondition { int nType; ///< log type: 0: all 1: system 2: configure 3: storage 4: alarm 5record 6: account 7: file int iLogPosition; ///< return of last log item position in the whole logs SDK_SYSTEM_TIME stBeginTime; ///< begin time SDK_SYSTEM_TIME stEndTime; ///< end time
}; //return of Log search struct SDK_LogList { int iNumLog; struct LogItem { char sType[24]; ///< log type char sUser[32]; ///< Operator of log char sData[68]; ///< log data SDK_SYSTEM_TIME stLogTime; ///< the time of log happened } Logs[NET_MAX_RETURNED_LOGLIST]; };
struct SDK_STORAGEDISK { int iPhysicalNo; int iPartNumber; SDK_DriverInformation diPartitions[SDK_MAX_DRIVER_PER_DISK]; }; struct SDK_StorageDeviceInformationAll { int iDiskNumber; SDK_STORAGEDISK vStorageDeviceInfoAll[SDK_MAX_DISK_PER_MACHINE]; };
Real-Time Monitor
typedef struct{ int nChannel; //Channel NO. int nStream; //0: main stream1: extra stream int nMode; //0TCP, 1UDP }H264_DVR_CLIENTINFO,*LPH264_DVR_CLIENTINFO;
//User informationincluding power listuser list and group list USER_MANAGE_INFO E_SDK_CONFIG_ADD_USER, //add user USER_INFO E_SDK_CONFIG_MODIFY_USER, //modify user CONF_MODIFYUSER E_SDK_CONFIG_DELETE_USER, //del user USER_INFO E_SDK_CONFIG_ADD_GROUP, //add group USER_GROUP_INFO E_SDK_CONFIG_MODIFY_GROUP, //modify group CONF_MODIFYGROUP E_SDK_COFIG_DELETE_GROUP, //del group USER_GROUP_INFO E_SDK_CONFIG_MODIFY_PSW, //modify password _CONF_MODIFY_PSW E_SDK_CONFIG_USER,
E_SDK_CONFIG_ABILTY_ENCODE, E_SDK_CONFIG_ABILITY_PTZPRO,
SDK_PTZPROTOCOLFUNC
E_SDK_COMFIG_ABILITY_COMMPRO,
SDK_COMMFUNC
E_SDK_CONFIG_ABILITY_BLIND_FUNC,
SDK_BlindDetectFunction
E_SDK_CONFIG_ABILITY_DDNS_SERVER, // type
SDK_DDNSServiceFunction
E_SDK_CONFIG_ABILITY_TALK, //Device configuration E_SDK_CONFIG_SYSINFO = 17, E_SDK_CONFIG_SYSNORMAL, E_SDK_CONFIG_SYSENCODE, E_SDK_CONFIG_SYSNET, E_SDK_CONFIG_PTZ, E_SDK_CONFIG_COMM, E_SDK_CONFIG_RECORD, E_SDK_CONFIG_MOTION, E_SDK_CONFIG_SHELTER, E_SDK_CONFIG_VIDEO_LOSS, E_SDK_CONFIG_ALARM_IN, E_SDK_CONFIG_ALARM_OUT, E_SDK_CONFIG_DISK_MANAGER E_SDK_CONFIG_OUT_MODE,
//system information H264_DVR_DEVICEINFO //general SDK_CONFIG_NORMAL //encode SDK_EncodeConfigAll //network SDK_CONFIG_NET_COMMON //ptz SDK_STR_PTZCONFIG_ALL //232 SDK_CommConfigAll //record SDK_RECORDCONFIG_ALL //motion detect SDK_MOTIONCONFIG //blind detect SDK_BLINDDETECTCONFIG_ALL //loss detect SDK_VIDEOLOSSCONFIG_ALL //alarm in SDK_ALARM_INPUTCONFIG_ALL //alarm out //disk management //out mode
E_SDK_CONFIG_AUTO, //auto maintain SDK_AutoMaintainConfig E_SDK_CONFIG_DEFAULT, //set default E_SDK_CONFIG_DISK_INFO, //disk info SDK_StorageDeviceInformationAll E_SDK_CONFIG_LOG_INFO, //get log SDK_LogList E_SDK_CONFIG_NET_IPFILTER, //network servicesblack/white list
SDK_NetIPFilterConfig
E_SDK_CONFIG_NET_DHCP, E_SDK_CONFIG_NET_DDNS,
SDK_NetDDNSConfigALL
E_SDK_CONFIG_NET_EMAIL,
SDK_NetEmailConfig
E_SDK_CONFIG_NET_NTP, E_SDK_CONFIG_NET_PPPOE,
SDK_NetPPPoEConfig
//network services NTP SDK_NetNTPConfig //network services: PPPOE //network services: DNS
SDK_FtpServerConfig
E_SDK_CONFIG_NET_DNS,
SDK_NetDNSConfig
E_SDK_CONFIG_CLEAR_LOG, E_SDK_REBOOT_DEV,
E_SDK_CONFIG_ABILITY_LANG, E_SDK_CONFIG_VIDEO_FORMAT, E_SDK_CONFIG_COMBINEENCODE, E_SDK_CONFIG_EXPORT, E_SDK_CONFIG_IMPORT, E_SDK_LOG_EXPORT, E_SDK_WORK_STATE,
E_SDK_CONFIG_COMBINEENCODEMODE,
}SDK_CONFIG_TYPE;
/// type of DDNS support struct SDK_DDNSServiceFunction { int nTypeNum; char vDDNSType[NET_MAX_DDNS_TYPE][64]; }; /// blind detect support struct SDK_BlindDetectFunction { int iBlindCoverNum; ///< the number of cover area support
}; /// motion detect struct SDK_MotionDetectFunction { int iGridRow; ///< the number of row int iGridColumn; ///< the number of colum }; /// protocols of 232 support struct SDK_COMMFUNC { int nProNum; }; /// protocols of PTZ struct SDK_PTZPROTOCOLFUNC { int nProNum; char vPTZProtocol[100][NET_MAX_PTZ_PROTOCOL_LENGTH]; }; /// encode information struct SDK_EncodeInfo { bool bEnable; int iStreamType; bool bHaveAudio; ///< enable ///< stream type see refer to capture_channel_t ///< is support audio ///< mask of capture_comp_t ///< mask of capture_size_t ///< the numbers of protocol char vCommProtocol[SDK_COM_TYPES][32]; ///< the name of protocol
unsigned int uiCompression; unsigned int uiResolution; }; /// encode power struct CONFIG_EncodeAbility { int iMaxEncodePower;
bool vEncodeFunction[SDK_ENCODE_FUNCTION_TYPE_NR]; ///< Encode Functions bool vAlarmFunction[SDK_ALARM_FUNCTION_TYPE_NR]; ///< Alarm Fucntions bool vNetServerFunction[SDK_NET_SERVER_TYPES_NR];///< Net Server Functions
bool vPreviewFunction[SDK_PREVIEW_TYPES_NR]; }; ///< Auto-Maintain setting struct SDK_AutoMaintainConfig { int iAutoRebootDay; int iAutoRebootHour; int iAutoDeleteFilesDays; }; //Disk info struct SDK_STORAGEDISK { int int }; struct SDK_StorageDeviceInformationAll { int iDiskNumber; iPhysicalNo; iPartNumber; // Physical No. // Partition numbers
///< interval of Auto-Reboot days ///< time to reboot [0, 23] ///< interval of Auto-Del record file [0, 30]
SDK_DriverInformation diPartitions[SDK_MAX_DRIVER_PER_DISK];
SDK_STORAGEDISK vStorageDeviceInfoAll[SDK_MAX_DISK_PER_MACHINE]; }; // Type of PTZ link enum PtzLinkTypes { PTZ_LINK_NONE, PTZ_LINK_PRESET, PTZ_LINK_TOUR, PTZ_LINK_PATTERN }; // PTZ Link Config struct SDK_PtzLinkConfig { int iType; int iValue; }; // handler of event struct SDK_EventHandler { unsigned int dwRecord; // bitmask of record. Bit per channel // see refer to PtzLinkTypes // value of link type // NONE // GOTO PRESET // TOUR // PATTERN
unsigned int unsigned int unsigned int unsigned int unsigned int int int
// record latch10300 sec. // bitmask of tour. Bit per channel // bitmask of snapshot. Bit per channel // bitmask of alarm out. Bit per channel // bitmask of matrix. Bit per channel // interval of event(unit:sec.) // Alarm out latch10300 sec // PTZ link activation // weeksheet of record
iEventLatch; iAOLatch;
SDK_PtzLinkConfig PtzLink[NET_MAX_CHANNUM]; SDK_CONFIG_WORKSHEET schedule; bool bool bool bool bool bool bool bool bool bool bool bool bool bool }; ///< Blind detect struct SDK_BLINDDETECTCONFIG { bool bEnable; int }; /// All channel of blind detect configuration struct SDK_BLINDDETECTCONFIG_ALL { iLevel; ///< enable ///< sensitivity16 bRecordEn; bTourEn; bSnapEn; bAlarmOutEn; bPtzEn; bTip; bMail; bMessage; bBeep; bVoice; bFTP; bMatrixEn; bLog; bMessagetoNet; // enable flag of record // enable flag of tour
// enable flag of snapshot // enable flag of alarm out // enable flag of PTZ link // enable flag of screen tip // enable flag of sending email // enable flag of sending message to alarm center // enable flag of buzzer beep // enable flag of voice tip // enable flag of FTP unload // no used // enable flag of log // no used
SDK_BLINDDETECTCONFIG vBlindDetectAll[NET_MAX_CHANNUM]; }; ///< Alarm in struct SDK_ALARM_INPUTCONFIG { bool bEnable; ///< enable
int };
iSensorType;
SDK_EventHandler hEvent; ///< handler of alarm in ///< All channel of alarm in configuration struct SDK_ALARM_INPUTCONFIG_ALL { SDK_ALARM_INPUTCONFIG vAlarmConfigAll[NET_MAX_CHANNUM]; }; ///< Motion detect struct SDK_MOTIONCONFIG { bool bEnable; int iLevel; column, Max region: 18*22 SDK_EventHandler hEvent; }; /// All channel of video motion configuration struct SDK_MOTIONCONFIG_ALL { SDK_MOTIONCONFIG vMotionDetectAll[NET_MAX_CHANNUM]; }; ///< video loss detect struct SDK_VIDEOLOSSCONFIG { bool bEnable; }; /// All channel of video loss configuration struct SDK_VIDEOLOSSCONFIG_ALL { SDK_VIDEOLOSSCONFIG vGenericEventConfig[NET_MAX_CHANNUM]; }; /// record mode type enum SDK_RecordModeTypes { SDK_RECORD_MODE_CLOSED, SDK_RECORD_MODE_MANUAL, SDK_RECORD_MODE_CONFIG, ///< Closed ///< Manual: record all the time ///< Configuration: according to SDK_RECORDCONFIG ///< enable SDK_EventHandler hEvent; ///< event handler //< handler of motion detect //< enable //< sensitivity[1,6] //< regions of motion detectone bit per
SDK_RECORD_MODE_NR, }; ///< record setting struct SDK_RECORDCONFIG { int iPreRecord; bool bRedundancy; bool bSnapShot; int iPacketLength; int iRecordMode; ///< pre-record timeUnit:sec. ///< redundancy record ///< no used ///< record lengthunit:minute[1, 255] ///< record moderefer to SDK_RecordModeTypes ///< worksheet ///< mask of record type,
SDK_CONFIG_WORKSHEET wcWorkSheet; corresponding to worksheet }; // All channel of record configuration struct SDK_RECORDCONFIG_ALL {
SDK_RECORDCONFIG vRecordConfigAll[NET_MAX_CHANNUM]; }; // General Configuration typedef struct _SDK_CONFIG_NORMAL { NEW_NET_TIME sysTime; int iLocalNo; int iOverWrite; int iSnapInterval; char sMachineName[64]; int iVideoStartOutPut; int iAutoLogout; int iVideoFormat; int iLanguage; int iDateFormat; int iDateSeparator; int iTimeFormat; int iDSTRule; int iWorkDay; DSTPoint dDSTStart; DSTPoint dDSTEnd; }SDK_CONFIG_NORMAL; ///< system time ///< device No.:[0, 998] ///< when disk full, 0: OverWrite, 1: StopRecord ///< no used ///< device name ///< no used ///< auto logout [0, 120], 0 means never ///< video format: 0:PAL, 1:NTSC, 2:SECAM ///< language: 0:English, 1: SimpChinese, 2:TradChinese, 3: Italian, ///< date format: 0:YYMMDD, 1:MMDDYY, 2:DDMMYY ///< Date separator: 0: ., 1: -, 2: / ///< Time format: 0: 12, 1: 24 ///< DST rule: 0: OFF, 1: ON ///< work day
// encode configuration struct SDK_CONFIG_ENCODE { SDK_MEDIA_FORMAT dstMainFmt[SDK_ENCODE_TYPE_NUM]; SDK_MEDIA_FORMAT dstExtraFmt[SDK_EXTRATYPES]; SDK_MEDIA_FORMAT dstSnapFmt[SDK_ENCODE_TYPE_NUM]; }; // all of channel encode configuration struct SDK_EncodeConfigAll { SDK_CONFIG_ENCODE vEncodeConfigAll[NET_MAX_CHANNUM]; }; // combine-encode struct SDK_CombineEncodeConfigAll { SDK_CONFIG_ENCODE vEncodeConfigAll[NET_MAX_COMBINE_NUM]; }; // newwork configuration struct SDK_CONFIG_NET_COMMON { char HostName[NET_NAME_PASSWORD_LEN]; ///< hostname CONFIG_IPAddress HostIP; CONFIG_IPAddress Submask; CONFIG_IPAddress Gateway; int HttpPort; int TCPPort; int SSLPort; int UDPPort; int MaxConn; int MonMode; support TCP now int MaxBps; int TransferPlan; bool bUseHSDownLoad; }; ///< no used ///< Translation policy: 0: AUTO 1: Quality first 2: fluency first ///< flag of high speed download ///< IP ///< Netmask ///< NetGateway ///< HTTP port ///< TCP port ///< no used ///< no used ///< max connect ///< translation protocol: 0:TCP, 1: UDP, 2: MCAST, only // main stream // Extra stream // Snapshot
{ char sProtocolName[NET_MAX_PTZ_PROTOCOL_LENGTH]; int int ideviceNo; iNumberInMatrixs; //< device No. //< No. in Matrixs //< Port No.[1, 4] //< comm attribute //< Protocol name
int iPortNo; };
SDK_STR_CONFIG_PTZ ptzAll[NET_MAX_CHANNUM]; }; // 232 configuration struct SDK_CONFIG_COMM_X { char iProtocolName[32]; int iPortNo; }; // all channel of 232 configuration struct SDK_CommConfigAll { SDK_CONFIG_COMM_X vCommConfig[SDK_COM_TYPES]; }; // Protocol name:Console // comm attribute // Port No.
SDK_COMMATTRI aCommAttri;
///< IP Fliter struct SDK_NetIPFilterConfig { bool Enable; ///< enable ///< black list ///< white list CONFIG_IPAddress BannedList[NET_MAX_FILTERIP_NUM]; CONFIG_IPAddress TrustList[NET_MAX_FILTERIP_NUM]; };
///< multicast struct SDK_NetMultiCastConfig { bool Enable; }; ///< enable ///< multicast server SDK_RemoteServerConfig Server;
///< pppoe struct SDK_NetPPPoEConfig { bool Enable; ///< enable SDK_RemoteServerConfig Server; CONFIG_IPAddress addr; }; ///< DDNS struct SDK_NetDDNSConfig { bool Enable; ///< enable char DDNSKey[NET_NAME_PASSWORD_LEN]; ///< the type of DDNS name char HostName[NET_NAME_PASSWORD_LEN]; ///< hostname SDK_RemoteServerConfig Server; }; ///< DDNS struct SDK_NetDDNSConfigALL { SDK_NetDDNSConfig ddnsConfig[5]; }; ///< FTP struct SDK_FtpServerConfig { ///< enable bool Enable; ///< FTP server SDK_RemoteServerConfig Server; ///< spare server IP CONFIG_IPAddress SpareIP; ///< path name in FTP server char RemotePathName[NET_MAX_PATH_LENGTH]; ///< max file lenght int FileMaxLen; ///< upload periods SDK_TIMESECTION UpLoadPeriod[NET_N_MIN_TSECT]; }; ///< DDNS server ///< PPPOE server ///< ip get from PPPOE dial
///< enable bool Enable; ///< NTP server SDK_RemoteServerConfig Server; ///< update period int UpdatePeriod; ///< time zone int TimeZone; }; #define NET_MAX_EMAIL_TITLE_LEN 64 #define NET_MAX_EMAIL_RECIEVERS 5 #define NET_EMAIL_ADDR_LEN 32 ///< EMAIL struct SDK_NetEmailConfig { ///< enalbe bool Enable; ///< smtp server SDK_RemoteServerConfig Server; ///< is need SSL ? bool bUseSSL; ///< sender address char SendAddr[NET_EMAIL_ADDR_LEN]; ///< receiver char Recievers[NET_MAX_EMAIL_RECIEVERS][NET_EMAIL_ADDR_LEN]; ///< email title char Title[NET_MAX_EMAIL_TITLE_LEN]; ///< time section SDK_TIMESECTION Schedule[NET_N_MIN_TSECT]; };
{ int iBitRate; int iSampleBit; }; /// alarm status struct SDK_DVR_ALARMSTATE { int iVideoMotion; ///< motion detect status, bit mask for channel,bit0 means channel 1,and so on,1: alarming 0: normal int iVideoBlind; ///< blind detect status, bit mask for channel,bit0 means channel 1,and so on,1: alarming 0: normal int iVideoLoss; ///< loss detect status, bit mask for channel,bit0 means channel 1,and so on,1: alarming 0: normal int iAlarmIn; ///< alarm in status, bit mask for channel,bit0 means channel 1,and so on,1: alarming 0: normal int iAlarmOut;///< alarm out status, bit mask for channel,bit0 means channel 1,and so on,1: alarming 0: normal }; // channel status struct SDK_DVR_CHANNELSTATE { bool bRecord; ///< is recording int iBitrate; }; // device work status struct SDK_DVR_WORKSTATE { SDK_DVR_CHANNELSTATE vChnState[NET_MAX_CHANNUM]; SDK_DVR_ALARMSTATE vAlarmState; }; ///< bitrate ///< bitrate(unit:kbps) ///< sample bit int iSampleRate; ///< sample rate(unit:Hz) int iEncodeType; ///< type of encodesee refer to AudioEncodeTypes
2.1.5
/// KEY VALUE enum SDK_NetKeyBoardValue { SDK_NET_KEY_0, SDK_NET_KEY_1, SDK_NET_KEY_2, SDK_NET_KEY_3, SDK_NET_KEY_4,
SDK_NET_KEY_5, SDK_NET_KEY_6, SDK_NET_KEY_7, SDK_NET_KEY_8, SDK_NET_KEY_9, SDK_NET_KEY_10, SDK_NET_KEY_11, SDK_NET_KEY_12, SDK_NET_KEY_13, SDK_NET_KEY_14, SDK_NET_KEY_15, SDK_NET_KEY_16, SDK_NET_KEY_10PLUS, SDK_NET_KEY_UP = 20, SDK_NET_KEY_DOWN, SDK_NET_KEY_LEFT, SDK_NET_KEY_RIGHT, SDK_NET_KEY_SHIFT, SDK_NET_KEY_PGUP, SDK_NET_KEY_PGDN, SDK_NET_KEY_RET, SDK_NET_KEY_ESC, SDK_NET_KEY_FUNC, SDK_NET_KEY_PLAY, SDK_NET_KEY_BACK, SDK_NET_KEY_STOP, SDK_NET_KEY_FAST, SDK_NET_KEY_SLOW, SDK_NET_KEY_NEXT, SDK_NET_KEY_PREV, SDK_NET_KEY_REC = 40, SDK_NET_KEY_SEARCH, SDK_NET_KEY_INFO, SDK_NET_KEY_ALARM, SDK_NET_KEY_ADDR, SDK_NET_KEY_BACKUP, SDK_NET_KEY_SPLIT, SDK_NET_KEY_SPLIT1, SDK_NET_KEY_SPLIT4, SDK_NET_KEY_SPLIT8, SDK_NET_KEY_SPLIT9, SDK_NET_KEY_SPLIT16, SDK_NET_KEY_SHUT, SDK_NET_KEY_MENU, SDK_NET_KEY_PTZ = 60, SDK_NET_KEY_TELE, SDK_NET_KEY_WIDE, // PAGE UP // PAGE DOWN // ENTER // ESC // FUNC // PLAY/PAUSE // BACK // STOP // FAST // SLOW // NEXT FILE // PREV FILE // ENTER RECORD SETTING PAGE // ENTER RECORD SEARCH PAGE // ENTER SYSTEM INFO PAGE // ENTER ALARM OUT PAGE // ENTER REMOTE ADDRESS SETTING PAGE // ENTER BACKUP PAGE // NEXT SPLIT MODE // SLPIT MODE 1 // SLPIT MODE 4 // SLPIT MODE 8 // SLPIT MODE 9 // SLPIT MODE 16 // SHUTDOWN // MENU // ENTER PTZ CONTROL PAGE // ZOOM // ZOOM + // UP // DOWN // LEFT // RIGHT
SDK_NET_KEY_IRIS_SMALL, // APERTURE SDK_NET_KEY_IRIS_LARGE, // APERTURE + SDK_NET_KEY_FOCUS_NEAR, // FOCUS SDK_NET_KEY_FOCUS_FAR, // FOCUS + SDK_NET_KEY_BRUSH, SDK_NET_KEY_LIGHT, // BRUSH // LIGHT
SDK_NET_KEY_SPRESET, SDK_NET_KEY_GPRESET, SDK_NET_KEY_DPRESET, SDK_NET_KEY_PATTERN, SDK_NET_KEY_AUTOSCAN, SDK_NET_KEY_AUTOTOUR, SDK_NET_KEY_AUTOPAN, }; /// keyboard status enum SDK_NetKeyBoardState {
// SET PRESET POINT // GOTO PRESET POINT // CLEAR PRESET POINT // PATTERN // AUTO-SCAN ON/OFF // AUTO-TOUR ON/OFF // AUTO-PAN ON/OFF
3 API Definition
3.1 SDK Initialization
1.
H264_DVR_API long H264_DVR_GetLastError();;
API description: It is to return function failure code. when you failed to call the following Reference API
interface, you can call this fucntion to get error code. Parameter: none Return: Please see refer to error code
typedef void (__stdcall *fDisConnect)(long lLoginID, char *pchDVRIP, long nDVRPort, unsigned long dwUser); long H264_DVR_Init(fDisConnect cbDisConnect, 2. H264_DVR_API unsigned long dwUser);
API descriptionInitialize SDK, calling before all SDK function Parameter cbDisConnect
Disconnect callback function. It is to callback disconnect device excluding device logout successfully(call H264_DVR_Logout(), set it as 0 when forbid callbacking.
pchDVRIP
Device IP
nDVRPort
Port
dwUser
User data, just the same with the above user data you have input.
API description Clean up SDK and release occupied resource, calling after all SDK
function.
API description Set device message callback fuction to get device current state. Callback
order does not matter here. SDK default setting is not to callback.You need to call alarm message subscription interface H264_DVR_SetupAlarmChan().It applies to current defined alarm status.Device state is callbacked every second. Parameter cbAlarmcallback Message callback function.It is to callback device status (such as alarm status). When it is 0, system disables callback. [in] lUser user self-defined data
Callback function parameters: lLoginID Return value of H264_DVR_Login pBuf Refer to see SDK_AlarmInfo dwBufLen pBuf length. Unit is byte. dwUser User self-defined data ReturnSucceeded: TRUE, Fail: FALSE Reference APIH264_DVR_SetupAlarmChanH264_DVR_CloseAlarmChan H264_DVR_API long H264_DVR_SetupAlarmChan(long lLoginID);
4.
Parameter
[in]lLoginID Return value of H264_DVR_Login
5.
SDK
Parameter
[in] sDVRIP device IP [in] wDVRPort device port [in] sUserName user name [in] sPassword password [out] lpDeviceInfo device property. it is a output parameter. [out] error (when the function returned successfully, the parameter is null.Please refer to error code. Return Return o if failed. Return device ID if succeeded. Using this value(device handle)all operations after successfuly log in can corresponding to the device. Reference APIH264_DVR_Logout
7.
H264_DVR_API long H264_DVR_LoginEx(char *sDVRIP, unsigned short wDVRPort, char *sUserName, char *sPassword, LPH264_DVR_DEVICEINFO lpDeviceInfo, int nType, int *error);
Parameter [in] sDVRIP device IP [in] wDVRPort device port [in] sUserName user name [in] sPassword password
34
SDK
[out] lpDeviceInfo device property. it is a output parameter. [in] nType the type as follows: enum LoginType { LOGIN_TYPE_GUI, ///< Local GUI LOGIN_TYPE_CONSOLE, ///< Console LOGIN_TYPE_WEB, ///< WEB LOGIN_TYPE_SNS, ///< SNS LOGIN_TYPE_MOBIL, ///< Mobile terminal LOGIN_TYPE_NETKEYBOARD, ///< Netkeyboard LOGIN_TYPE_SERVER, ///< Center servers LOGIN_TYPE_AUTOSEARCH, ///< IP search tool LOGIN_TYPE_UPGRADE, ///< Upgrade tool LOGIN_TYPE_MEGAEYE, ///< Megaeye LOGIN_TYPE_NR, }; [out] error (when the function returned successfully, the parameter is null.Please refer to error code.
35
SDK
Reference APIH264_DVR_StopRealPlayH264_DVR_SetRealDataCallBack 10. H264_DVR_API bool H264_DVR_StopRealPlay(long lRealHandle); API descriptionStop real-time monitor Parameter
[in]lRealHandle Return value of H264_DVR_RealPlay ReturnSucceeded: TRUE, Fail: FALSE Reference APIH264_DVR_RealPlay
11. H264_DVR_API
typedef int(__stdcall *fRealDataCallBack) (long lRealHandle, long dwDataType, unsigned char *pBuffer,long lbufsize,long dwUser); API description Set real-time monitor data callback and provides you with data from the device .When cbRealData is NULL, callback ends.
Parameter
[in]lRealHandle Return value of H264_DVR_RealPlay cbRealData It is a callback function to output the current real-time data from the device. [in]dwUser User data
Callback function parameters: lRealHandle Return value of H264_DVR_RealPlay dwDataType 0: original data 1: Frame data 2: yuv data 3: pcm audio data pBuffer call-back data. Everytime calling back data of different
36
SDK
lengths according to the different data types (except type 0). Other data types are based on frames, every time it calls back one frame. dwBufSize length of callback data.(Unit:byte). dwUser User self-defined ReturnSucceeded: TRUE, Fail: FALSE Reference APIH264_DVR_RealPlayH264_DVR_StopRealPlay
37
SDK
13. H264_DVR_API
long H264_DVR_PlayBackByName(long lLoginID, H264_DVR_FILE_DATA *sPlayBackFile, fDownLoadPosCallBack cbDownLoadPos, fRealDataCallBack fDownLoadDataCallBack, long dwDataUser);
API description Network playback. Please note, when you login one
device, one channel can only play one record at one time, while multi-records of the same channel cant be opened simutaniously.
Parameter
[in]lLoginID Return value of H264_DVR_Login [in] sPlayBackFile Recorded file information return by H264_DVR_FindFile [in] cbDownLoadPos Progress call-back function [in] fDownLoadDataCallBack Video data call-back function [in]dwUserData User self-defined data
CallBack function
lPlayHandle Return value of H264_DVR_PlayBackByName dwTotalSize Current total play size, unit is KB. dwDownLoadSize Played size unit is KB. When value is -1, it means cureent playback is over. dwUser User data, just the same with user data in the above. Return Return network playbackID if succeeded, return 0 if failed.
Reference API
H264_DVR_Login,H264_DVR_FindFile,H264_DVR_StopPlayBack, H264_DVR_PlayBackControl
38
SDK
15. H264_DVR_API
long H264_DVR_GetFileByName(long lLoginID,H264_DVR_FILE_DATA *sPlayBackFile,char *sSavedFileName, fDownLoadPosCallBack cbDownLoadPos = NULL, long dwDataUser = NULL ); recorded files via the searched
Parameter
[in]lLoginID The return value of H264_DVR_Login [in] sPlayBackFile Recorded file information pointer. [in]sSavedFileName The name of file to save(full path). [in]cbDownLoadPos Download process calls user self-defined data.For download process callback fucntion, please refer to H264_DVR_GetDownloadPos [in]dwUserData Download process calls user self-defined data.
CallBack function
lPlayHandle Return value of H264_DVR_PlayBackByName dwTotalSize Current total play size, unit is KB. dwDownLoadSize Played size unit is KB. When value is -1, it means cureent playback is over. dwUser User data, just the same with user data in the above. ReturnReturn download ID if succeeded. Return 0 if failed. Reference APIH264_DVR_StopGetFileH264_DVR_GetDownloadPos
16. H264_DVR_API bool H264_DVR_StopGetFile(long lFileHandle); API descriptionStop downloading files. Parameter
[in]lFileHandle The return value of H264_DVR_GetFileByName
39
SDK
ReturnSucceeded: TRUE, Fail: FALSE Reference APIH264_DVR_GetFileByNameH264_DVR_GetDownloadPos 17. H264_DVR_API int H264_DVR_GetDownloadPos(long lFileHandle); API description It is to get current downloading place for
interfaces that do not need to show real-time download progress. It is similar to the download callback function.
Parameter
[in]lFileHandle The return value of H264_DVR_GetFileByName Returnposition(value between 0 to 100) Reference APIH264_DVR_GetFileByNameH264_DVR_StopGetFile
TZ Control
19. H264_DVR_API
bool H264_DVR_PTZControl(long lLoginID,int nChannelNo, long lPTZCommand, bool bStop = false, long lSpeed = 4)
40
SDK
[in] nChannelNo Channel NO. start with 0 [out] lPTZCommand Commands, see refer to PTZ_ControlType [in] bStop Whether stop or not. It applies to PTZ direction andlens operation. When you operate other functions, input this parameter as FALSE. [out] lSpeed Step/Speed. The value ranges from 1 to 8. 8 has the highest control capability(4 by default). dwStep is the preset value when you use preset function.
41
SDK
Reference APIH264_DVR_GetDevConfig
og Management
22. H264_DVR_API
bool H264_DVR_FindDVRLog(long SDK_LogSearchCondition *pFindParam, SDK_LogList long lBufSize, int waittime = 2000); lLoginID, *pRetBuffer,
42
SDK
The return of log information, Please refer to SDK_LogList [in] lBufSize The return length of log information [in] waittime Waiting time ReturnSucceeded: TRUE, Fail: FALSE
Reference APINone
3.11 Upgrade
typedef void(__stdcall *fUpgradeCallBack) (long lLoginID, long lUpgradechannel, int nTotalSize, int nSendSize, long dwUser); H264_DVR_API long H264_DVR_Upgrade(long lLoginID, char *sFileName, int nType = 0, fUpgradeCallBack cbUpgrade = NULL, long dwUser = 0);
24.
43
SDK
CallBack function
fUpgradeCallBack Callback of upgrade progress, lUpgradechannel is the upgrade handle, return by H264_DVR_Upgrade nTotalSize Upgrade file lenght,(Unit: BYTE) nSendSize data length have been upgraded,(unit: BYTE) [in]dwUser User self-define data
ReturnSucceeded: return upgrade handle, Fail: FALSE Reference API:H264_DVR_GetUpgradeState,H264_DVR_CloseUpgradeHandle 25. H264_DVR_API
lUpgradeHandle); long H264_DVR_CloseUpgradeHandle(long
26. H264_DVR_API int H264_DVR_GetUpgradeState(long lUpgradeHandle) API descriptionget upgrade status Parameter
[in] lUpgradeHandle The return value of H264_DVR_Upgrade Return1: Succeeded 2: Upgrading, 3: FALSE
44
SDK
Parameter
[in] szBuf Buffer to receive structure SDK_CONFIG_NET_COMMON, return the a structure as long as it search a device. [in] nBufLen szBuf buffer length [in] pRetLen Return the structure total length of SDK_CONFIG_NET_COMMON [in] nSearchTime Waiting time
28.
45
SDK
29.
30.
31.
pTalkMode);
46
SDK
1- [in]
pTalkMode
the return value of H264_DVR_Login [in] nChannelNo Channel No., -1 all of channel [in] lRecordType
Record mode, see refer to SDK_RecordModeTypes
47
SDK
0- [in]
pWorkState
SDK
0- [in]
pKeyBoardData
49