#ifndef DPSDK_DPSDKDEFINE_H
#define DPSDK_DPSDKDEFINE_H

typedef int					DPSDK_INT32;
typedef unsigned int		DPSDK_UINT32;
typedef long long			DPSDK_INT64;
typedef unsigned long long	DPSDK_UINT64;
typedef void*				DPSDK_LPVOID;
typedef long				DPSDK_LONG;
typedef unsigned long		DPSDK_ULONG;
typedef bool				DPSDK_BOOL;

typedef char				DPSDK_CHAR;
typedef unsigned char		DPSDK_UCHAR;
typedef float				DPSDK_FLOAT;
typedef double				DPSDK_DOUBLE;
typedef void				DPSDK_VOID;
typedef short				DPSDK_SHORT;
typedef unsigned short		DPSDK_USHORT;
typedef long long			DPSDK_TIMET;

#ifdef _WIN32

#ifdef DPSDK_EXPORTS
#define DPSDK_EXPORT extern "C" __declspec(dllexport)
#else
#define DPSDK_EXPORT extern "C" __declspec(dllimport)
#endif

#define DPSDK_CALL				__stdcall

#ifndef _WIN32_WINNT		// Allow to use functions of Windows XP or higher version
#define _WIN32_WINNT 0x0501	// Change this value to corresponding value, to apply to other Windows versions
#endif	

#else

#include <string.h>
#include <stddef.h>
#include <stdint.h>

#define DPSDK_EXPORT extern "C" __attribute__((visibility("default")))
#define DPSDK_CALLTYPE
#define DPSDK_CALL	
#endif

#ifdef _WIN32
#include "Winsock2.h"
#include <windows.h>
typedef HWND HCWND;
#else
typedef void* HCWND;
#endif

#ifdef _WIN32
typedef RECT DPSDK_RECT;
typedef DWORD DPSDK_DWORD;
typedef HDC DPSDK_HDC;
#else
typedef struct 
{
	DPSDK_LONG    left;
	DPSDK_LONG    top;
	DPSDK_LONG    right;
	DPSDK_LONG    bottom;
}DPSDK_RECT;

#define __stdcall
typedef unsigned int DPSDK_DWORD;
typedef void* DPSDK_HDC;

#endif

#ifndef IN
#define IN
#endif

#ifndef OUT
#define OUT
#endif

#define DPSDK_POLICENUM_LEN			128					// Police Number length
#define DPSDK_USER_ID_NUM_LEN		128					// User ID NUM length
#define DPSDK_IN512_LEN              512				// int512 length
#define DPSDK_IN128_LEN              128				// int64 length
#define DPSDK_IN64_LEN               64					// int64 length
#define DPSDK_IN32_LEN               32					// int32 length
#define DPSDK_NAME_LEN              256					// Username length
#define DPSDK_NAME_LEN_EX			256					// Organization,device,channel name length
#define DPSDK_NAME_LEN_MAX			512					// Max length of person name
#define DPSDK_PWD_LEN               128					// Password length
#define DPSDK_MAX_RIGHT_NUM			256 
#define DPSDK_LOG_DETAIL_LEN     	4000				// Length of external log detail
#define DPSDK_IP_LEN                64					// IP length
#define DPSDK_MACADDRESS_LEN        128					// MAC address length
#define DPSDK_ROLE_ID_LEN			128					// Role Id length
#define DPSDK_CODE_LEN				128					// Menu Code length
#define DPSDK_IMEI_LEN              128					// Length of the mobile phone IMEI identification code
#define DPSDK_VIDEO_PARAM_LEN		20					// Length of video parameter
#define DPSDK_URL_LEN				256*5				// URL Length
#define DPSDK_IMG_CATEGORY					64
#define DPSDK_URL_LENGTH_EX			256*2				// URL Length
#define DPSDK_URL_EDU_URL_LEN		1284				// EDU URL Length(256 * 5 + 4)
#define DPSDK_FTP_MODIFY_URL_LEN	256*2				// URL Length (the notify of FTP configuration modify)
#define DPSDK_LOGO_LENGTH			1024*16				// LOGO Length
#define DPSDK_FILE_PATH_LEN			1024				// Length of file path
#define DPSDK_MAX_ADD_DEVICE_NUM		100				// Max number of device single add
#define DPSDK_RECORD_DOMAINCODE_LEN				32		// Length of record domaincode
#define MAINSUB_CLASS_LEN			16					// Length of Algorithm scheme type
#define DPSDK_RECORD_NUM_MAX                    6000
#define DPSDK_VERIFYCODE_IMAGEDATA_LEN			4*1024	// Verification code image data length
#define DPSDK_FACE_PIC_IMAGE_LEN				40960
#define DPSDK_ROOMNUM_LEN						30		// Length of room number
#define DPSDK_ELEVATOR_FLOOR_NUM_MAX			1024	// Max floor number of elevator

#define DPSDK_ALARM_TIME_LEN_LOING				50		// Alarm long time length
#define DPSDK_ALARM_HANDLEMESSAGE_LEN			4001	// Length of alarm handle message(4000+1)
#define DPSDK_ALARM_RECORD_PICTURE_URL_LEN		256*17  // Address length of the alarm picture(Url*(16+1))
#define DPSDK_ALARM_EMAILRECEIVER_LEN			320		// Length of the notification email for alarm handling

#define DPSDK_PRESETTRAILS_CODE_LEN				50		// Preset trails code number
#define DPSDK_PRESETTRAILS_NAME_LEN				128		// Preset trails name

#define DPSDK_NODE_ID_LEN						96		// Node ID length
#define DPSDK_LOGINTYPE_LEN						10		//login type length
#define DPSDK_ALARM_UTC_TIME_LEN				17		// Specify UTC time Format length	eg: 20180101T235959Z
#define DPSDK_ALARM_TIME_STRING					30		// timeStr length  eg: 2017-09-01 12:33:33
#define DPSDK_JSON_BUFFER_LEN					1024
#define DPSDK_CLIENTTITLE_LEN					256		// client TitleName length

#define DPSDK_MAX_USER_NUM					 100	// Max number of user
#define DPSDK_ORG_CODE_LEN						128		// Organization code length
#define DPSDK_ORG_SN_LEN						128		// Organization SN code length
#define DPSDK_DEVICE_ID_LEN						56		// Device ID length
#define DPSDK_SN_LEN							56		// SN length
#define DPSDK_PROV_CODE_LEN						56		// Province std Code length
#define DPSDK_CHANNEL_ID_LEN					64		// Channel ID length
#define DPSDK_CHANNEL_LIST_LEN					32		// Channel List length
#define DPSDK_PIC_LIST_LEN						1024	// Pic List length
#define DPSDK_GPS_LEN							50		// GPS length
#define DPSDK_TYPE_LEN							20		// Type length
#define DPSDK_STATUS_LEN						24		// Status length
#define DPSDK_DEVICE_NAME_LEN					256		// Device name length
#define DPSDK_CHANNEL_NAME_LEN					256		// Channel name length
#define DPSDK_ORG_NAME_LEN						256		// Length of organization name
#define DPSDK_ORG_REMARK_LEN					256		// Length of organization remark
#define DPSDK_SERVER_CODE_LEN					64		// Service code
#define DPSDK_COLOR_LEN							16		// Length of color
#define DPSDK_CAMERA_FUNCTION_LEN				64
#define DPSDK_MAC_ADDRESS_LEN					64		// MAC address length
#define DPSDK_DEVICE_MODEL_LEN					64		// Device Model length
#define DPSDK_SOFTWARE_VERSION_LEN				128		// Device Software version length
#define DPSDK_DATEFLOW_LEN                      10000    //数据满溢长度
#define DPSDK_DELETE_REASON						1024	//Length of reason
#define DPSDK_SEQUENCE_LEN						32		// Sequence Len
#define DPSDK_DEVICE_MODEL_STR					32      // Device Model STR
#define DPSDK_FILTER_CODE_LEN					32

#define DPSDK_PTZ_EXTEND_LEN					256		// (Temporary)
#define DPSDK_PTZ_TIME_LEN						15		// Length of time
#define DPSDK_PRESETPOINT_CODE_LEN				50		// Preset point code number
#define DPSDK_PRESETPOINT_NAME_LEN				128		// Preset point name
#define DPSDK_DEVICE_CODE_LEN					56		// Device code length
#define DPSDK_USER_LEVEL_LEN					20		// User level

#define DPSDK_BITMAP_FILE_HEADER_LEN			14		// File header length of bmp picture
#define DPSDK_BITMAP_INFO_HEADER_LEN			40		// Information header length of bmp picture
#define DPSDK_TVWALL_NAME_LEN					50		// TV Wall name
#define DPSDK_TVWALL_OWNERCODE_LEN				90		// TV Wall owner code
#define DPSDK_TVWALL_SPLIT_CAP_LEN				128		// Length of Open Windows or ScreenCaps

#define DPSDK_LINKED_CHANNEL_SIZE 				16		//Max number of video linked channels

#define DPSDK_BIRTHDAY_LEN						20		// Birthday length
#define DPSDK_TIME_LEN							15		// Time length of timestamp
#define	DPSDK_TIME_ZONE_LEN						64		// Time zone length
#define DPSDK_PERSON_ID_LEN						50		// Person ID
#define DPSDK_CERTIFICATE_NUMBER_LEN			64		// Certificate number
#define DPSDK_CERTIFICATE_NUMBER_LEN_EX			64*3	// Certificate number
#define DPSDK_PERSONTYPE_NAME_LEN				256		// Length of person type
#define DPSDK_USERDEFINEDATA_FILENAME_LEN		256		// Length of filename for user defined data
#define DPSDK_EMAIL_CONTENT_LEN					3001	// Length of email content

#define MAINSALVE_CLASS_LEN						16		// Length of Algorithm scheme type
#define DPSDK_VISITOR_FLOOR_IDS_LEN				512
#define DPSDK_PLATE_NUMBER_LEN					128		// Length of car plate number
#define DPSDK_PLATE_NUMBER_LEN_EX				512		// Length of car plate number
#define DPSDK_MEMURIGHT_LEN						64		// Length of right menu
#define DPSDK_FUNCRIGHT_LEN						64		// Length of right func
#define DPSDK_TOKEN_LEN							512
#define DPSDK_ID_LEN							64
#define DPSDK_ID_LEN_EX							128
#define DPSDK_USER_ID_LEN						64		// Length of User ID,role ID,group ID
#define DPSDK_MAX_GROUP_ID_NUM		512								// Max number of group id
#define DPSDK_ERROR_LEN						    100     // Length of error message 
#define DPSDK_PWD_EXPIRY_LEN					32		// Password expiry length
#define DPSDK_USER_REMARK_LEN					1024	// User remark length
#define DPSDK_USER_REMARK_LEN_EX				2048	// User remark length Ex
#define DPSDK_MEMO_LEN							256		// Length of description information
#define DPSDK_MEMO_LEN_LONG						256*3	// Length of description information
#define DPSDK_CONTENT_LEN						1024	// Length of send message 
#define DPSDK_CONFIG_PARAM_LEN					1024	// Max length of configuration parameter
#define DPSDK_KEYWORD_LEN						50		// Length of keyword
#define DPSDK_KEYWORD_LEN_EX					512		// Length of keyword Ex
#define DPSDK_PHONE_LEN							30		// Length of phone number
#define DPSDK_BIND_PHONE_LEN                    35      // Lenght of bind-phone number
#define DPSDK_TIME_STRING_LEN					20		// Length of time string 
#define DPSDK_TIME_STRING_LEN_EX				30		// Length of time string 
#define DPSDK_DB_ID_LEN							24		// Length of database ID
#define DPSDK_FACE_ID_LEN						24		// Length of face ID
#define DPSDK_SUBJECT_LEN						64		// Length of video tag's title
#define DPSDK_DAY_IN_MONTH						31		// Max days of one month
#define DPSDK_ALARM_CHANNEL_ID_LEN				64		// videos of linked alarm channel
#define DPSDK_RECORD_FILE_NAME_LEN				256		// Length of record file's name
#define DPSDK_DISDK_ID_LEN						64		// Length of disk ID
#define DPSDK_SS_ID_LEN							64		// Length of ss ID
#define DPSDK_TRACK_ID_LEN						16		// Length of track ID
#define DPSDK_AUDIOTYPELIST_ID_LEN				30		// Audio Type Set List
#define DPSDK_RECORD_TAG_SUBJECT_LEN			256		// Length of video tag's title 
#define DPSDK_RECORD_TAG_CONTENT_LEN			256		// Length of video tag's content
#define	DPSDK_KEY_WORD_LEN						64		// Length of video tag's keywords
#define DPSDK_RECORD_DOMAIN_LEN					16		// Length of record domain ID
#define DPSDK_RECORD_DOMAINCODE_LEN				32		// Length of record domaincode
#define DPSDK_LOCK_RECORD_REASON_LEN			128		// The reason of lock video
#define DPSDK_FINGER_PRINT_LEN					1200	// Length of fingerprint code
#define DPSDK_CARD_NO_LEN						64		// Length of card number
#define DPSDK_PICTURE_LEN						256		// Length of picture compression data
#define DPSDK_ALARM_CODE_LEN					128		// Length of alarm code
#define DPSDK_STORENAME_LEN						64		// Length of Store name
#define DPSDK_MAP_NAME_LEN						64		// Length of map name
#define DPSDK_MAP_ID_LEN						64		// Length of map ID
#define DPSDK_STORE_CODE_LEN					256		// Length of store code
#define DPSDK_STORE_NAME_LEN					256		// Length of Store name
#define DPSDK_STORE_ORGID_LEN					128		// Length of Store organization ID
#define DPSDK_PERSON_NO_LEN						64		// Length of person code
#define DPSDK_MESSAGE_TEXT_LEN                  512      // Length of message text
#define DPSDK_NATIONALITRY_LEN					64		// Length of nationality
#define DPSDK_TZ_APPEARPOINT_LEN				10		// Length of AppearPoint
#define DPSDK_TZ_RECORDID_LEN					64		// Length of case Record Id
#define DPSDK_TZ_CHNCODE_LEN					32		// Length of case channel Code
#define DPSDK_TZ_ADDRESS_LEN					256		// Length of case address
#define DPSDK_TZ_TIME_LEN						64		// Length of case time
#define DPSDK_TZ_CREATOR_LEN					32		// Length of case creator
#define DPSDK_TZ_DEVCODE_LEN					32		// Length of case device Code
#define DPSDK_TZ_GPS_LEN						24		// Length of case GPS
#define DPSDK_TZ_LENGTH_LEN						24		// Length of case Length
#define DPSDK_TZ_MEMO_LEN						512		// Length of case memo
#define DPSDK_TZ_DICTYPE_LEN					10		// Length of dictionary type
#define DPSDK_TZ_RESOURCECODE_LEN				64		// Length of resource code
#define DPSDK_TZ_RESOURCENAME_LEN				1024	// Length of resource name
#define DPSDK_TZ_PATH_LEN						256		// Length of path
#define DPSDK_TZ_TIMEDIFF_LEN					8		// Length of time difference
#define DPSDK_TZ_FILESIZE_LEN					18		// Length of file size
#define DPSDK_TZ_PARENTRECORDID_LEN				64		// Length of case Parent Record Id
#define DPSDK_TZ_STRING_LEN						64		// General Length of TZ
#define DPSDK_MEDIA_KEY_LEN						49
#define DPSDK_MEDIA_KEY_MAX_LEN					4901
#define DPSDK_FINGER_PRINT_NAME					64
#define DPSDK_METHOD_LEN						64		// Length of notify Method
#define DPSDK_LEN_64							64
#define DPSDK_LEN_128							128
#define DPSDK_LEN_256							256
#define DPSDK_LEN_512							512
#define DPSDK_ACCESS_TYPE_LEN					128
#define DPSDK_MAX_CHNL_TYPE_NUM					8		// Max number of synchronization channel types
#define DPSDK_SESSION_LEN						64
#define DPSDK_VERTIFYCODE_LEN					8		// Length of Vertify Code
#define DPSDK_TZ_CASECODE_LEN					64		// Length of case code
#define DPSDK_TZ_CASENAME_LEN					512		// Length of case name
#define DPSDK_TZ_CASETYPE_LEN					256		// Length of case type
#define DPSDK_TZ_CASETUNITNAME_LEN				256		// Length of case unit name

#define DPSDK_VTHCALL_NUMBER_LEN				21		// length of vth Calling LongNumber
#define DPSDK_INFRAREDFACE_CODE_LEN				20*2048	// Length of InfraredFace Code

#define DPSDK_UNLOCKMODES_LEN					256

#define DPSDK_AREA_POINT_LEN					256

#define DPSDK_LANGUAGE_LEN                      10      // Length of language 

#define DPSDK_MAX_DOOR_LOCK_ID_NUM              100     // Max. available multi-door interlocking ID

#define DPSDK_MAX_VTO_SIPID_NUM					20		// Max number of vthRelated Confirm VTO SipId

#define DPSDK_VTHCALL_NUMBER_LEN				21		// length of vth Calling LongNumber

#define DPSDK_HAS_INT_FIELD_FALSE				-1		// Integer field is not available

#define DPSDK_CONTENT_LEN_2048					2048
#define DPSDK_MAX_URL_STR_LEN					2048	// url max length
#define DPSDK_MAX_URL_HEADER_KEY_LEN			256		// max header key
#define DPSDK_MAX_URL_HEADER_VALUE_LEN			1024	// max header value
#define DPSDK_MAX_URL_CODE_LEN					32		// response code len
#define DPSDK__URL_METHOD_LEN					10		// method

#define DPSDK_PLATFORM_NAME_LEN					96		// Platform name lenght
#define DPSDK_PLATFORM_VERSION_LEN				96		// Platform version length
#define DPSDK_SECURITY_VERSION_LEN				96		// Security version length
#define DPSDK_PATCH_VERSION_LEN					128		// Patch version length
#define DPSDK_COPY_RIGHT_LEN					200		// Copyright length
#define DPSDK_LICENSE_KEY_LEN					32		// The length of license key

//Device
#define DPSDK_COMMON_SEARCH_KEY_LEN				512
#define DPSDK_COMMON_SEARCH_ORDER_TYPR_LEN		10
#define DPSDK_COMMON_SEARCH_DIRECTION_LEN		6
#define DPSDK_COMMON_SEARCH_RIGHTS_LEN			10
#define DPSDK_COMMON_SEARCH_UNIT_TYPE_LEN		16
#define DPSDK_COMMON_SEARCH_SAAS_CODE_LEN		96
#define DPSDK_COMMON_SEARCH_CUSTOM_CODE_LEN		56
#define DPSDK_COMMON_SEARCH_NODE_NAME_LEN		256
#define DPSDK_COMMON_SEARCH_FULL_PATH_LEN		256

#define DPSDK_VIDEOSHARE_ORDERBY				15		// length of orderby
#define DPSDK_VIDEOSHARE_ORDER					5		// length of order
#define DPSDK_VIDEOSHARE_ENCRYPTEDINFO			1024	// length of encryptedinfo
#define DPSDK_VIDEOSHARE_KEYINDEX				32		// length of keyindex
#define DPSDK_VIDEOSHARE_STATU					5		// length of statu

#define DPSDK_DISPLAY_RECT_LIST_NUM				6

#define DPSDK_DOMAIN_LEN						51
#define DPSDK_DN_LEN							128
#define DPSDK_PUBLIC_KEY_LEN					1024
#define DPSDK_IVS_TEXT_LEN						4096
#define DPSDK_ENUM_LEN							4		//The length of enum type
#define DPSDK_NUM_LEN							8		//The length of num
#define DPSDK_PLUGIN_TYPE_LEN					250		

#define DPSDK_RAS_PAAS_ID						33		// length of pass id
#define DPSDK_COMMON_SEARCH_KEY_LEN				512

#define DPSDK_NUMBER_LENGTH                     10
#define DPSDK_URL_LEN_EX                       1024
#define DPSDK_STREAMTYPE_LEN                   32

#define DPSDK_TOKEN_LENGTH						1024
#define DPSDK_PROTOCOL_LENGTH					10
#define DPSDK_AR_TITLE_TEXT_LEN					128
#define DPSDK_SHARE_RECORD_ID_LEN				64
#define DPSDK_SHARE_SUBSYSTEM_CODE_LEN			16
#define DPSDK_SHARE_DATA_TYPE_LEN				16
#define DPSDK_SHARE_DATA_KEY_LEN				32
#define DPSDK_SHARE_DATA_VALUE_LEN				4000
#define DPSDK_AR_POLLINGPLAN_MAX_LEN			1024
#define DPSDK_AR_MAX_LABEL_COUNT					1024
#define DPSDK_AR_MAX_LABEL_VIDEO_COUNT		16
#define DPSDK_TOKEN_LEN						 512
#define DPSDK_CHANNEL_WATER_INFO_LEN 		512
#define DPSDK_DAHUAFONT_PATH_LEN			256
#define DPSDK_OPENGLRENDER_POS_NUM			64
#define DPSDK_AR_POLLINGPLAN_MAX_LEN			1024
#define DPSDK_AR_MAX_LABEL_COUNT				1024
#define DPSDK_AR_MAX_LABEL_VIDEO_COUNT			16
#define DPSDK_IMU_RECORD_ID_LEN					128		// length of record id

#define DPSDK_SCENETREE_ID_LEN					128
#define DPSDK_SCENETREE_ICON_TYPE_LEN			1024
#define DPSDK_ALARM_TIME_LEN_LOING				50		// Alarm long time length

#define DPSDK_SCENEALARMDATE_LEN				30
#define DPSDK_SCENEALARMCRISISLEVELNAME_LEN		1024
#define DPSDK_SCENEALARMICONTYPE_LEN			1024
#define DPSDK_SCENEALARMLAYERCODE_LEN			256
#define DPSDK_SCENEALARMCOORDINATE_LEN			256
#define DPSDK_SCENEALARMSCENECODE_LEN			128
#define DPSDK_SCENEALARMSCENENAME_LEN			1024
#define DPSDK_ERROR_CODE_LEN					16		//error code length

#define DPSDK_RTSP_SDP_INFO_LEN					2048

#define DPSDK_SIP_LINK_LEN						325

#define DPSDK_NUM_LONG_LEN						16		//The length of num

#define DPSDK_KEY_LEN							64		//The length of KEY
#define DPSDK_NOTE_LEN							500		//The length of notes
#define DPSDK_QR_CODE_LEN						512		//The length of QR-code

#define DPSDK_ROOMNAME_LEN						512		//The length of room name
#define DPSDK_POLICE_OFFICE_NO_LEN				50		//The length of Police Office NO. 
#define DPSDK_PHONE_NO_LEN						20		//The length of Phone NO. 
#define DPSDK_MESSAGERICHCONTENT_LEN			10000		//The length of message rich content 
#define DPSDK_POLICE_OFFICE_TYPE_LEN			512		//The length of Police Office Type. 
#define DPSDK_DOMAIN_ORG_DN_LEN					1024	//The length of Domain Organization DN

#define DPSDK_CERT_AREA_LEN						64      //The length of cert area
#define DPSDK_CERT_ISSUER_LEN					50      //The length of cert issuer
#define DPSDK_CERT_KEY_LEN						512      //The length of cert key
#define DPSDK_EMAIL_FILE_DATA_LEN				10000	//The length of Email File Data
#define DPSDK_VIEW_RESOURCE_CODE_LEN			1024	//View resource code len
#define DPSDK_PATROL_INFO_LEN					64		
#define DPSDK_PATROL_REMARK_LEN					256	
#define DPSDK_PLATE_ISSUE_PLACE_LEN				128
#define DPSDK_PULLSTREAM_SPEEDUP				1       //拉流加速标志
#define DPSDK_IMU_EXTEND_VALUE					256	// length of value in extend, it maybe a file name,so 
#define DPSDK_OSD_PREFIX_LEN					20
#define DPSDK_IMG_CATEGORY_LEN				    64
#define DPSDK_IMG_TYPE_LEN						8

// Log rank The higher the level is, the less the content of the output is
typedef enum
{
	LOG_LEVEL_DEBUG	= 2,		// debugging Do not print normally for debugging and use
	LOG_LEVEL_INFO	= 4,		// information
	LOG_LEVEL_WARN	= 5,		// notice
	LOG_LEVEL_ERR	= 6,		// error
}DPSDK_LOG_LEVEL_TYPE;

typedef enum
{
	DPSDK_LOG_LevelUnknown= 0, // Unknown
	DPSDK_LOG_LevelFatal,	     // fatal
	DPSDK_LOG_LevelError,	     // fatal，error
	DPSDK_LOG_LevelWarn,	     // fatal，error，warn
	DPSDK_LOG_LevelInfo,	     // fatal，error，warn，info
	DPSDK_LOG_LevelTrace,	     // fatal，error，warn，info，trace
	DPSDK_LOG_LevelDebug	     // fatal，error，warn，info，trace，debug
}DPSDK_LOG_VAXPLAYER_LEVEL;

typedef enum
{
	SERVER_URL_VERSION_1_0 = 0,
	SERVER_URL_VERSION_1_1,
	SERVER_URL_VERSION_COUNT
}DPSDK_SERVER_URL_VERSION;

typedef enum
{
	PROTOCOL_VERSION_OLD = 0,
	PROTOCOL_VERSION_V101 = 101,				//协议版本，为了兼容老的客户端和平台，不同协议版本做不同处理,V7版本安全基线需求
	PROTOCOL_VERSION_V110 = 110,				//V8.0.0版本协议变更
}DPSDK_PROTOCOL_VERSION;

typedef struct
{
    DPSDK_UINT32   uiIPType;                  // IP type, refer to DPSDK_IP_TYPE 
    DPSDK_CHAR     szIP[DPSDK_IP_LEN];        // IP address
}DPSDK_IP;

typedef enum
{
    CLIENT_PC       = 1,    // PC Client
    CLIENT_MAC      = 2,    // MAC Client
    CLIENT_ANDROID  = 3,    // Android client
    CLIENT_IPHONE   = 4,    // IPhone client
	CLIENT_PAD		= 5,	// PAD client
	CLIENT_WEB		= 6,	// WEB client
	CLIENT_OTHER	= 7,	// Other
	CLIENT_CONFIG	= 8,	// configuration tool
	CLIENT_OCX_WEB	= 9,	// OCXWeb client
	CLIENT_GB		= 10,	// GB NetGate
}DPSDK_CLIENT_TYPE;

// Data type definition of data synchronization callback function
typedef enum
{
	// Organization, device
	DPSDK_DATA_ORG_INFO =1,							// Organizational data A detailed view of the structure DPSDK_ORG_INFO
	DPSDK_DATA_DEVICE_INFO,							// Device data A detailed view of the structure DPSDK_DEV_ALL_INFO_LIST
	DPSDK_DATA_COLLECT_ORG_INFO,					// Collection tree A detailed view of the structure DPSDK_COLLECTION_ORG_INFO
	DPSDK_DATA_DEVICE_LAYERED,						// Hierarchical acquisition of device tree A detailed view of the structure DPSDK_LAYERED_RESULT_LIST
	DPSDK_DATA_DEVICE_LIST_BY_ORG,					// Device data A detailed view of the structure DPSDK_DEV_ALL_INFO_LIST
	DPSDK_DATA_ALL_ORG_INFO,						// All organizational data A detailed view of the structure DPSDK_ALL_ORG_INFO
	DPSDK_DATA_SIMPLE_ORG_INFO,						// All simple organizational data A detailed view of the structure DPSDK_SIMPLE_ORG_LIST
	DPSDK_DATA_COMPRESS_ORG_INFO,						// All Compress organizational data A detailed view of the structure DPSDK_COMPRESS_ORG_LIST
	DPSDK_DATA_CASCADE_PROTOCOL_INFO,				// All Cascade Protocol data A detailed view of the structure DPSDK_Protocol_Domain_List
	DPSDK_DATA_BRMS_ORGANIZATION_LIST,				// Get Organization list A detailed view of the structure DPSDK_BRMS_ORGANIZATION_LIST
	DPSDK_DATA_VIEW_ORG_INFO,						// View tree A detailed view of the structure DPSDK_VIEW_ORG_INFO
	DPSDK_DATA_COLLECT_TREE_INFO,					// Collection tree A detailed view of the structure DPSDK_COLLECTION_ORG_INFO
	DPSDK_DATA_DEVICE_STATUS,						// DPSDK_DEVICE_STATUS_INFO_LIST
	DPSDK_DATA_CHANNEL_STATUS,						// DPSDK_CHANNEL_STATUS_INFO_LIST

	DPSDK_DATA_ORG_INFO_BY_PAGE,					// Get org info by page
	DPSDK_DATA_LOGICAL_NODE_BY_PAGE,				// Get logical node by page
	DPSDK_DATA_DEVICES_BY_PAGE,						// Get Devices by page
	DPSDK_DATA_CHANNELS_BY_PAGE,					// Get Channels by page
	DPSDK_DATA_DEV_SUB_CHANNELS_BY_PAGE,            // Get Dev Sub Channels By Page

	DPSDK_DATA_ALARM_FACEALARM_TYPE_LIST,			
	DPSDK_DATA_ALARM_STAYNUMBWERULE_INFO,			

	DPSDK_DATA_GET_CURISE_PRESET_INFO,

	DPSDK_DATA_SMART_ANALYZE_START,              // Smart Analyze Start detailed view of the structure DPSDK_SMART_ANALYZE_RESULT
	DPSDK_DATA_SMART_ANALYZE_GETFRAMES,           // Smart Analyze Get Frames detailed view of the structure DPSDK_SMART_ANALYZE_FRAME_INFO_LIST

	//User
	DPSDK_DATA_USER_DETAIL_INFO,					// Get detail information of user A detailed view of the structure DPSDK_USER_DETAIL_INFO_LIST
	DPSDK_DATA_USER_GET_EMAIL_INFO,				// Get user email info detailed view of the structure DPSDK_USER_EMAIL_INFO
	DPSDK_DATA_USER_GROUP_LIST,					// Get group list of user A detailed view of the structure DPSDK_USER_GROUP_LIST
	DPSDK_DATA_USER_USERNAME_LIST,
	DPSDK_DATA_USER_BASE_INFO_LIST,
	DPSDK_DATA_USER_GET_APP_USERS,					// Get app users detailed view of the structure DPSDK_APP_USER_LIST
	DPSDK_DATA_USER_GET_USER_LIST,					// Get user list detailed view of the structure DPSDK_USER_INFO_LIST
	DPSDK_DATA_ASSOCIATE_USER_EMAIL_LIST,			// Associate user email list A detailed view of the structure DPSDK_ASSOCIATE_USER_EMAIL_LIST
	DPSDK_DATA_USER_EMAIL_USER_LIST,				// Get user email list by page A detailed view of the structure DPSDK_USER_EMAIL_USER_LIST
	DPSDK_DATA_USER_GROUP_BY_ROLE_LIST,			// Get role group user list A detailed view of the structure DPSDK_USER_GROUP_BY_ROLE_LIST
	DPSDK_DATA_USER_GET_USERS_LIST,				// Get user list detailed view of the structure DPSDK_GET_USER_INFO_RESULT
	DPSDK_DATA_ROLE_GET_ROLE_INFO,					// Get Role Info
	
	//TVWALL
	DPSDK_DATA_TVWALL_TASK_INFO,					// Get TVWALL task information A detailed view of the structure DPSDK_TVWALL_TASK_INFO
	DPSDK_DATA_GET_TVWALL_PROJECT_FILE,			// Get TVWALL project file A detailed view of the structure DPSDK_TVWALL_TASK_INFO_LIST
	DPSDK_DATA_GET_TVWALL_WINDOWS_LIST,			// Get TVWALL Windows list A detailed view of the structure DPSDK_TVWALL_WINDOWS_LIST
	DPSDK_DATA_CONFIG_TVWALL_WINDOWS_RESULT,		// Config TVWALL Windows A detailed view of the structure DPSDK_CONFIG_TVWALL_WINDOWS_RESULT
	DPSDK_DATA_DELETE_TVWALL_RESULT,				// Delete TV wall A detailed view of the structure DPSDK_DELETE_TVWALL_RESULT 
	DPSDK_DATA_TVWALL_GET_SCENE,					// Get TVWALL scene A detailed view of the structure DPSDK_TVWALL_SCENE_INFO
	DPSDK_DATA_TVWALL_TASK_LIST,					// Get TVWALL task information A detailed view of the structure DPSDK_TVWALL_TASK_LIST_EX
	
	DPSDK_DATA_ALARM_LINKVEDIO_PLAN_LIST,		// Get alarm  link video plan list A detailed view of the structure DPSDK_ALARM_LINKVIDEO_PLAN_LIST

	DPSDK_DATA_GET_ALARM_LINK_RECORD_INFO,		//Get alarm link record info

	// Resource binding
	DPSDK_DATA_RESOURCE_BINDING_INFO,			// Get resource binding info A detailed view of the structure DPSDK_RESOURCE_BINDING_INFO
	DPSDK_CHECK_PRIVILEGES_LIST,				// Check Privileges list
	DPSDK_CHECK_PRIVILEGES,						// Check Privileges
	// Audio File List
	DPSDK_DATA_GET_AUDIO_FILE_INFO_LIST,			// Get resource of the Audio Info File List
	// Audio File List
	DPSDK_DATA_UPDATE_AUDIO_FILE_INFO_LIST,		// Update resource of the Audio Info File List
	
	//DTMS MESSAGE
	DPSDK_DTMS_BALL_CAMERA_OBJECT_ADD,
	DPSDK_DTMS_BALL_CAMERA_OBJECT_QUERY,
	DPSDK_DTMS_GUN_CAMERA_OBJECT_ADD,
	DPSDK_DTMS_GUN_CAMERA_OBJECT_QUERY,
	DPSDK_DTMS_INSPECTION_POINT_OBJECT_ADD,
	DPSDK_DTMS_INSPECTION_POINT_OBJECT_QUERY,
	DPSDK_DTMS_MONITORTARGET_TO_SINGLEMODEL_QUERY,
	DPSDK_DTMS_SINGLEMODEL_OBJECT_ADD,
	DPSDK_DTMS_SINGLEMODEL_OBJECT_QUERY,
	DPSDK_DTMS_MODEL_FILES_QUERY,

	//bay
	DPSDK_DATA_ITC_SECTION_LIST,					// Get itc section info A detailed view of the structure DPSDK_ITC_SECTION_LIST
	DPSDK_DATA_ITC_SECTION_PAGE,					// Get itc section page A detailed view of the structure DPSDK_SECTION_PAGE_RESULT
	DPSDK_DATA_ITC_SPOT_LIST,					// Get itc spot list A detailed view of the structure DPSDK_SPOT_LIST
	DPSDK_DATA_ITC_SPOT_DETAILED_INFO,			// get itc spot detatiled info A detailed view of the structure DPSDK_SPOT_DETAILED_INFO	
	DPSDK_DATA_ITC_SPOT_PAGE_RESULT,				// get itc spot page result A detailed view of the structure DPSDK_SPOT_PAGE_RESULT
	DPSDK_DATA_ITC_SPOT_BINDING_CHANNEL_LIST,	// get itc spot binding channel list A detailed view of the structure DPSDK_CHANNLE_LIST
	DPSDK_DATA_GET_MAINSUB_GROUP_INFO,			// Get Main Sub Group A detailed view of the structure DPSDK_GET_MAINSUB_GROUP_INFO

	//Vtcall
	DPSDK_DATA_GET_CALLLOG_LIST_RECORD,			// Get call log A detailed view of the structure DPSDK_CALLLOG_LIST
	DPSDK_DATA_GET_CALLLOG_NUMBER,				// Get call number A detailed view of the structure DPSDK_GET_CALLNUMBER_NUMBER
	DPSDK_DATA_GET_DEVICE_GROUP,					// Get information of single device group A detailed view of the structure DPSDK_DEV_GROUP_INFO
	DPSDK_DATA_GET_DEVICE_GROUP_LIST,			// Get information of all device groups A detailed view of the structure  DPSDK_DEV_GROUP_LIST
	DPSDK_DATA_GENERATE_DEVICE_GROUP_DEFAULT,	// Generate default device group A detailed view of the structure DPSDK_DEV_GROUP_INFO
	DPSDK_DATA_GET_RELATION_GROUP,				// Get relation of single group relate A detailed view of the structure DPSDK_RELATION_GROUP_INFO
	DPSDK_DATA_GET_RELATION_GROUP_LIST,			// Get relation list of group relate A detailed view of the structure DPSDK_RELATION_GROUP_LIST
	DPSDK_DATA_GET_INFO_PUBLISH,					// Get published information of single message A detailed view of the structure DPSDK_PUBLISH_INFO
	DPSDK_DATA_GET_INFO_PUBLISH_LIST,			// Get published information list of message A detailed view of the structure DPSDK_PUBLISH_INFO_LIST
	DPSDK_DATA_GET_MANAGER_GROUP,				// Get information of single manager group A detailed view of the structure DPSDK_GET_MANAGER_GROUP_INFO
	DPSDK_DATA_GET_MANAGER_GROUP_LIST,			// Get manager group list A detailed view of the structure DPSDK_MANAGER_GROUP_INFO_LIST
	DPSDK_DATA_GENERATE_MANAGER_GROUP_DEFAULT,	// Generate default manager group A detailed view of the structure DPSDK_GET_MANAGER_GROUP_INFO
	
	DPSDK_DATA_GET_DEVPERSON_BY_VTH,				// Get device Person by VTH code A detailed view of the structure DPSDK_VTH_DEV_LIST
	DPSDK_DATA_GET_ISSUE_PASSWORD_LIST,			// get issue password list detailed view of the structure DPSDK_ISSUE_PASSWORD_LIST
	DPSDK_DATA_GET_ISSUE_CONTACT_LIST,			// get issue contact list detailed view of the structure DPSDK_ISSUE_CONTACT_LIST
	DPSDK_DATA_GET_VTALK_SIP_STATUS_LIST,		// get sip online list A detailed view of the structure DPSDK_VTALK_SIP_STATUS_LIST
	DPSDK_DATA_ADD_MANAGER_GROUP_RESULT,			// Add manager group result a detailed view of the structure DPSDK_MANAGER_GROUP_ADD_RESULT
	DPSDK_DATA_UPDATE_MANAGER_GROUP_RESULT,		// Update manager group result a detailed view of the structrue DPSDK_GENERAL_ID_LIST
	DPSDK_DATA_GET_VTALK_ROOM_DETAIL,			// get video talk room detail A detailed view of the structure DPSDK_VTALK_ROOM_DETAIL
	DPSDK_DATA_GET_VTALK_ROOM_INFO_LIST,			// batch get video talk room info A detailed view of the structure DPSDK_ROOM_BASIC_INFO_LIST
	DPSDK_DATA_GET_VTALK_APP_QRCODE_INFO,		// get app QR-Code info A detailed view of the structure DPSDK_VTALK_QRCODE_INFO
	DPSDK_DATA_GET_PUBLISH_FAILED_INFO,			// Get published failed information of single message A detailed view of the structure DPSDK_PUBLISH_FAIL_LIST
	DPSDK_DATA_GET_ROOM_LIST,					// Get room list A detailed view of the structure DPSDK_CALL_GROUP_ROOM_LIST
	
	//AR
	DPSDK_DATA_AR_GET_LABEL_TEMPLATE,			// Get label template list A detailed view of the structure DPSDK_AR_LABEL_TEM_LIST
	DPSDK_DATA_AR_GET_LABEL,						// Get label list A detailed view of the structure DPSDK_AR_LABEL_LIST
	DPSDK_DATA_AR_GET_ROUTING_PLAN,				// Get routing plan of the structure DPSDK_DATA_AR_GET_ROUTING_PLAN
	DPSDK_DATA_AR_GET_LABEL_BK,					// Get label list A detailed view of the structure DPSDK_AR_LABEL_LIST_BK
	DPSDK_DATA_AR_GET_PLAN,
	DPSDK_DATA_AR_GET_PLAN_DETAILED,
	DPSDK_DATA_AR_POLLING_PLAN_LIST,
	DPSDK_DATA_AR_POLLING_PLAN_DETAIL,
	DPSDK_DATA_AR_GET_HISTORY_PTZ_INFO,
	DPSDK_DATA_AR_GET_REGISTER_MENU,          // Get AR Register menu

	// EIMS MESSAGE
	DPSDK_EIMS_SCENESUPPLY_LIST,
	DPSDK_EIMS_ROBOT_LIST,

	//SIP ALARM MESSAGE
	DPSDK_DATA_GET_UNANSWERED_SIPALARM,			// Get unprocess sipalarm
	DPSDK_DATA_GET_PENDING_SIPALARM,				// Get pending sipalarm
	DPSDK_DATA_GET_DETAIL_SIPALARM,				// Get sipalarm detail

	//SEARCH TREE
	DPSDK_DATA_SEARCH_TREE,	

	DPSDK_DATA_ROLE_AUTH_INFO,						//	Get role auth

	DPSDK_DATA_TREE_GRADE_DEVICE_TREE_INFO,			// Get garde device tree detailed view of the structure DPSDK_TREE_GRADE_DEVICE_TREE_INFO

	DPSDK_DATA_GET_GTALK_USERGROUP_IFNO,
	DPSDK_DATA_GET_GTALK_USERGROUP_LIST,
	
	DPSDK_DATA_GET_FISHPTZEYEPARAM,           // Get fish eptz param info

	//DPSDK_DataPassThroughCallback
	DPSDK_DATA_PASSTHROUGH_CALLBACK,
	DPSDK_DATA_FISH_DATA_LIST,
	DPSDK_DATA_USER_FUNCTION_LIST,			// Get user functions detailed view of the structure DPSDK_USER_FUNCTION_LIST
	DPSDK_DATA_CHANNEL_FUNCTION_LIST,		// Get cannel functions detailed view of the structure DPSDK_USER_FUNCTION_LIST

	DPSDK_DATA_AR_GET_STATISTICS_COUNT_INFO,
	DPSDK_DATA_VIDEOSHARE_ADD,					
	DPSDK_DATA_VIDEOSHARE_LIST,					// get video share list result
	DPSDK_DATA_GET_ILLEGAL_SYSTME_HELATH,

	//Acd
	DPSDK_ACD_ACHIEVE_ALERT_LIST,				// Get alert list
	DPSDK_ACD_ACHIEVE_AR_RANG_ALERT_LIST,		// Get ar rang alert all list

	// Sca
	DPSDK_DATA_GET_ATTACHMENT_DOWNLOADURL,		// get sca attachment download url
	DPSDK_DATA_REPORT_CLIENT_INFO,
	DPSDK_DATA_GET_MESSAGEHISTORY_INFO,
	DPSDK_DATA_GET_DISTRIBEUSERS_INFO,

	DPSDK_DATA_GET_FACE_TASK_LIST,				// get task list result list A detailed view of the structure DPSDK_DATA_GET_FACE_TASK_LIST
	DPSDK_DATA_GET_FACE_TASK_INFO,

	DPSDK_DATA_GET_USER_PASSCHANNEL_INFO,	
	DPSDK_DATA_GET_PASSAGE_STATISTICS,				// get passage statistics
	DPSDK_DATA_GET_PASSAGE_LIST_INFO,				// get passage list
	DPSDK_DATA_GET_PASS_VEHICLE_BOTTOM_DETAIL,	
	
	DPSDK_DATA_GET_VEHICLE_TASK_LIST,		    // get task list result list A detailed view of the structure DPSDK_VEHICLE_GET_TASK_LIST
	DPSDK_DATA_GET_VEHICLE_TASK_INFO,		    // get task list result list A detailed view of the structure DPSDK_VEHICLE_TASK_INFO

	DPSDK_DATA_QUERY_DEVICE_INFO,					// Query the information of device A detailed view of the structure DPSDK_UPDATE_DEVICE_INFO
	DPSDK_DATA_QUERY_FACE_ALARM,					// query face alarm data

	//videoEx
	DPSDK_DATA_STRUCT_DElETE_INFO,
	DPSDK_DATA_STRUCT_STATUS_INFO,
	DPSDK_DATA_STRUCT_CHANNEL_INFO,
	DPSDK_DATA_STRUCT_BAND_DIC_INFO,

	//GDU
	DPSDK_GDU_POST_VEHICLE_LIST,				// vehicle list
	DPSDK_GDU_POST_BULLETIN_LIST,				// bulletin list

	//MCU
	DPSDK_MCU_QUERY_MANUAL_RECODE,              //query manual recode
	
		//BRMS
	DPSDK_DATA_ADD_DEVICE_INFO,
	DPSDK_GET_USERMANAGER_USERIFNO,
	DPSDK_GET_USERMANAGER_ROLEIFNO,
	DPSDK_DATA_DOMAIN_USER_LIST,						// Get domain user detailed view of the structure DPSDK_DOMAINUSER_NAME_LIST
	DPSDK_DATA_DOMAIN_INVALIDUSER_LIST,				// Get domain invalid user detailed view of the structure DPSDK_ROLE_USERNAME_LIST
	DPSDK_DATA_ADDUSER_FAILEDUSERS_LIS,				// Add failed domain user detailed view of the structure DPSDK_DOMAINUSER_ADDUSER_FAILEDUSERS
	DPSDK_DATA_ACCOUNT_MENU_LIST,					// Get account menu list detailed view of the structure DPSDK_AVAILABLE_MENUS_LIST
	DPSDK_DATA_USERROLES_LIST,						//
	DPSDK_DATA_TIMEZONE_LIST,						// Get timezone list detailed view of the structure DPSDK_TIMEZONE_LIST
	DPSDK_DATA_TREE_SEARCH_GRADE_DEVICE_TREE_INFO ,	// Search garde device tree detailed view of the structure DPSDK_TREE_SEARCH_GRADE_DEVICE_TREE_INFO
	DPSDK_DATA_DOMAIN_INFO_LIST ,						// Get domain informations by page A detailed view of the structure DPSDK_DOMAIN_LIST
	DPSDK_DATA_GET_FUNCTION_CONFIG_XML ,				// Get function config in XML A detailed view of the structure DPSDK_XML_DATA
	DPSDK_DATA_TREE_SEARCH_FULL_GRADE_DEVICE_TREE_INFO ,
	DPSDK_DATA_TREE_FULL_GRADE_DEVICE_TREE_INFO,
	DPSDK_DATA_RESOURCEROLE_LIST,				// Get Resource Role List A detailed view of the structure DPSDK_ROLE_ID_LIST
	DPSDK_DATA_ALLROLES_LIST,					//Get Resource All Role List	
	DPSDK_DATA_GET_DOMAIN_ORGANIZATIONS_LIST,		// Get Domain Organizations List
	DPSDK_DATA_GET_IMPORTED_DOMAIN_ORGANIZATIONS_LIST, // Get Imported Domain Organizations List
	DPSDK_DATA_GET_DEVICE_TREE_INFO,			// Get device tree list a detailed view of the structure  DPSDK_TREE_DEVICE_TREE_INFO
	DPSDK_DATA_UPDATE_DEVICE_INFO,
	DPSDK_DATA_RESOURCE_BINDING_CHANNEL_RELATION_INFO,
	DPSDK_DATA_RESOURCE_BINDING_CHANNEL_STATUS_LIST,
	DPSDK_DATA_BATCH_UPDATE_CHANNEL_CAPABILITY_FAIL_LIST,
	DPSDK_DATA_GET_CAPABILITY_OCCUPY_INFO,
	DPSDK_DATA_DEVICE_LIST_BY_PAGE,
	DPSDK_DATA_DEVICE_DETAILED_INFO,
	DPSDK_DATA_DELETE_DEVICE_INFO,
	DPSDK_DATA_GET_UNAUTH_DEVICE,
	DPSDK_DATA_SAVE_UNAUTH_DEVICE,
	DPSDK_DATA_GET_PAGE_AREA_LIST,
	DPSDK_DATA_ADDUSER_FAILEDUSERS_LIST,
	DPSDK_DATA_RESOURCE_BINDING_CHANNEL_RELATION_LIST,
	DPSDK_DATA_DISCOVER_DEVICE_LIST,
	DPSDK_DATA_ADD_DISCOVER_DEVICE_RESULT,
	DPSDK_DATA_GET_REPEAT_DEVICE_LIST,
	DPSDK_DATA_GET_UNSEARCH_DEVICE,
	DPSDK_DATA_UPDATE_DEVICE_PWD_RESULT,
	DPSDK_DATA_DEVICE_CHANNEL_LIST,
	DPSDK_DATA_SEARCH_CHANNELS_INFO,
	DPSDK_DATA_GET_PAGE_UNAUTHORIZED_DEVICES_LIST,
	DPSDK_BATCH_REGULATE_SLEEP_STATUS,
	DPSDK_DATA_DEL_CUSTOM_ALARM_RESULT,
	DPSDK_DATA_PEND_ALARM_LIST,
	DPSDK_DATA_PROCESSED_ALARM_LIST,
	DPSDK_DATA_ALARM_TEMPLATE_LIST,
	DPSDK_DATA_ALARM_TEMPLATE_INFO,
	DPSDK_DATA_GET_AREA_LIST,
	DPSDK_DATA_GET_PAGE_ZONE_LIST,
	DPSDK_DATA_GET_OPERATE_ALARMHOST_DEVICE,
	DPSDK_DATA_GET_OPERATE_ALARMHOST_AREA,
	DPSDK_DATA_GET_HOST_OUT_FAIL_CHANNEL_LIST,
	DPSDK_DATA_GET_HOST_SIGNAL_FAIL_CHANNEL_LIST,
	DPSDK_DATA_GET_HOST_OUT_CHANNEL_LIST,
	DPSDK_DATA_GET_HOST_SIGNAL_CHANNEL_LIST,
	DPSDK_DATA_GET_DEVICE_TYPE,
	DPSDK_DATA_GET_HIS_MEDIA_KEY,
	DPSDK_DATA_GET_PAGE_FAULT_LIST,
	DPSDK_DATA_GET_ENTRANCE_PAGEVEHICLE_CAPTURERECORDS,
	DPSDK_DATA_GET_BINDITC_INFO,
	DPSDK_DATA_GET_VTO_RELITC,
	DPSDK_EXPORT_POINT_RECORDS,
	DPSDK_TRANSMIT_IMPORT_EQUIPMENT_MESSAGE,
	DPSDK_DATA_STORAGE_NET_DISK_LIST,			// Get net disk list A detailed view of the structure DPSDK_STORAGE_NET_DISK_LIST
	DPSDK_DATA_STORAGE_NET_DISK_TYPE_LIST,		// Get net disk type list A detailed view of the structure DPSDK_STORAGE_DISK_TYPE_LIST
	DPSDK_DATA_STORAGE_LOCAL_DISK_LIST,			// Get local disk list A detailed view of the structure DPSDK_STORAGE_LOCAL_DISK_LIST
	DPSDK_DATA_STORAGE_LOCAL_DISK_TYPE_LIST,		// Get local disk type list A detailed view of the structure DPSDK_STORAGE_DISK_TYPE_LIST
	DPSDK_DATA_STORAGE_DISK_GROUP_LIST,			// Get disk group list A detailed view of the structure DPSDK_STORAGE_DISK_GROUP_LIST
	DPSDK_DATA_STORAGE_DISK_GROUP_DETAIL,		// Get disk group detailed info A detailed view of the structure DPSDK_STORAGE_DISK_GROUP_DETAIL
	DPSDK_DATA_STORAGE_UNBOUND_DISK_LIST ,		// Get unbound disk list A detailed view of the structure DPSDK_STORAGE_UNBOUND_DISK_LIST
	DPSDK_DATA_STORAGE_FORMAT_NET_DISK_FAILED_PATH_LIST ,		// Formatting net disk, Failed path list A detailed view of the structure DPSDK_PATH_LIST
	DPSDK_DATA_STORAGE_FORMAT_LOCAL_DISK_FAILED_PATH_LIST ,	// Formatting local disk, Failed path list A detailed view of the structure DPSDK_PATH_LIST
	DPSDK_DATA_STORAGE_BINDING_DISK_GROUP_CHANNEL_LIST ,		// Get binding disk group channel list A detailed view of the structure DPSDK_ID_LIST
	DPSDK_DATA_HOTSTANDBY_RAIDS,
	DPSDK_DATA_RAIDS ,
	DPSDK_DATA_RAID_DETAIL ,
	DPSDK_DATA_RAID_TYPES ,
	DPSDK_DATA_STORAGE_PIC_CONFIG_WARN ,
	DPSDK_DATA_GET_DEVICE_STORAGE_POSITION_LIST ,
	DPSDK_DATA_SUBSYSTEM_CONFIG_WARN ,
	//FACE
	DPSDK_DATA_FACE_PERSON_TYPE_LIST,				// Get person type list detailed view of the structure DPSDK_FACE_PERSON_TYPE_LIST
	DPSDK_DATA_FACE_FAILED_DEVICE_LIST,				// Failed device list when deleting repository detailed view of the structure DPSDK_FAILED_DEVICE_LIST
	DPSDK_DATA_FACE_DPSDK_ID_LIST ,					// Failed face id list when Issuing/Updating/Deleting person to devices again detailed view of the structure DPSDK_ID_LIST
	DPSDK_DATA_FACE_PERSON_LIST ,						// Get person face info list detailed view of the structure DPSDK_GET_FACE_PERSON_LIST
	DPSDK_DATA_FACE_REPOSITORY_CONTROL_PROCESS_LIST ,	// Get repository control process list detailed view of the structure DPSDK_REPOSITORY_CONTROL_PROCESS_LIST
	DPSDK_DATA_FACE_REPOSITORY_CONTROL_PROCESS_DETAIL ,	// Get repository control process detail detailed view of the structure DPSDK_REPOSITORY_CONTROL_PROCESS_DETAIL
	DPSDK_DATA_FACE_CONTOLR_REPOSITORY_LIST ,			// Get control repository list detail detailed view of the structure DPSDK_FACE_CONTOLR_REPOSITORY_LIST
	DPSDK_DATA_FACE_CONTOLR_PERSON_LIST ,				// Get control person list detail detailed view of the structure DPSDK_FACE_CONTOLR_PERSON_LIST
	DPSDK_DATA_FACE_CONTORL_FAILED_CHANNEL_LIST	,		// Failed channel lsit when contorl channel detail detailed view of the structure DPSDK_ID_LIST
	DPSDK_DATA_FACE_CONTOLR_CHANNEL_LIST ,			// Get control channel list detail detailed view of the structure DPSDK_FACE_CONTOLR_CHANNEL_LIST

	DPSDK_DATA_FACE_GET_PAGE_RECOGNITION_RECORDS_BY_FEATURE_LIST ,// Get **** records by feature list detailed view of the structure DPSDK_FACE_GET_PAGE_RECOGNITION_RECORDS_BY_FEATURE_RESULT
	DPSDK_DATA_FUSION_GET_PAGE_VEHICLE_CAPTURE_RECORDS_LIST , // Get car vehicle capture records list detailed view of the structure DPSDK_FUSION_GET_PAGE_VEHICLE_CAPTURE_RECORDS_RESULT
	DPSDK_DATA_FACE_GET_PAGE_DETECTION_RECORDS_BY_SESSION_LIST,// Get page detection records by session list detailed view of the structrue DPSDK_FACE_GET_PAGE_DETECTION_RECORDS_BY_SESSION_RESULT 
	DPSDK_DATA_FACE_GET_PAGE_DETECTION_RECORDS_BY_FEATURE_LIST,// Get page detection records by feature list detailed view of the structrue DPSDK_FACE_GET_PAGE_DETECTION_RECORDS_BY_FEATURE_RESULT
	DPSDK_DATA_ENTRANCE_GET_PAGE_VEHICLE_CAPTURE_RECORDS_LIST ,//Get entrance page vehicle capture records list detailed view of the structure DPSDK_ENTRANCE_GET_PAGE_VEHICLE_CAPTURE_RECORDS_RESULT

	DPSDK_DATA_FACEGROUP_CONTOLR_LIST ,				//Get face group control list
	DPSDK_DATA_FACEGROUP_ISSUE_LIST ,					//Get face group issue list
	DPSDK_DATA_FACEGROUP_GET_ISSUEOBJECT_LIST ,		//Get face group issueobject list
	DPSDK_DATA_FACEGAOUP_GET_ISSUEPERSON_LIST ,		//Get face group issueperson list
	DPSDK_DATA_FACEGROUP_FAILED_ISSUE_LIST ,			//Get cancel issue failed list
	DPSDK_DATA_FACEGROUP_FAILED_CONTROL_LIST ,		//Get cancel control failed list
	DPSDK_DATA_ENTRANCE_UNACCESS_VEHICLE_INFO  ,		// The information of vehicles not released at designated gates at the entrance and exit 
	DPSDK_DATA_ENTRANCE_ACCESS_VEHICLE_AUTHORITY_INFO ,		// The information on the access authority of the designated gate for the entrance and exit vehicles
	DPSDK_DATA_ENTRANCE_GET_EVENT_SETTINGS ,
	DPSDK_DATA_ENTRANCE_GET_EVENT_SINGLE_SETTINGS ,

	DPSDK_DATA_UVSS_GET_PAGE_DETECTION_RECORDS_LIST ,

	DPSDK_DATA_VEHICLE_GET_PAGE_DETECTION_RECORDS_BY_SESSION_LIST,
	// ENTRANCE RECORD
	DPSDK_DATA_GET_PAGE_VEHICLE_ENTER_RECORD_LIST ,		// Get page vehicle enter record list a detailed view of the structure DPSDK_GET_PAGE_VEHICLE_ENTER_RECORD_RESULT
	DPSDK_DATA_GET_PAGE_VEHICLE_EXIT_RECORD_LIST ,		// Get page vehicle exit record list a detailed view of the structure DPSDK_GET_PAGE_VEHICLE_EXIT_RECORD_RESULT
	DPSDK_DATA_GET_PAGE_VEHICLE_FORCE_EXIT_RECORD_LIST ,	// Get page vehicle force exit record list a detailed view of the structure DPSDK_GET_PAGE_VEHICLE_FORCE_EXIT_RECORD_RESULT
	DPSDK_DATA_GET_VEHICLE_ENTER_RECORD_INFO ,		// Get vehicle enter record info a detailed view of the structure DPSDK_GET_VEHICLE_ENTER_EXIT_RECORD_INFO
	DPSDK_DATA_GET_VEHICLE_EXIT_RECORD_INFO ,			// Get vehicle exit record info a detailed view of the structure DPSDK_GET_VEHICLE_ENTER_EXIT_RECORD_INFO
	DPSDK_DATA_GET_VEHICLE_FORCE_EXIT_RECORD_INFO ,	// Get vehicle force exit record info a detailed view of the structure DPSDK_GET_VEHICLE_RECORD_INFO
	DPSDK_DATA_GET_PAGE_VEHICLE_PARKING_RECORD_LIST ,		// Get page vehicle parking record list a detailed view of the structure DPSDK_GET_PAGE_PARKING_RECORD_RESULT
	DPSDK_DATA_GET_VEHICLE_PARKING_RECORD_INFO ,		// Get vehicle parking record info a detailed view of the structure DPSDK_GET_PARKING_RECORD_LIST
	// SPECIAL SPACE
	DPSDK_DATA_GET_SPECIAL_SPACE_TREE ,			// Get special space tree a detailed view of the structrue DPSDK_SPECIAL_SPACE_TREE	
	DPSDK_DATA_GET_PAGE_SPECIAL_SPACE_LIST ,		// Get page special space list a detailed view of the structure DPSDK_GET_PAGE_SPECIAL_SPACE_LIST
	DPSDK_DATA_GET_CURRENT_GROUP_VEHICLE_LIST ,	// Get current group vehicle list a detailed view of the structure DPSDK_GET_GROUP_VEHICLE_LIST
	DPSDK_DATA_GET_BINDINGCHANNEL ,				// Get BindingChannel a detailed view of the structure DPSDK_GET_GROUP_VEHICLE_LIST
	DPSDK_DATA_GET_BINDINGDETECTOR ,				// Get BindingDetector a detailed view of the structure DPSDK_GET_GROUP_VEHICLE_LIST
	DPSDK_DATA_GET_BINDINGLED ,					// Get BindingLED a detailed view of the structure DPSDK_GET_GROUP_VEHICLE_LIST
	DPSDK_DATA_GET_BINDINGPARKINGSPACE ,					// Get BindingParkingSpace a detailed view of the structure DPSDK_GET_GROUP_VEHICLE_LIST
	DPSDK_DATA_GET_BINDINGPOSITION ,					// Get BindingParkingSpace a detailed view of the structure DPSDK_GETLAYER_RESULT
	DPSDK_DATA_GET_LAYER ,					// Get layer info a detailed view of the structure DPSDK_GETLAYER_RESULT
	DPSDK_DATA_GET_LAYERS ,					// Get layers a detailed view of the structure DPSDK_GETLAYERS_RESULT_LIST	
	DPSDK_DATA_GET_PARKINGLOTBINDINGLED,					// Get BindingParkingSpace a detailed view of the structure DPSDK_GET_PARKINGLOT_BINDING_LED_LIST
	DPSDK_DATA_GET_PARKINGLOTGETPOSITION ,					// Get ParkingLotGetPosition a detailed view of the structure DPSDK_PARKINGLOT_GETPOSITION_RESULT
	DPSDK_DATA_GET_CONFIG_SPECIAL_SPACE_TREE ,	// Get config special space tree a detailed view of the structrue DPSDK_SPECIAL_SPACE_TREE
	DPSDK_DATA_GET_CONFIG_LAYERS ,					// Get config layers a detailed view of the structure DPSDK_GETLAYERS_RESULT_LIST	
	DPSDK_DATA_GET_CONFIG_LAYER ,					// Get config layer info a detailed view of the structure DPSDK_GETLAYER_RESULT
	DPSDK_DATA_GET_LEDIDLE_PARKINGSPACECOUNT_LIST,
	DPSDK_DATA_GET_FACELIB_RESULT,
	DPSDK_DATA_ANALYZE_TARGETOBJECT,
	DPSDK_DATA_GET_ENTRANCE_GROUP_INFO,
	DPSDK_DATA_GET_ENTRANCE_GROUPS_LIST,
	DPSDK_DATA_GET_PAGE_ENTRANCE_GROUPS_LIST,
	DPSDK_DATA_GET_PAGE_ENTRANCE_FAILURE_VEHICLES_LIST,
	DPSDK_DATA_GET_PARKING_LOT_PARKING_LOT_INFO,
	DPSDK_DATA_GET_PARKING_LOT_PARKING_LOTS_LIST,
	DPSDK_DATA_GET_PARKING_LOT_CONFIG_PARKING_LOTS_LIST,
	DPSDK_DATA_GET_PARKING_LOT_RECORD_PARKING_LOTS_LIST,
	DPSDK_DATA_GET_PARKING_LOT_PARKING_LOTS_TREE,
	DPSDK_DATA_GET_PARKING_LOT_PARKING_LOT_POSITION_INFO,
	DPSDK_DATA_GET_PARKING_LOT_ENTRY_POSITION_LIST,
	DPSDK_DATA_GET_PARKING_LOT_PARKING_LOT_POSITION_POINT_INFO,
	DPSDK_DATA_GET_PARKING_LOT_UNBINDING_COMMON_LED_CHANNELS_LIST,
	DPSDK_DATA_GET_PARKING_LOT_SPACE_LIST,
	DPSDK_DATA_GET_PARKING_LOT_UNBINDING_LED_LIST,
	DPSDK_DATA_GET_PARKING_LOT_UNBINDING_DECTETOR_LIST,
	DPSDK_DATA_GET_PARKING_LOT_UNBINDING_ITC_CHANNELS_LIST,
	DPSDK_DATA_GET_PARKING_LOT_UNBINDING_REMAIN_LED_CHANNELS_LIST,
	DPSDK_DATA_GET_PARKING_LOT_UNBINDING_VTO_CHANNELS_LIST,
	DPSDK_DATA_GET_PARKING_LOT_VTO_BINDING_ITC_CHANNELS_LIST,
	DPSDK_DATA_GET_LED_CONFIGRATIONS_LIST,
	DPSDK_DATA_GET_ASSOCIATE_PLATENOS_LIST,
	DPSDK_DATA_DOWNLOAD_VEHICLE_RECORD_PICTURES,
	DPSDK_DATA_GET_ACCESSCONTROL_LOG,
	DPSDK_DATA_GET_ACCESSCONTROL_LOG_LIST,
	DPSDK_DATA_GET_ACCESSCONTROL_AREA_LOG_LIST,
	DPSDK_DATA_GET_DOOR_ALARM_INOUT,
	DPSDK_DATA_GET_DOORBASE_CONFIGURE,
	DPSDK_DATA_GET_DOOR_READER,
	DPSDK_DATA_GET_DOOR_CONTROLLER,
	DPSDK_DATA_GET_ACCESS_CONTROL_STATUS,
	DPSDK_DATA_GET_ATTENDANCE_CHANNELS_LIST ,		    // Get Att channels A detailed view of the structure DPSDK_GET_CHANNEL_RESULT	
	DPSDK_DATA_GET_ATTENDANCE_TIMEINTERVAL_INFO ,		    // Get time interval A detailed view of the structure DPSDK_TIMEINTERVAL_DATA	
	DPSDK_DATA_GET_ATTENDANCE_TIMEINTERVALS_INFO ,		    // Get time intervals A detailed view of the structure DPSDK_GET_TIMEINTERVAL_LIST
	DPSDK_DATA_GET_ATTENDANCE_ORDER_INFO ,					// Get order info A detailed view of the structure DPSDK_ATTENDANCEORDER_INFO	
	DPSDK_DATA_GET_ATTENDANCE_ORDERS_INFO ,					// Get orders info A detailed view of the structure DPSDK_ATTENDANCEORDER_LIST	
	DPSDK_DATA_GET_ATTENDANCE_SCHEDULE_INFO ,			    // Get schedule info A detailed view of the structure DPSDK_PERSON_SCHEDULE_INFO
	DPSDK_DATA_GET_ATTENDANCE_DEPTSCHEDULE_INFO ,			    // Get DeptSchedule info A detailed view of the structure DPSDK_DEPT_SCHEDULE_INFO
	DPSDK_DATA_DEL_ATTENDANCE_ORDERS_INFO ,			    // Del orders info A detailed view of the structure DPSDK_ATTENDANCE_ORDER_NAME_LIST
	DPSDK_DATA_DEL_ATTENDANCE_TIMEINTERVAL_INFO ,		    // Del time interval A detailed view of the structure DPSDK_ATTENDANCE_TIMEINTERVAL_NAME_LIST
	DPSDK_DATA_GET_ATTENDANCE_BATCH_ORDER_INFO ,			// Batch Get orders info A detailed view of the structure DPSDK_BATCH_ATTENDANCEORDER_LIST
	DPSDK_DATA_GET_ATTENDANCE_BATCH_TIMEINTERVAL_INFO ,
	DPSDK_DATA_GET_ATTENDANCE_HOLIDAYS_INFO,
	DPSDK_DATA_ADD_EXTRACT_ACCESSPERSON,
	DPSDK_DATA_GET_EXTRACT_ACCESSPERSON_LIST,
	DPSDK_DATA_GET_EXTRACT_TASK_LIST,
	DPSDK_DATA_IMPORT_PERSONS,
	DPSDK_DATA_GET_PERSONGROUP_RESULT,
	DPSDK_DATA_ADD_PERSON_RESULT,
	DPSDK_DATA_GET_PAGE_VEHICLES_SUMMARY_RESULT,
	DPSDK_DATA_GET_PERSON_RESULT,
	DPSDK_DATA_GET_PERSON_LIST,
	DPSDK_DATA_GET_PERSON_GROUP_LIST,
	DPSDK_DATA_GET_PERSON_ORG_TREE,
	DPSDK_DATA_GET_AREAS_POINT_LIST,
	DPSDK_DATA_GET_POINT_DETAILS,
	DPSDK_DATA_GET_AREAS_TREE,
	DPSDK_DATA_UPDATE_PERSON_RESULT,
	DPSDK_DATA_GET_ACCESSCONTROL_RULE,
	DPSDK_DATA_GET_PERSON_DEV_RIGHT,
	DPSDK_DATA_GET_AUTO_SYNCHRONIZE_RULE_RESULT,
	DPSDK_DATA_GET_MAP_LOG_LIST,
	DPSDK_DATA_GET_GLOBALCONTRAL_DOOR_CONFIG,
	DPSDK_DATE_GET_VISITORCONFIG,
	DPSDK_DATE_GET_VISITORLIST,
	DPSDK_DATE_GET_HISTORY_VISITORLIST,
	DPSDK_DATE_GENERATE_QRCODEINFO,
	DPSDK_DATA_GET_PUBLICPASSWORD_INFO,
	DPSDK_DATA_GET_PASSWORDLIST_INFO,
	DPSDK_DATA_GET_PASSWORD_FAILED_TASK,
	DPSDK_DATA_GET_PAGE_ACCESS_RECORDS_LIST,
	DPSDK_DATA_GET_BATCHADD_ROOMS_INFO,
	DPSDK_DATA_QUERY_PERSON_LIST,
	DPSDK_DATA_QUERY_ROOM_DETAIL,
	DPSDK_DATA_QUERY_ROOM_PAGE,
	DPSDK_DATA_EMAP_RASTER_MAP_LIST,
	DPSDK_DATA_EMAP_RASTER_MAP_DETAIL,
	DPSDK_DATA_BACKUP_RESTORE_FILEDATA,
	DPSDK_DATA_STORAGE_PLAN_UNABLE_CHANNEL_LIST,
	DPSDK_DATA_GET_STORAGE_PLAN_LIST,
	DPSDK_DATA_GET_MOTION_STORAGE_PLAN_LIST,
	DPSDK_DATA_STORAGE_CHANNEL_RECORD_PLAN_LIST,
	DPSDK_DATA_STORAGE_PLAN_CHANNEL_BASE_LIST,
	DPSDK_DATA_STORAGE_PLAN_CHANNEL_REMOVE_LOG_LIST,
	DPSDK_DATA_STORAGE_PAGERECORD_PLAN_LIST,
	DPSDK_DATA_STORAGE_PAGEMOTIONRECORD_PLAN_LIST,
	DPSDK_DATA_STORAGE_PLAN_RECORD_DETAIL_INFO,
	DPSDK_DATA_STORAGE_PALN_RECORD_LIST,
	DPSDK_DATA_STORAGE_PLAN_PATCH_PLAN_INFO,
	DPSDK_DATA_STORAGE_PLAN_DEVIDE_FILE_PATCH_PLAN_INFO,
	DPSDK_DATA_STORAGE_PLAN_PATCH_PLAN_LIST,
	DPSDK_DATA_STORAGE_PLAN_DEVIDE_FILE_PATCH_PLAN_LIST,
	DPSDK_DATA_STORAGE_CHANNEL_PATCH_PLAN_LIST,
	DPSDK_DATA_STORAGE_DEVICE_FILE_PATCH_PLAN_LIST,
	DPSDK_DATA_STORAGE_PATCH_PLAN_CHANNEL_LIST,
	DPSDK_DATA_STORAGE_FILE_PATCH_PLAN_DEVICE_LIST,
	DPSDK_DATA_STORAGE_PATCH_PLAN_REMOVE_LOG_LIST,
	DPSDK_DATA_STORAGE_GET_PATCH_PLAN_INFO,
	DPSDK_DATA_STORAGE_PATCH_PLAN_LIST,
	DPSDK_DATA_STORAGE_PLAN_CONFIG_STATUS_LIST,
	DPSDK_DATA_STORAGE_NEW_DEVICE_PLAN,
	DPSDK_DATA_QUERY_CHANNEL_RECORD_STATE_INFO,
	DPSDK_DATA_BRMS_SYSTEM_EVENT_TYPE_LIST,
	DPSDK_DATA_GET_SERVER_LIST,
	DPSDK_DATA_BRMS_EVENT_TYPE_LIST,
	DPSDK_DATA_GET_CONFIG_TYPE,
	DPSDK_DATA_GET_SUPPORT_OUTSIDE_DATABASE_TYPE,
	DPSDK_DATA_GET_UPGRADE_PLAN_LIST,
	DPSDK_DATA_GET_UPGRADE_TASK_LIST,
	DPSDK_DATA_GET_UPGRADE_DEVICEINFO_LIST,
	DPSDK_DATA_THRIDSYSTEM_GET_ALLEVENTSOURCE_LIST,
	DPSDK_DATA_GET_IPALLOW_LIST,
	DPSDK_DATA_TIME_TEMPLATE_BASE_INFO_LIST,
	DPSDK_DATA_TIME_TEMPLATE_DETAIL_INFO,		// Delete time template A detailed view of the structure DPSDK_DELETE_TIME_TEMPLATE_INFO

	DPSDK_DATA_ALARM_PLAN_RESOURCE_LIST ,			// Batch get resource(device 0r channel) config status A detailed view of the structure DPSDK_ALARM_PLAN_RESOURCE_LIST

	DPSDK_DATA_GET_ALARM_PLAN_INFO ,				// Get alarm paln list a detailed view of the structure DPSDK_ALARM_PLAN_INFO
	DPSDK_DATA_GET_ALARM_PLAN_LINK_INFO ,			// Get alarm plan link list a detailed view of the structure DPSDK_ALARM_GET_PLAN_LINK_INFO_RESULT
	DPSDK_DATA_GET_ALARM_TYPE_CONFIGED_SOURCES_LIST ,// Get alarm type configed sources list a detailed view of the structure DPSDK_ALARM_GET_TYPE_CONFIGED_SOURCES_RESULT
	DPSDK_DATA_GET_ALARM_TYPES_LIST ,				// Get alarm type list a detailed view of the structure DPSDK_ALARM_GET_TYPE_RESULT
	DPSDK_DATA_GET_PAGE_ALARM_PLANS_LIST ,		// Get page alarm plans list a detailed view of the structrue DPSDK_ALARM_GET_PAGE_PLANS_RESULT
	DPSDK_DATA_GET_SOURCE_ALARM_PLANS_LIST ,		// Get source alarm plans list a detailed view of the structrue DPSDK_ALARM_GET_SOURCE_PLANS_RESULT
	DPSDK_DATA_GET_ALARM_PROTOCOL_TEMPLATE_LIST ,		// Get alarm plan template list a detailed view of the structrue DPSDK_ALARM_PLAN_TEMPLATE_LIST
	DPSDK_DATA_GET_ALARM_PROTOCOL_TEMPLATE_INFO ,		// Get alarm plan template info a detailed view of the structrue DPSDK_ALARM_PLAN_TEMPLATE_INFO
	DPSDK_DATA_GET_MAP_RESOURCE_CONFIG_STATUS_LIST ,	// 
	DPSDK_DATA_GET_SOFT_TRIGGER_ALARM_TYPE_LIST , //Get soft trigger alarm type list
	DPSDK_DATA_GET_ALARM_BLOCKROSTER_INFO = 3018,		// Get block roster info A detailed view of the structure DPSDK_ALARM_GET_ENTRANCE_BLOCK_ROSTER_INFO
	DPSDK_DATA_GET_ALARM_NONE_ENTEREXIT_RECORD_INFO , // Get none enter exit recotd info a detailed view of the structure DPSDK_ALARM_GET_ENTRANCE_NONE_ENTEREXIT_RECORD_INFO
	DPSDK_DATA_GET_ALARM_PARKING_OVERTIME_INFO ,  // Get parking overtime info a detailed view of the structure DPSDK_ALARM_GET_ENTRANCE_PARKING_OVERTIME_INFO
	DPSDK_DATA_GET_ALARM_PARKING_CROSS_LINE_INFO, // Get parking cross line info a detailed view of the structure DPSDK_ALARM_GET_ENTRANCE_PARKING_SPACE_INFO
	DPSDK_DATA_GET_ALARM_RESERVED_PARKING_SPACE_INFO , // Get reserved parking space info a detailed view of the structure DPSDK_ALARM_GET_ENTRANCE_PARKING_SPACE_INFO

	DPSDK_DATA_GET_ALARM_COMBINATION_RULE_LIST ,	// Get combination alarm sules a detailed view of the structure DPSDK_ALARM_GET_ENTRANCE_PARKING_SPACE_INFO
	DPSDK_DATA_GET_ALARM_COMBINATION_SOURCE_LIST ,	// Get combination alarm sources by page a detailed view of the structure DPSDK_ALARM_COMBINATION_SOURCE_LIST			

	DPSDK_DATA_GET_CUSTOM_ALARM_CODE_TYPE_LIST,	//Get custom alarm code type list
	DPSDK_DATA_GET_ALARM_VACATION_TEMPLATE_LIST,		// Get alarm vacation template list a detailed view of the structrue DPSDK_ALARM_VACATION_TEMPLATE_LIST
	DPSDK_DATA_GET_ALARM_VACATION_TEMPLATE_INFO,		// Get alarm vacation template info a detailed view of the structrue DPSDK_ALARM_VACATION_TEMPLATE_INFO
	DPSDK_DATA_DELETE_ALARM_VACATION_FAILED_INFO ,	
	DPSDK_DATA_GET_UPDATEALARMPLAN_FAILDDETAILDATA,
	DPSDK_DATA_TIME_TEMPLATE_INFO,
	DPSDK_DATA_GET_POS_ALARM_ITEMS_LIST,
	DPSDK_DATA_GET_ADDALARMPLAN_FAILDDETAILDATA,
	DPSDK_DATA_BRMS_RESOUCEALLOCATE_ORGDEVICE_RESULT,
	DPSDK_DATA_BRMS_RESOUCEALLOCATE_SERVERS_RESULT,
	DPSDK_DATA_BRMS_SERVER_DETIAL_INFO,
	DPSDK_DATA_BRMS_SERVER_LIST,
	DPSDK_DATA_BRMS_SERVER_LIST_BY_PAGE,
	DPSDK_DATA_BRMS_SERVER_AVAILABLE_LIST,
	DPSDK_DATA_BRMS_SERVERLOG_SERVER_LIST_BY_PAGE,
	DPSDK_DATA_GET_GROUPS_LIST,
	DPSDK_DATA_GET_PAGE_VEHICLE_GROUPS_LIST,
	DPSDK_DATA_GET_VEHICLELIB_RESULT,
	DPSDK_DATA_GET_VEHICLE_INFO,
	DPSDK_DATA_GET_VEHICLE_INFO_BY_PLATE_NO,
	DPSDK_DATA_GET_PAGE_VEHICLES_LIST,
	DPSDK_DATA_LICENSE_LIST,
	DPSDK_DATA_LICENSE_KEY_LIST,
	DPSDK_DATA_LICENSE_DETAIL_LIST,
	DPSDK_DATA_LICENSE_KEY_LIST_FROM_EXPRESS,
	DPSDK_DATA_LICENSE_UPGRADE_ACTIVE_RESULT,

	DPSDK_DATA_LICENSE_ACTIVE_RESULT,
	DPSDK_DATA_LICENSE_EXCEED_INFO,
	DPSDK_DATA_GET_LICENSE_MODULE_USED_INFO,
	DPSDK_DATA_MAIL_TEMPLATE_LIST,
	DPSDK_DATA_DEFINITION_CHANNEL_CAPABILITY_LIST,
	DPSDK_DATA_DEFINITION_STORAGE_POSITION_LIST,
	DPSDK_DATA_DEFINITION_STREAM_TYPE_LIST,
	DPSDK_DATA_DICTIONARY_DATA_LIST,
	DPSDK_DATA_DEFINITION_DEVICE_CATEGORY_LIST,
	DPSDK_DATA_GET_POS_CONFIG_LIST,
	DPSDK_DATA_GET_POS_RECORD_LIST,
	DPSDK_DATA_EXPORT_POS_RECEIPTS,
	DPSDK_DATA_GET_CAR_LIST,
	DPSDK_DATA_GET_OTHER_GROUP_VEHICLES_LIST,
	DPSDK_DATA_GET_OTHER_ENTRANCE_GROUP_VEHICLES_LIST,
		//bay
	//DPSDK_DATA_ITC_SECTION_LIST ,					// Get itc section info A detailed view of the structure DPSDK_ITC_SECTION_LIST
	//DPSDK_DATA_ITC_SECTION_PAGE ,					// Get itc section page A detailed view of the structure DPSDK_SECTION_PAGE_RESULT
	//DPSDK_DATA_ITC_SPOT_LIST ,					// Get itc spot list A detailed view of the structure DPSDK_SPOT_LIST
	//DPSDK_DATA_ITC_SPOT_DETAILED_INFO ,			// get itc spot detatiled info A detailed view of the structure DPSDK_SPOT_DETAILED_INFO	
	//DPSDK_DATA_ITC_SPOT_PAGE_RESULT ,				// get itc spot page result A detailed view of the structure DPSDK_SPOT_PAGE_RESULT
	//DPSDK_DATA_ITC_SPOT_BINDING_CHANNEL_LIST ,	// get itc spot binding channel list A detailed view of the structure DPSDK_CHANNLE_LIST
	//DPSDK_DATA_GET_MAINSUB_GROUP_INFO ,			// Get Main Sub Group A detailed view of the structure DPSDK_GET_MAINSUB_GROUP_INFO

															//Flow
	DPSDK_DATA_BATCHGET_CROSSLINE_RULES ,			// Batch Get Cross Line Rules A detailed view of the structure DPSDK_BATCH_GET_CROSSLINE_RULES_RESULT
	DPSDK_DATA_SYNCHRO_CHANNEL_CROSSLINE_RULES ,	// Get Synchronize Channel Cross Line Rules A detailed view of the structure DPSDK_SYNCHRO_CHANNEL_CROSSLINE_RULES_RESULT
	DPSDK_DATA_GET_FLOW_GROUPS ,                  // Get Get flow groups A detailed view of the structure DPSDK_GET_FLOW_GROUPS_RESULT
	DPSDK_DATA_GET_FLOW_GROUP ,                  // Get Get flow group A detailed view of the structure DPSDK_GET_FLOW_GROUP_RESULT
	DPSDK_DATA_GET_FLOW_GROUP_TEXTS ,             // Get Get flow group A detailed view of the structure DPSDK_GET_GROUP_TEXTS_RESULT
	DPSDK_DATA_GET_GROUP_REALTIME_FLOW ,          // Get Get group realtime flow data of the structure DPSDK_GET_GROUP_REALTIMEFLOW_RESULT
	DPSDK_DATA_GET_FLOW_REPORT_MAIL_CONFIG ,          // Get Report Config of the structure DPSDK_PASSENGER_FLOW_REPORT_INFO
	DPSDK_DATA_GET_CHANNEL_RULES ,				// Get Channnel Rules A detailed view of the structure DPSDK_GET_CHANNEL_RESULT
	DPSDK_DATA_UNABLE_DEL_FLOW_GROUP,			// Get Unable Delete Flow Group
												// Get Resource Group Deta
	DPSDK_DATA_GET_CHANNEL_VOLUMES_RESULT ,
	DPSDK_DATA_SET_CHANNEL_VOLUMES_RESULT ,
	DPSDK_DATA_GET_PASSENGER_FLOW_PAGE_GROUPS_LIST,
	DPSDK_DATA_DOWNLOAD_DETECTION_RECORD_PICTURES,
	DPSDK_DATA_GET_PAGE_MPT_RECORDS_LIST,
	DPSDK_DATA_GET_MPT_RECORD_PICTURE_INFO,
	DPSDK_DATA_GET_DEVICE_RECORD_WHOLENESS_CONFIG,
	DPSDK_DATA_GET_HUMAN_LIST,
	DPSDK_DATA_GET_VEHICLES_LIST,
	DPSDK_DATA_GET_NONVEHICLES_LIST,
	DPSDK_DATA_DOWNLOAD_DEVICEPICTURES,
	DPSDK_DATA_GET_PAGEHUMANS_BY_SESSION,
	DPSDK_DATA_EQUIPMENTORG_INFO,
	DPSDK_DATA_UNREAD_COLLECT_INFO,
	DPSDK_DATA_ABS_SUMMARY_INFO,
	DPSDK_DATA_GET_PAGE_CASE_LIST,
	DPSDK_DATA_GET_CASE_LIS,
	DPSDK_DATA_UPDATE_CASE,
	DPSDK_DATA_GET_CASE_TYPE_LIST,
	DPSDK_DATA_GET_CASE_OPERATE_LOG_LIST,
	DPSDK_DATA_GET_CASE_LOGO_LIST,
	DPSDK_DATA_GET_BATCHUPDATEALARMPLANSTATUS_FAILDDETAILDATA,
	DPSDK_DATA_GET_DADAR_BIND_CAMERA,
	DPSDK_DATA_GET_CASE_LIST,
	DPSDK_MAX_SEARCH_DEVICE_NUM,
	DPSDK_EVENT_ADD_BRIDGE_NOTIFY,
	DPSDK_EVENT_MOD_BRIDGE_NOTIFY,
	DPSDK_EVENT_RESOURCE_LOCATION_NOTIFY,
	DPSDK_EVENT_DEL_BRIDGE_NOTIFY,
	DPSDK_EVENT_PERSON_BATCH_UPDATE_PERSONGROUP,
	DPSDK_EVENT_RELOGIN_RESULT,
	DPSDK_EVENT_USER_EXPIREDEXPRESS,
	DPSDK_UPDATA_DEVICE_UPGRADE_PROGRESS,
	DPSDK_EVENT_EVENT_SOURCE_NOTIFY,
	DPSDK_EVENT_VTCALL_PUBLISH_NOTIFY,
	DPSDK_EVENT_EXTERNA_DATA_SOURSE_CONNECT_ERROR,
	DPSDK_EVENT_USER_EXPIREDPRO,
	DPSDK_EVENT_UPDATE_ATT_AUTO_SYNC_RULE,
	DPSDK_EVENT_SYNC_OFFLINE_ATT_RECORD,
	DPSDK_UPDATA_DEVICESTORAGEPOSITION,
	DPSDK_DATA_GET_REDUCE_PERSON_LIST,
	DPSDK_DATA_GET_ACCESSCONTROL_RULE_LIST,
	DPSDK_DATA_ADD_CARDPERSON_LIST,
	DPSDK_DATA_ADD_CARD_RIGHT,
	DPSDK_DATA_ADD_RULE_RES,
	DPSDK_DATA_UPDATE_RULE_RES,
	DPSDK_DATA_GET_FAIL_TASK_LIST,
	DPSDK_DATA_EXTRACT_INFRAED_FACE_INFO,
	DPSDK_DATA_ADD_CARPERSON_LIST,
	DPSDK_DATA_UPDATE_CAR_PERSON,
	DPSDK_DATA_EXTRACT_SINGLE_INFO,
	DPSDK_DATA_GET_CUSTOMATTRIBUTE_LIST,
	DPSDK_DATE_GET_PERSONLISTE,
	DPSDK_DATA_PEOPLECOUNT_DEVRULE_LIST,
	DPSDK_DATA_GET_PERSON_FAILURE_INFOS_LIST,
	DPSDK_DATA_GET_ATTENDANCE_AUTOMATICSYNC_RULE,
	DPSDK_DATA_GET_ELEVATORGLOBAL_CHANNEL,
	DPSDK_DATA_BATCH_ADD_CARDS_REPEAT_LIST,
	DPSDK_DATA_GET_ELEVATORGLOBAL_CHANNELS,
	DPSDK_DATE_GET_PERSONLISTEX,
	DPSDK_DATA_GET_TOUR_DIC_INFO,
	DPSDK_DATA_ADD_TOUR_EVENT,
	DPSDK_DATA_SET_TOUR_RUN,
	DPSDK_DATA_ABS_INFO_TIME,
	DPSDK_DATA_GET_SPARE_BEHAVIOR_INFO,

	DPSDK_DATA_GET_TASK_LIST,
	DPSDK_DATA_GET_TASK_BYID,

	DPSDK_DATA_GET_ILLEGAL_SNAPSHOT_RECORD_GLOBAL_CONFIG,
	DPSDK_DATA_QUERY_ILLEGALSNAPSHOTRECORD_PAGE_INFO,
	DPSDK_DATA_QUERY_ILLEGALSNAPSHOTRECORD_INFO,
	DPSDK_DATA_UPLOAD_ILLEGALSNAPSHOTRECORD_PIC,
	DPSDK_DATA_GET_ILLEGAL_SNAPSHOT_RECORD_DIC,
	DPSDK_DATA_USER_LICENSE_INFO,
	DPSDK_DATA_ALARM_PROCESS_RECORD,						// alarm process record
	DPSDK_DATA_GET_HNMANPAGE_BY_PICTURE,					// Get human page by picture detailed view of the structure DPSDK_HUMANPAGE_BYPIC_RESULT
	DPSDK_DATA_GET_PAGE_PLANS,								// detailed view of the structure DPSDK_INSPECT_PAGE_PLANS
	DPSDK_DATA_GET_PLAN_PROGRESS,
	DPSDK_DATA_GET_PROBRECORD_DETAIL_LIST,					// Get list of probrecord detailed view of the structure DPSDK_GET_PROBRECORD_DETAIL_LIST
	DPSDK_DATA_GET_PROBRECORD_LIST,							// Get list of probrecord detailed view of the structure DPSDK_GET_PROBRECORDS_RESULT
	DPSDK_DATA_GET_PROBSCANRECORD_LIST,						// Get list of probscanrecord detailed view of the structure DPSDK_GET_PROBSCANRECORDS_RESULT
	DPSDK_DATA_GET_DEPARTMENT_AUTHORIZE,					// Get card user A detailed view of the structure DPSDK_CARD_INFO
	DPSDK_DATA_GET_DOORGROUPDEP_AUTHORIZE_LIST,				// Get door group department authorize list A detailed view of the structure DPSDK_GET_DOORGROUP_DEP_AUTHORITY_RESULT
	DPSDK_DATA_GET_FAIL_RULE_TASK_LIST,						// Get Fail rule tasks A detailed view of the structure DPSDK_ISSUE_RULE_FAIL_TASKS
	DPSDK_DATA_GET_PERSONPIC_LIST,							// Get the picture of person by batch A detailed view of the structure DPSDK_PERSONPIC_LIST
	DPSDK_DATA_GET_CARD_PERSON,								// Get card user A detailed view of the structure DPSDK_CARD_INFO
	DPSDK_DATA_GET_DEPARTMENT_TREE,							// Get user tree of card A detailed view of the structure DPSDK_DEPARTMENT_TREE_INFO
	DPSDK_DATE_GET_PERSONLIST,								// Get list of card user A detailed view of the structure DPSDK_CARD_LIST
	DPSDK_DATA_GET_ALARM_ENTRANCE_INFO,						// Get Etrance Alarm detailed view of the structure DPSDK_ALARM_GET_ENTRANCE_INFO
	DPSDK_DATA_GET_SNMP_LIST,								// Get snmp manu list
	DPSDK_DATA_GET_TRACKING_POINTS_INFO,					// Get tracking points info
	DPSDK_DATA_CARE_LICENSE_ACTIVE_RESULT,					// Care License Active Result
	DPSDK_DATA_LICENSE_REACTIVE_RESULT,						// License ReActive Result
	DPSDK_DATA_ABS_LIFE_CYCLE,								// Get life cycle of abstract picture A detailed view of the structure DPSDK_ABSTRACT_LIFE_CYCLE_LIST
	DPSDK_DATA_UPDATE_COVER_INFO							// Add/Update cover Info
}DPSDK_DATA_TYPE;

//操作权限类型
#define DPSDK_OPERATE_CONTROL_PTZ_SETING		"2"    //云台控制权限
#define DPSDK_OPERATE_CONTROL_PRESET_SETING		"2-1"  //预置点设置权限
#define DPSDK_OPERATE_CONTROL_CRUISE_SETING		"2-2"  //巡航设置权限
#define DPSDK_OPERATE_CONTROL_TALK              "3"    //对讲权限
#define DPSDK_OPERATE_CONTROL_SNAPSHOT		    "4"    //抓图权限
#define DPSDK_OPERATE_CONTROL_RECORDDOWNLOAD	"7"    //录像下载权限
#define DPSDK_OPERATE_CONTROL_MANUALRECORD		"8"    //手动录像权限
// User status
typedef enum
{
	USER_OFFLINE,			// Offline
	USER_ONLINE,			// Online
}DPSDK_USER_STATUS;
typedef enum
{
	SERVER_SYSTEM_BASE			= 0,
	SERVER_SYSTEM_FACE,
	SERVER_SYSTEM_ACCESS,
	SERVER_SYSTEM_PERSON_CARD,
	SERVER_SYSTEM_ALARM_HOST,
	SERVER_SYSTEM_VEHICLE,
	SERVER_SYSTEM_EMAP,
	SERVER_SYSTEM_PSIB,
	SERVER_SYSTEM_AR,
	SERVER_SYSTEM_VIDEOEX,
	SERVER_SYSTEM_MOBILE_VEHICLE,
	SERVER_SYSTEM_MSP,
	SERVER_SYSTEM_COMMON,
	SERVER_SYSTEM_CloudDisks,
	SERVER_SYSTEM_AR_BACK,
	SERVER_SYSTEM_RAS,
	SERVER_SYSTEM_ALARMPROCESS,
	SERVER_SYSTEM_BRMS,
	SERVER_SYSTEM_OTMS,
	SERVER_SYSTEM_ECOS,
	SERVER_SYSTEM_EMAP_EX,
	SERVER_SYSTEM_OTMS_EX,
	SERVER_SYSTEM_OBMS_EX,
	SERVER_SYSTEM_IPMS_EX,
	SERVER_SYSTEM_OMMS,
	SERVER_SYSTEM_CFGS,
	SERVER_SYSTEM_IAMS,
	SERVER_SYSTEM_ERMS,
	SERVER_SYSTEM_TOUR,
	SERVER_SYSTEM_DETECT,
	SERVER_SYSTEM_COUNT,
}DPSDK_SERVER_SYSTEM;

typedef enum 
{
	SERVER_MOD_UNKNOW		= 0,			// 未知
	SERVER_MOD_VSL			= 1,			// 云视频服务
	SERVER_MOD_PRO			= 2,			// PRO服务
	SERVER_MOD_EXPRESS		= 3,			// DSS Express
	SERVER_MOD_4004S2		= 4,			// DSS 4004S2
	SERVER_MOD_EVO			= 5,			// EVO
	SERVER_MOD_ONEBOX		= 6,			// OneBox
}DPSDK_SERVER_MOD;

typedef enum 
{
	EVENT_RABBITMQ			= 0,		// rabbitMQ
	EVENT_HTTPQUEUE		= 1,			// HTTP
	EVENT_WEBSOCKET		= 2,			//websocket
}RESTSVR_EVENT_TYPE;

typedef enum
{
	ENCRYPT_OLD_AES128		=0,				//老的加密方式，AES128，秘钥写死
	ENCRYPT_NEW_CBC256		=1,				//新的加密方式，AES CBC256，秘钥通过接口RSA加密传输
}DPSDK_ENCRYPT_MOD;

typedef enum {
	DPSDK_INTELLI_NONE = 0,											// No abstract
	DPSDK_INTELLI_ABSTRACT = 0x1,									// Video abstract
}DPSDK_CHANNEL_INTELLI_STATE;

// Decode display callback
typedef struct  
{
	DPSDK_LONG			lPort;		// Channel code
	DPSDK_CHAR*			pBuf;		// The data of returned image
	DPSDK_LONG			lSize;		// User data
	DPSDK_LONG			lWidth;		// Image width, unit:pixel
	DPSDK_LONG			lHeight;	// Image height
	DPSDK_LONG			lStamp;		// The information of time scale, unit:ms
	DPSDK_LONG			lType;		// Data type,T_RGB32,T_UYVY
	DPSDK_LONG			lFrameRate;	// Frame rate
	DPSDK_LONG			lFrameNo;	// Frame number
}DPSDK_VISIBLEDEC;

typedef struct
{
	DPSDK_INT32 		x;
	DPSDK_INT32 		y;
	DPSDK_INT32			xSize;
	DPSDK_INT32			ySize;
}DPSDK_IVSTRACK_POINT;

typedef struct
{
	DPSDK_INT32				iFrameType;				// Video frame type, 0 for video frame, 1 for audio frame
	DPSDK_LPVOID			pAudioData;				// Audio data, if it is an audio frame
	DPSDK_INT32				iAudioDataLen;			// Audio data length
	DPSDK_LPVOID			pVideoData[3];			// Three components of YUV representing video respectively
	DPSDK_INT32				iStride[3];				// Represents the span of three components of YUV
	DPSDK_INT32				iWidth[3];				// Width the span of three components of YUV
	DPSDK_INT32				iHeight[3];				// Height the span of three components of YUV
}DPSDK_DEC_DATA;

typedef struct 
{
	DPSDK_INT32				iFrameType;				// Video frame type, 0 for video frame, 1 for audio frame
	DPSDK_INT32				iFrameSeq;				// Frame sequence number
	DPSDK_INT32				iStamp;					// Time symbol information. Unit is ms
	DPSDK_INT32				iWidth;					// Image width, unit is pixel. It is 0 if it is audio data,
	DPSDK_INT32 			iHeight;				// Image height. It is 0 if it is audio data.
	DPSDK_INT32				iFrameRate;				// Image frame bit when encoding.
	DPSDK_INT32				iChannels;				// Number of audio channels
	DPSDK_INT32				iBitPerSample;			// Audio sampling bits
	DPSDK_INT32				iSamplesPerSec;			// Audio sampling frequency
	DPSDK_INT32				iRemainData;			// Buffer residual quantity
	DPSDK_TIMET				tDataTime;				// Time
	DPSDK_INT32				iFrameSubType;			// Video frame subtype, 0 for I frame, 1 for P frame, 2 for B frame
}DPSDK_FRAME_INFO;

//////////////////////////////////////////////////////////////////////////
/*
 *	Callback interface definition
 */
/**
 * @brief	Event callback function.
 * @param	[IN] iEventType		Event type
 * @param	[IN] pEventBuf		Event buffer
 * @param	[IN] uiBufSize		Event buffer size
 * @param	[IN] pUserData		User data
 * @return
 */
typedef DPSDK_VOID (DPSDK_CALL * EventCallBack)(DPSDK_INT32 iEventType, 
                                                DPSDK_VOID* pEventBuf, 
                                                DPSDK_UINT32 uiBufSize, 
                                                DPSDK_VOID* pUserData); 

/**
 * @brief	Range callback definition.
 * @param	[IN] pEventBuf	Event buffer
 * @param	[IN] uiBufSize	Event buffer size
 * @param	[IN] pUserData	User data
 * @return
 */
typedef DPSDK_VOID (DPSDK_CALL * RangeCallBack)(DPSDK_VOID* pEventBuf, 
                                                DPSDK_UINT32 uiBufSize, 
                                                DPSDK_VOID* pUserData); 

/**
 * @brief	Event callback function.
 * @param	[IN] szMethod		notify Event Method
 * @param	[IN] jsonInfo		Event JsonInfo
 * @param	[IN] dataLen		Event JsonInfo size
 * @param	[IN] pUserData		User data
 * @return
 */
typedef DPSDK_VOID (DPSDK_CALL * EventCallBackEx)(const DPSDK_CHAR* szMethod, 
												  const DPSDK_CHAR* jsonInfo,
												  DPSDK_UINT32 dataLen,
                                                  DPSDK_VOID* pUserData);

/**
 * @brief	Data sync callback function. Used for upper level data copy.
 * @param	[IN] iDataType		Data type. For details, see DPSDK_DATA_TYPE definition.
 * @param	[IN] pDataBuf		Data buffer. 
 * @param	[IN] uiBufSize		Data size
 * @param	[IN] pUserData		User data
 * @return
 */
typedef DPSDK_VOID(DPSDK_CALL * DPSDK_DataCallback)(DPSDK_INT32 iDataType, 
													DPSDK_VOID* pDataBuf, 
													DPSDK_UINT32 uiBufSize, 
													DPSDK_VOID* pUserData);

/**	
 * @brief	Fisheye Data Callback Function
 * @param [OUT] uszCorrectMode		Correction Mode
 * @param [OUT] uRadius				Radius [0,8192)
 * @param [OUT] uCircleX				Abscissa of Circle Center
 * @param [OUT] uCircleY				Ordinate of Circle Center
 * @param [OUT] uWidthRatio			Width Ratio
 * @param [OUT] uHeigthRatio			Height Ratio
 * @param [OUT] uszGain				Gain
 * @param [OUT] uszDenoiseLevel		Noise Reduction Level
 * @param [OUT] uszInstallStyle		Fisheye Installation Type
 * @param [OUT] pUserData			User Data
 * @return
 */
typedef DPSDK_VOID (DPSDK_CALL *DPSDK_FISHEYE_CALLBACK)(DPSDK_UCHAR uszCorrectMode,
														DPSDK_USHORT uRadius,
													    DPSDK_USHORT uCircleX,
														DPSDK_USHORT uCircleY,
														DPSDK_UINT32 uWidthRatio,
														DPSDK_UINT32 uHeigthRatio,
														DPSDK_UCHAR uszGain,
														DPSDK_UCHAR uszDenoiseLevel,
														DPSDK_UCHAR uszInstallStyle,
														DPSDK_LPVOID pUserData);

/**	
 * @brief	Video Drawing Callback Function
 * @param [IN] iPort		port
 * @param [OUT] hDc			Drawing Handle
 * @param [OUT] pWnd			Window Handle
 * @param [OUT] pUserData	User Data
 * @return
 */
typedef DPSDK_VOID (DPSDK_CALL* DPSDK_DRAW_BY_PORT_CALLBACK)(int iPort, 
													 HCWND pWnd, 
													 DPSDK_LPVOID pUserData);
/**	
 * @brief	Video Drawing Callback Function
 * @param [OUT] hDc			Drawing Handle
 * @param [OUT] pWnd			Window Handle
 * @param [OUT] iFrameNumber	Frame Number
 * @param [OUT] pUserData	User Data
 * @return
 */
typedef DPSDK_VOID (DPSDK_CALL* DPSDK_DRAW_CALLBACK)(DPSDK_HDC hDc, 
													 HCWND pWnd, 
													 DPSDK_INT32 iFrameNumber,
													 DPSDK_LPVOID pUserData);

/**
* @brief	Video Render Callback Function
* @param [OUT] pRenderhandle	RenderDrawing Handle
* @param [OUT] pWnd			Window Handle
* @param [OUT] iFrameNumber	Frame Number
* @param [OUT] pUserData	User Data
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_DRAW_RENDER_CALLBACK)(void* pRenderhandle,
	HCWND pWnd,
	DPSDK_INT32 iFrameNumber,
	DPSDK_LPVOID pUserData);
	
/**	
 * @brief	Data Callback Function after Source Data Analysis
 * @param [OUT] pUserData	User Data
 * @param [OUT] iEncode		MPEG4, H264, STDH264
 * @return
 */
typedef DPSDK_VOID (DPSDK_CALL* DPSDK_DEMUXDEC_CALLBACK)(DPSDK_LPVOID pUserData, 
														 DPSDK_INT32 iEncode);

/**
* @brief	Data Callback Function after Source Data Analysis
* @param [OUT] pUserData	User Data
* @param [OUT] iEncode		MPEG4, H264, STDH264
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_DEMUXDEC_CALLBACKEX)(DPSDK_LPVOID pUserData,
														DPSDK_TIMET iFrameTime,
														DPSDK_INT32 iEncode,
														DPSDK_BOOL bIFrame,
														DPSDK_INT32 iSubtype);

/**
* @brief	Data Callback Function after Source Data Analysis
* @param [OUT] pUserData	User Data
* @param [OUT] iAudioFrameTime	Audio Frame Time
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_AUDIOFRAMETIME_CALLBACK)(DPSDK_LPVOID pUserData,
														DPSDK_TIMET iAudioFrameTime);

typedef DPSDK_VOID(DPSDK_CALL * DPSDK_DataPassThroughCallback)(DPSDK_INT32 iSessionID,
															   DPSDK_INT32 iDataType,
															   DPSDK_INT32 iHttpCode,
															   DPSDK_CHAR* pDataBuf, 
															   DPSDK_UINT32 uiBufSize,
															   DPSDK_VOID* pUserData);

/**
* @brief	Media Stream Callback Function
* @param	[IN] iMediaType Corresponding Business of Media Stream
* @param	[IN] pData		Media Stream Data
* @param	[IN] iDataLen	Data Length
* @param	[IN] pUserParam	User Parameter
* @return	Returned value is 0 in case of success
*/
typedef DPSDK_INT32 (DPSDK_CALL* DPSDK_REALDATA_CALLBACK)(DPSDK_INT32 iMediaType, 
														  DPSDK_CHAR* pData, 
														  DPSDK_INT32 iDataLen,
														  DPSDK_VOID* pUserParam);

/**
 * @brief	Callback Function of Playback on TV Wall
 * @param	[IN] pData		Media Stream Data
 * @param	[IN] iDataLen	Data Length
 * @param	[IN] pUserParam	User Parameter
 * @return	Returned value is 0 in case of success
 */
typedef DPSDK_INT32(DPSDK_CALL* DPSDK_TVWALL_PLAYBACK_CALLBACK)(DPSDK_CHAR* pData,
																DPSDK_INT32 iDataLen,
																DPSDK_VOID* pUserParam);

/**
 * @brief	Media Event Callback Function
 * @param	[IN] iEventType		 Event Type
 * @param	[IN] iMediaSessionID Media Session ID
 * @param	[IN] pUserParam		 User Parameter
 * @return	Returned value is 0 in case of success
 */
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_EVENT_CALLBACK)(DPSDK_INT32 iEventType,
													 DPSDK_INT32 iEventSubType,
													 DPSDK_INT32 iMediaSessionID,
													 DPSDK_VOID* pUserParam);

/**
 * @brief	Record Event Callback Function
 * @param	[IN] iEventType		 Event Type
 * @param	[IN] iMediaSessionID Media Session ID
 * @param	[IN] pData			 The information of record callback, see DPSDK_DOWNLOAD_NOTIFY
 * @param	[IN] pUserParam		  User Parameter
 * @return	Returned value is 0 in case of success
 */
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_EVENT_DOWNLOAD_CALLBACK)(DPSDK_INT32 iEventType,
															  DPSDK_INT32 iMediaSessionID,
															  DPSDK_VOID* pData, 
															  DPSDK_VOID* pUserParam);
															  
/**
* @brief	Range Event Callback Function
* @param	[IN] iMediaSessionID Media Session ID
* @param	[IN] pUserParam		 User Parameter
* @param	[OUT] fBegTime,fEndTime
* @return	Returned value is 0 in case of success
*/
typedef DPSDK_VOID (DPSDK_CALL *DPSDK_PLAYBACKRANGE_CALLBACK)(DPSDK_INT32 iMediaSessionID,
															  DPSDK_DOUBLE fBegTime, 
															  DPSDK_DOUBLE fEndTime,
															  DPSDK_LPVOID pUserData);

/**
 * @brief	Event callback function.
 * @param	[IN] iEventType		Event type
 * @param	[IN] pEventBuf		Event buffer
 * @param	[IN] uiBufSize		Event buffer size
 * @param	[IN] pUserData		User data
 * @return
 */
typedef DPSDK_VOID (DPSDK_CALL * DPSDK_PLAYBACKEVENT_CALLBACK)(DPSDK_INT32 iEventType, 
                                                DPSDK_VOID* pEventBuf, 
                                                DPSDK_UINT32 uiBufSize, 
                                                DPSDK_VOID* pUserData); 

/**
* @brief	Event callback function.
* @param	[IN] iEventType		Event type
* @param	[IN] pEventBuf		Event buffer
* @param	[IN] uiBufSize		Event buffer size
* @param	[IN] pUserData		User data
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL * DPSDK_PLAYBACKENC_CALLBACK)(DPSDK_INT32 iEventType,
	DPSDK_INT32 iWidth,
	DPSDK_INT32 iHeight,
	DPSDK_VOID* pUserData);



/**
 * @brief	Local Record Event Callback Funciton
 * @param	[IN] iEventType		 Event Type
 * @param	[IN] iMediaSessionID Media Session ID
  * @param	[IN] pData			 callback data
 * @param	[IN] pUserParam		 User Parameter
 * @return	Returned value is 0 in case of success
 */
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_EVENT_LOCALPLAY_CALLBACK)(DPSDK_INT32 iEventType,
															   DPSDK_INT32 iMediaSessionID,
															   DPSDK_VOID* pData,
															   DPSDK_VOID* pUserParam);

/**
 * @brief	IVS Data Callback Funciton
 * @param	[IN] pData		Media Stream Data
 * @param	[IN] iDataLen	Data Length
 * @param	[IN] lRealLen	Real Length
 * @param	[IN] pReserved	Reserved Param
 * @param	[IN] pUserData		 User Data
 * @return	Returned value is 0 in case of success
 */
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_IVSDATA_CALLBACK)(DPSDK_CHAR* pData,
													   DPSDK_LONG lType,
													   DPSDK_LONG lDateLen,
													   DPSDK_LONG lRealLen,
													   DPSDK_VOID* pReserved,
													   DPSDK_VOID* pUserData);

/**	
* @brief yisuo or sansuo attestation results  Callback Function
* @param [OUT] hDc			Drawing Handle
* @param [OUT] pWnd			Window Handle
* @param [OUT] bSuccess		attestation state
* @param [OUT] pUserData	User Data
* @return
*/
typedef DPSDK_VOID (DPSDK_CALL* DPSDK_ATTESTATION_CALLBACK)(DPSDK_HDC hDc, 
															HCWND pWnd,
															DPSDK_BOOL bSuccess, 
															DPSDK_LPVOID pUserData);

/**
* @param	[IN] pData	osd info,DPSDK_DECINFO
*/
typedef DPSDK_VOID (DPSDK_CALL* DPSDK_DECINFO_CALLBACK)(DPSDK_VOID* pData,
														DPSDK_VOID* pUserParam);

/**
* @brief	Dec Data Callback Funciton
* @param	[IN] pData		Visible Dec Data
* @param	[IN] uiBufLen	Data Length
* @param	[IN] pUserData		 User Data
* @return	Returned value is 0 in case of success
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_VISIBLEDEC_CALLBACK)(DPSDK_VISIBLEDEC* pData,
														  DPSDK_UINT32 uiBufLen,
														  DPSDK_VOID* pUserData);
														  												
/**
* @brief	IVS Translate Callback Funciton
* @param	[IN] strSrc		Source String Data
* @param	[IN] nSrsLen	Source String Length
* @param	[OUT] strDst	Real Length
* @param	[OUT] nDstLen	Reserved Param
* @param	[IN] pUserData	User Data
* @return	
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_IVSTRANSLATE_CALLBACK)(DPSDK_UCHAR* pSrc,
															DPSDK_INT32 uiSrsLen,
															DPSDK_UCHAR* pDst,
															DPSDK_INT32* uiDstLen,
															DPSDK_VOID* pUserData);

/**
* @brief	IVS Translate Callback Funciton
* @param	[OUT] nClassID	Bussiness Category
* @param	[OUT] nObjID	Object Id
* @param	[OUT] pPoints	Target trajectory point coordinates
* @param	[OUT] nPointNum	Target trajectory point number
* @param	[IN] pUserData	User Data
* @return	
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_DRAWONETRACK_CALLBACK)(DPSDK_INT32 nClassID,
															DPSDK_INT32 nObjID, 
															DPSDK_INT32 nOperatorType, 
															DPSDK_INT32 nObjType, 
															DPSDK_IVSTRACK_POINT* pPoints,
															DPSDK_INT32 nPointNum,
															DPSDK_VOID* pUserData);

/**	
 * @brief	Data Callback Function after Decoding
 * @param [OUT] struDecData	decode info
 * @param [OUT] struFrameInfo	frame info
 * @param [OUT] pUserData	User Data
 * @return
 */
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_DEC_CALLBACK)(DPSDK_DEC_DATA struDecData,
													DPSDK_FRAME_INFO struFrameInfo,
													DPSDK_LPVOID pUserData);

/**	
 * @brief	Fisheye param Callback Function
 * @param [OUT] iState
 * @param [OUT] iParam1	
 * @param [OUT] iParam2	
 * @param [OUT] bParam
 * @param [OUT] pUserData	User Data
 * @return
 */
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_FISHEYE_PARAM_CALLBACK)(DPSDK_INT32 iState,
															 DPSDK_INT32 iParam1,
															 DPSDK_INT32 iParam2,
															 DPSDK_BOOL bParam,
															 DPSDK_LPVOID pUserData);

typedef DPSDK_VOID (DPSDK_CALL *DPSDK_PLAYBACKRANGE_CALLBACK)(DPSDK_INT32 iMediaSessionID,
															  DPSDK_DOUBLE fBegTime, 
															  DPSDK_DOUBLE fEndTime,
															  DPSDK_LPVOID pUserData);


/**	
 * @brief	Draw rule result Callback Function
 * @param [OUT] bResult
 * @param [OUT] szJson	
 * @param [OUT] iLen	
 * @param [OUT] pUserData	User Data
 * @return
 */
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_COMPLETEDRAWRULERESULT_CALLBACK)(DPSDK_BOOL bResult,
															 DPSDK_CHAR* szJson,
															 DPSDK_UINT32 iLen,
															 DPSDK_LPVOID pUserData);

/**
 * @brief	Picture Data Callback Function
 * @param	[IN] iSession		 Returned Session of Corresponding Request
 * @param	[IN] pData			 Picture Stream Data
 * @param	[IN] iDataLen		 Data Length
 * @param	[IN] pUserParam		 User Parameter
 * @param	[IN] iPicEventType	 Picture Event Type
 * @return	Returned value is 0 in case of success
 */
typedef DPSDK_INT32(DPSDK_CALL *DPSDK_PICDATA_CALLBACK)(DPSDK_INT32 iSession, 
														DPSDK_CHAR* pData, 
														DPSDK_INT32 iDataLen, 
														DPSDK_LPVOID pUserParam, 
														DPSDK_INT32 iPicEventType);

/**
* @brief	Dispatch main thread Callback Function
* @param [OUT] pData		Data
* @param [OUT] pUserData	User Data
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_DISPATCHMAINTHREAD_CALLBACK)(DPSDK_LPVOID pData, DPSDK_LPVOID pUserData);
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_DISPATCHMAINTHREAD)(DPSDK_DISPATCHMAINTHREAD_CALLBACK cb, DPSDK_BOOL bSync, DPSDK_LPVOID pCBData, DPSDK_LPVOID pCBUserData, DPSDK_LPVOID pUserData);

/**
* @brief	IVS Data Callback Funciton
* @param	[IN] pData		Media Stream Data
* @param	[IN] iDataLen	Data Length
* @param	[IN] lRealLen	Real Length
* @param	[IN] pReserved	Reserved Param
* @param	[IN] pUserData		 User Data
* @return	Returned value is 0 in case of success
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_MEDIAPROCESS_IVSDATA_CALLBACK)(DPSDK_CHAR* pData,
																	DPSDK_LONG lType,
																	DPSDK_UINT32 lDateLen,
																	DPSDK_VOID* pUserData);

typedef enum{
	DPSDK_LOGIN_NORMAL = 0,			// 普通登录
	DPSDK_LOGIN_HW_NORMAL = 1,		//普通登录
	DPSDK_LOGIN_HW_SITE = 2,				//多站点
	DPSDK_LOGIN_FACE = 3,			// 人脸+用户名密码混合认证
	DPSDK_LOGIN_PKI = 5,			// PKI认证
	DPSDK_LOGIN_FACEANDPKI = 6,		// 人脸和PKI混合认证
	DPSDK_LOGIN_GMCERT = 99,		// GM登录（35114大华登录）
	DPSDK_LOGIN_JDZYPKI = 100,		// 吉大正元PKI登录
	DPSDK_LOGIN_PKIEX = 101,		// 公安三所PKI登录
	DPSDK_LOGIN_POLICENUM = 102,	// 警员号登录
	DPSDK_LOGIN_FRI = 103,			// 35114C公安一所登录
	DPSDK_LOGIN_TRI = 104,			// 35114C公安三所登录
	DPSDK_LOGIN_QRCODE = 201,		// 二维码登录
	DPSDK_LOGIN_TOKEN = 301,			//token登录
}DPSDK_LOGIN_TYPE;

typedef enum
{
	DEVICE_PROTOCOL_TYPE_DAHUA = 1,									// Dahua protocol
	DEVICE_PROTOCOL_TYPE_ONVIF = 2,									// Onvif protocol
	DEVICE_PROTOCOL_TYPE_HIKVISION = 3,								// HIKVISION protocol
	DEVICE_PROTOCOL_TYPE_JIUZHOU = 4,								// JIUZHOU protocol
}DPSDK_DEVICE_PROTOCOL_TYPE;

typedef enum
{
	DEVICE_STATUS_TYPE_ALL = 1,										// 
	DEVICE_STATUS_TYPE_MANAGED = 2,									// 
	DEVICE_STATUS_TYPE_UNMANAGED = 3,								// 
}DPSDK_DEVICE_STATUS_TYPE;


// Unit Type
typedef enum
{
	// http://icc-wiki.dahuatech.com/web/#/2/21592
	DEV_UNIT_UNKOWN,												// 未知
	DEV_UNIT_ENC,													// 编码
	DEV_UNIT_DEC,													// 解码
	DEV_UNIT_ALARMIN,												// 报警输入
	DEV_UNIT_ALARMOUT,												// 报警输出
	DEV_UNIT_TVWALLIN,												// TvWall输入
	DEV_UNIT_TVWALLOUT,												// TvWall输出
	DEV_UNIT_DOORCTRL,												// 门禁
	DEV_UNIT_VOICE,													// 对讲
	DEV_UNIT_PE = 10,					         // 动环PE,原来叫做PE=>power environment(动力环境)
	DEV_UNIT_POS = 11,
	DEV_UNIT_VIRTUAL = 12,					// 虚拟单元 针对智能服务器、雷达等没有通道概念的设备
	DEV_UNIT_ROADGATE = 14,					// 道闸
	DEV_UNIT_CVI,
	DEV_UNIT_LED = 16,					// LED
	DEV_UNIT_ALARMBOX = 17,
	DEV_UNIT_AUDIOLIGHT						= 18,					// Audio Light
	DEV_UNIT_CAR_DETECT = 19,                // 	车位探测通道
	DEV_UNIT_OUT_EXPORT = 20,					// 外设输出通道
	DEV_UNIT_EAS							= 21,					// EAS通道（单元）
	DEV_UNIT_SIRENOUT						= 22,					// 警号输出通道
	DEV_UNIT_IPSPEAKER						= 23,					// IP_Speaker Audio Unit
	DEV_UNIT_UVSS							= 24,					// UVSS通道（单元）
	DEV_UNIT_GATE							= 25,					// 闸机单元通道
	DEV_UNIT_AIR_SWITCH                     = 26,                   // Air switch channel
	DEV_UNIT_SPCAE							= 27,					// Parking lot ,海外之前是20注意
	DEV_UNIT_BOX_ALARMOUT					= 28,					// 报警盒子输出通道（单元）,海外之前是26注意
	DEV_UNIT_DISPATCHER						= 33,					// Dispatcher
	DEV_UNIT_EVENT_DETETOR					= 38,					// Event Detetor
	DEV_UNIT_ELEVATOR						= 50,					// Elevator control	
	DEV_UNIT_SONAR							= 56,					// Sonar Channel
	DEV_UNIT_LORA							= 63,					// Lora Channel
}DPSDK_DEV_UNIT_TYPE;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Person ID
}DPSDK_PERSON_ID;

// Channel code
typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];							// Channel id
}DPSDK_ID;

// Channel code
typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];							// Channel id
}DPSDK_CHANNEL_ID;

// Device code
typedef struct
{
	DPSDK_CHAR szId[DPSDK_DEVICE_CODE_LEN];							// Device id
}DPSDK_DEVICE_ID;

typedef struct  
{
	DPSDK_CHAR szChnlId[DPSDK_CHANNEL_ID_LEN];            //Channel Code
}DPSDK_CHANNEL_ID_INFO;

// Id and name information
typedef struct  
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
}DPSDK_BASE_ID_INFO;

typedef struct  
{	
	DPSDK_CHAR szName[DPSDK_NAME_LEN];
}DPSDK_BASE_NAME_INFO;

typedef struct  
{	
	DPSDK_CHAR szHtpUrl[DPSDK_URL_LEN];
}DPSDK_BASE_URL_INFO;

typedef struct
{
	DPSDK_CHAR szID[DPSDK_ID_LEN];				                
}DPSDK_RECORD_ID;

typedef struct  
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szName[DPSDK_NAME_LEN];
}DPSDK_BASE_ID_NAME_INFO;

typedef struct
{
	DPSDK_INT32					iNum;
	DPSDK_BASE_ID_NAME_INFO*	pList;
}DPSDK_BASE_ID_NAME_LIST;

// Menu information
typedef struct
{
	DPSDK_CHAR szMenuRight[DPSDK_MEMURIGHT_LEN];					// Menu right information
	DPSDK_CHAR szSystemCode[DPSDK_MEMURIGHT_LEN];					// Menu sub system code 
}DPSDK_MENU_RIGHT;

typedef struct  
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];
}DPSDK_NAME;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];									// ID
}DPSDK_GENERAL_ID;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN_EX];
}DPSDK_READ_ID;

typedef struct
{
	DPSDK_INT32 iIdNum;
	DPSDK_ID* pIdList;
}DPSDK_ID_LIST;

typedef struct
{
	DPSDK_INT32 iIdNum;
	DPSDK_GENERAL_ID* pIdList;
}DPSDK_GENERAL_ID_LIST;

typedef struct 
{
	DPSDK_CHAR szXOperateCode[DPSDK_MEMURIGHT_LEN];
	DPSDK_CHAR szXOperateName[DPSDK_NAME_LEN];
}DPSDK_BASE_PARAM;

typedef enum
{
	DPSDK_PLATFORM_TYPE_NONE = 0,
	DPSDK_PLATFORM_TYPE_HW,					//海外PRO
	DPSDK_PLATFORM_TYPE_ICC,						//企业ICC
	DPSDK_PLATFORM_TYPE_GA						//政府公安
}DPSDK_PLATFORM_TYPE;

//==============HW AR====================
#define DPSDK_CLIENT_VERSION_LEN (1024)
#define DPSDK_CLIENTROAD_LEN     (2*1024)
#define DPSDK_RSAENCRYPTKE_LEN	 (2*1024)
#define DPSDK_AESKEY_LEN		 (2*1024)
#define DPSDK_SECRETVECTOR_LEN   (2*1024)

typedef struct//used by login failed
{
	DPSDK_INT32 iRet;
	DPSDK_INT32 iUnlockRemainTime;					// Remaining time of unlocking
	DPSDK_INT32 iUnlockRemainTimes;
}DPSDK_RELOGIN_RET;

typedef struct
{
	DPSDK_CHAR						szUserId[DPSDK_USER_ID_LEN];				// User ID
	DPSDK_CHAR						szGroupId[DPSDK_USER_ID_LEN];
	DPSDK_CHAR						szClientVerision[DPSDK_USER_ID_LEN];
	DPSDK_CHAR						szClientRoad[DPSDK_CLIENTROAD_LEN];
	DPSDK_USHORT					usEmaphHttpPort;						   //emap HTTP port
	DPSDK_CHAR						szResourceToken[DPSDK_TOKEN_LEN];
	DPSDK_CHAR						szProtocalRsaEncryptKey[DPSDK_RSAENCRYPTKE_LEN];
	DPSDK_INT32						iProtocalEncryptMod;
	DPSDK_CHAR						szProtocaAesKey[DPSDK_AESKEY_LEN];
	DPSDK_CHAR						szProtocaSecretVector[DPSDK_SECRETVECTOR_LEN];
	DPSDK_CHAR						szClientAesKey[DPSDK_AESKEY_LEN];
	DPSDK_CHAR					    szClientSecretVector[DPSDK_SECRETVECTOR_LEN];
}DPSDK_AR_PARAM;

typedef struct
{
	DPSDK_CHAR		szToken[DPSDK_TOKEN_LEN];
	DPSDK_CHAR		szResToken[DPSDK_TOKEN_LEN];
	DPSDK_INT32		iDuration;
	DPSDK_CHAR		szTokenType[DPSDK_TOKEN_LEN];
}DPSDK_UPDATE_ALL_TOKEN_PARAM;
//==============HW AR END====================

typedef struct
{
	DPSDK_BOOL	   bDomainUser;								 // Whether or not domain login
	DPSDK_INT32    iUseMqFlag;								 // Whether or not use mq, 0:use, 1:not use
	DPSDK_CHAR     szUserName[DPSDK_NAME_LEN_EX];            // User name
	DPSDK_CHAR     szPWD[DPSDK_PWD_LEN];                     // Cleartext password, the login type is0(basic account), can not be empty
	DPSDK_IP       struIP;                                   // Login server IP
	DPSDK_UINT32   uiPort;                                   // Login server port
	DPSDK_IP       struDisasterIP;                           // Login Disaster IP
	DPSDK_PLATFORM_TYPE	   ePlatformType;
	DPSDK_CHAR     szMACAddress[DPSDK_MACADDRESS_LEN];       // MAC address
	DPSDK_UINT32   uiClientType;                             // Client type: Reference DPSDK_CLIENT_TYPE
	DPSDK_CHAR     szReserve[32];                            // Reserved field
	DPSDK_IP       struClientIP;                             // Client IP
	DPSDK_BOOL	   bCheckProtocolVersion;				  	 //Whether Check Protocol Version
	DPSDK_INT32	   iRestEventType;							 //iRestEventType 0: rabbitMQ 1: HTTP 2:websocket
	DPSDK_CHAR     szCode[8];								 //Verification Code
	DPSDK_CHAR	   szRefreshToken[DPSDK_TOKEN_LENGTH];	     //Refresh token
	DPSDK_BOOL	   bLoginByToken;							 // Whether or not  token login
	DPSDK_INT32    iRefreshTokenType;                        //  0 - B/S Refresh Token, 1 - C/S Refresh Token
	DPSDK_BOOL	   bNotSubscribeAlarm;						 // Whether or not Subscribe alarm (true - not Subscribe alarm  false - Subscribe alarm)
	DPSDK_BOOL	   bNotConnectMQOnLogin;					 // Whether or not Connect MQ On Login
	DPSDK_INT32	   eLoginType;									// Login Type
	DPSDK_BOOL	   bNewSaas;								 // Whether or not new saas
	DPSDK_BOOL	   bKeepAliveSelectly;						 // Whether to keepalive always, false : always keepalive, true: selectly keepalive
	DPSDK_BOOL	   bNotNeedSip;
	DPSDK_BOOL     bEnableCertificate;						// Whether or not CA Certificate verification
	DPSDK_AR_PARAM struARParam;							//HW AR
}DPSDK_LOGIN_PARAM;

typedef struct
{
	 DPSDK_IP	   struClientIP;						     // Client IP
	 DPSDK_CHAR	   szXAppName[DPSDK_NAME_LEN];				 // Default "DSSClient"
}DPSDK_REST_HEAD_PARAM;

typedef struct
{
	DPSDK_CHAR     szPin[DPSDK_PWD_LEN];                     // Cleartext password
	DPSDK_UINT32   uiSipPort;                                // Sip server port
	DPSDK_CHAR	   szClientContainerName[DPSDK_NAME_LEN];
	DPSDK_CHAR	   szServerContainerName[DPSDK_NAME_LEN];
}DPSDK_GM_INFO;

typedef struct
{
	DPSDK_LOGIN_PARAM struLoginData;
	DPSDK_GM_INFO struGMInfo;
}DPSDK_LOGIN_BY_GM_PARAM;

// User login data(Plugin Info)
typedef struct
{
	DPSDK_CHAR szProduct[DPSDK_IN64_LEN];					// Product name
	DPSDK_CHAR szVersion[DPSDK_IN64_LEN];					// Version num
	DPSDK_CHAR szUrl[DPSDK_URL_LEN];							// Download url
	DPSDK_CHAR szChangelog[DPSDK_JSON_BUFFER_LEN];				// Change log
}DPSDK_PLUGIN_INFO_DATA;

// User login data(Plugin Info List)
typedef struct
{
	DPSDK_PLUGIN_INFO_DATA szPluginInfoList[DPSDK_IN64_LEN];	//PluginInfo list
}DPSDK_PLUGIN_INFO_LIST;

typedef struct  
{
	DPSDK_CHAR		szUsrName[DPSDK_NAME_LEN];
	DPSDK_CHAR		szSipIP[DPSDK_IP_LEN];
	DPSDK_CHAR		szSipSerivceID[DPSDK_ID_LEN];
	DPSDK_UINT32	uiSipPort;
	DPSDK_CHAR		szDevCertIp[DPSDK_IP_LEN];
	DPSDK_UINT32	uiDevCertPort;
}DPSDK_35114C_FRI_INFO;

typedef struct
{
	DPSDK_LOGIN_PARAM		struLoginData;
	DPSDK_35114C_FRI_INFO	struFriInfo;
}DPSDK_LOGIN_BY_FRI_PARAM;

typedef struct  
{
	DPSDK_CHAR		szSipIP[DPSDK_IP_LEN];
	DPSDK_UINT32	uiSipPort;
	DPSDK_CHAR		szSipSerivceID[DPSDK_ID_LEN];
	DPSDK_CHAR		szToken[DPSDK_IP_LEN];
	DPSDK_CHAR		szPin[DPSDK_PWD_LEN];
}DPSDK_35114C_TRI_INFO;

typedef struct
{
	DPSDK_LOGIN_PARAM		struLoginData;
	DPSDK_35114C_TRI_INFO	struTriInfo;
}DPSDK_LOGIN_BY_TRI_PARAM;

typedef struct
{
	DPSDK_CHAR     szServerAbility[DPSDK_TYPE_LEN];          // Server Ability
}DPSDK_SERVER_ABILITY_INFO;

typedef struct
{
    DPSDK_CHAR     szPoliceNum[DPSDK_POLICENUM_LEN];               // Police num
    DPSDK_IP       struIP;                                   // Login server IP
    DPSDK_UINT32   uiPort;                                   // Login server port
    DPSDK_CHAR     szMACAddress[DPSDK_MACADDRESS_LEN];       // MAC address
    DPSDK_UINT32   uiClientType;                             // Client type: Reference DPSDK_CLIENT_TYPE
    DPSDK_CHAR     szReserve[32];                            // Reserved field
	DPSDK_IP       struClientIP;                             // Client IP
}DPSDK_LOGIN_BY_POLICENUM_PARAM;

typedef struct
{
	DPSDK_LOGIN_PARAM struLoginData;

	DPSDK_CHAR     szUserId[DPSDK_ID_LEN];					 // User ID
	DPSDK_CHAR     szClientVerision[DPSDK_ID_LEN];			 // Client Verision
	DPSDK_CHAR     szClientRoad[DPSDK_URL_LEN];				 // Client Road
	DPSDK_UINT32 iSvrAbilityNum;							// Number of service capability set,the max num is DPSDK_MAX_SERVER_ABILITY_NUM
	DPSDK_SERVER_ABILITY_INFO* pServerAbilityList;			// Service capability set
	DPSDK_CHAR szToken[DPSDK_MEMO_LEN];						// Token
	DPSDK_INT32	iDuration;									// Token effective time
}DPSDK_LOGIN_BY_PKI_PARAM;

typedef struct
{
	DPSDK_LOGIN_PARAM struLoginData;

	DPSDK_CHAR     szAppID[DPSDK_ID_LEN];					 // App ID
	DPSDK_CHAR	   szFaceData[DPSDK_FACE_PIC_IMAGE_LEN]; // Face Image Data
	bool		   bMatchName;								 // Match name
}DPSDK_LOGIN_BY_FACE_PARAM;

typedef struct
{
	DPSDK_LOGIN_PARAM struLoginData;

	DPSDK_CHAR     szAppID[DPSDK_ID_LEN];
	DPSDK_CHAR     szIdentifyCode[DPSDK_USER_ID_NUM_LEN];
}DPSDK_AUTH_BY_PKI_PARAM;

typedef struct
{
	DPSDK_LOGIN_PARAM struLoginData;

	DPSDK_CHAR     szAppID[DPSDK_ID_LEN];
	DPSDK_CHAR     szIdentifyCode[DPSDK_USER_ID_NUM_LEN];
	DPSDK_UINT32   iDataLen;
	DPSDK_CHAR*    pData;
}DPSDK_AUTH_BY_FACE_AND_PKI_PARAM;

typedef struct
{
	DPSDK_CHAR     szUserIdNum[DPSDK_USER_ID_NUM_LEN];					 // User ID Num
	DPSDK_IP       struIP;                                   // Login server IP
    DPSDK_UINT32   uiPort;                                   // Login server port
    DPSDK_CHAR     szMACAddress[DPSDK_MACADDRESS_LEN];       // MAC address
	DPSDK_UINT32   uiClientType;                             // Client type: Reference DPSDK_CLIENT_TYPE
    DPSDK_CHAR     szClientIp[DPSDK_IP_LEN];				 // Client IP
}DPSDK_LOGIN_BY_PKI_EX_PARAM;

typedef struct
{
	DPSDK_IP       struIP;                                  // Login server IP
	DPSDK_UINT32   uiPort;                                  // Login server port
	DPSDK_CHAR     szUuid[DPSDK_USER_ID_NUM_LEN];			// User Uuid
	DPSDK_UINT32   uiCode;                                  // Get result code
	DPSDK_CHAR     szData[DPSDK_URL_LEN];					// QRCode address
	DPSDK_CHAR     szOutUuid[DPSDK_USER_ID_NUM_LEN];        // New user Uuid
}DPSDK_CREATE_LOGIN_QRCODE_PARAM;

typedef struct
{
	DPSDK_CHAR     szAppID[DPSDK_USER_ID_NUM_LEN];			 // App ID
	DPSDK_IP       struIP;                                   // Local IP
	DPSDK_CHAR     szMACAddress[DPSDK_MACADDRESS_LEN];       // MAC address
	DPSDK_UINT32   uiClientType;                             // Client type: Reference DPSDK_CLIENT_TYPE
	DPSDK_CHAR	   szUuid[DPSDK_USER_ID_NUM_LEN];			 // User Uuid
}DPSDK_CHECK_QRCODE_LOGIN_PARAM;

typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];
	/** 类型string。客户端最新版本 */
	DPSDK_CHAR szLastVersion[DPSDK_NAME_LEN];
	/** 类型string。客户端更新路径 */
	DPSDK_CHAR szUpdateUrl[DPSDK_URL_LEN];
	/** 类型string。返回登陆令牌，令牌字符串由服务端发布。之后的其它请求，在HTTP头的 X-Subject-Token: 带上这个令牌进行鉴权 */
	DPSDK_CHAR szToken[DPSDK_MEMO_LEN];
	/** 类型string。视频云版本 */
	DPSDK_CHAR szVersion[DPSDK_NAME_LEN];
	/** 类型string。上次登陆的IP */
	DPSDK_CHAR szLastLoginIp[DPSDK_IP_LEN];
	/** 类型int。有效时间，由服务端指定，单位秒，建议3/4 duration时就进行会话更新 */
	DPSDK_CHAR szDuration[DPSDK_NAME_LEN];
	/** 类型string。用户名对应的用户Id，如果需要对该用户信息进行修改，使用用户Id */
	DPSDK_CHAR szUserId[DPSDK_USER_ID_NUM_LEN];
	/** 类型array[string]。当前登录的产品所包含的能力。是一种较为粗略的能力定义，主要用于客户端界面上的显示，后续还会有扩展。当前定义的能力有:video(视频)、synopsis(摘要)、vehicle(车辆)、face(人脸) */
	DPSDK_CHAR szServiceAbilty[DPSDK_MEMO_LEN];
}DPSDK_LOGIN_BY_PKI_COMMON_INFO;

typedef struct
{
	DPSDK_CHAR     szAppID[DPSDK_USER_ID_NUM_LEN];			 // App ID
	DPSDK_IP       struIP;                                   // Login server IP
	DPSDK_UINT32   uiPort;                                   // Login server port
	DPSDK_CHAR     szMACAddress[DPSDK_MACADDRESS_LEN];       // MAC address
	DPSDK_UINT32   uiClientType;                             // Client type: Reference DPSDK_CLIENT_TYPE
	DPSDK_CHAR	   szFaceData[DPSDK_FACE_PIC_IMAGE_LEN]; // Face Image Data
}DPSDK_LOGIN_USER_FACEIMAGE_PARAM;

typedef struct
{
	DPSDK_INT32 iSystemType;
	DPSDK_CHAR	szSystemVersion[DPSDK_LEN_256];
	DPSDK_CHAR	szSystemName[DPSDK_LEN_256];
}DPSDK_SYSTEMVERSION_INFO;

typedef struct
{
	DPSDK_CHAR     szProductionIp[DPSDK_IP_LEN];        //  Production IP address
	DPSDK_CHAR     szDisasterRecoveryIp[DPSDK_IP_LEN];        //  DisasterRecovery IP address
}DPSDK_PROLOGINIPCONFIG;

typedef struct//used by login failed
{
	DPSDK_CHAR	szMessageData[DPSDK_IN512_LEN];				// message Data
	DPSDK_CHAR	szClientType[DPSDK_PWD_LEN];
	DPSDK_CHAR	szToken[DPSDK_TOKEN_LENGTH];
	DPSDK_CHAR	szTokenType[DPSDK_TOKEN_LENGTH];
	DPSDK_CHAR	szResourceToken[DPSDK_TOKEN_LENGTH];
	DPSDK_CHAR	szMagicId[DPSDK_MACADDRESS_LEN];
	DPSDK_CHAR	szUserId[DPSDK_LEN_64];
	DPSDK_CHAR	szGroupId[DPSDK_USER_ID_LEN];
	DPSDK_CHAR	szUserName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szClientIP[DPSDK_IP_LEN];					// Client IP
	DPSDK_CHAR	szRsaEncryptKey[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR	szAesKey[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR	szSecretVector[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR	szPOCId[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR	szPOCPwd[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR	szCredence[DPSDK_USER_REMARK_LEN];
	DPSDK_CHAR	szVerification[DPSDK_USER_REMARK_LEN];
	DPSDK_CHAR	szClientAesKey[DPSDK_AESKEY_LEN];
	DPSDK_CHAR	szClientSecretVector[DPSDK_SECRETVECTOR_LEN];
	DPSDK_CHAR	szCurLoginIp[DPSDK_IP_LEN];
	DPSDK_CHAR	szPWD[DPSDK_PWD_LEN];
	DPSDK_CHAR	szLocalPath[DPSDK_FILE_PATH_LEN];
	DPSDK_CHAR	szLanguage[DPSDK_IN64_LEN];
	DPSDK_BOOL bDomainUser;
	DPSDK_INT32 uiPort;
	DPSDK_INT32 iEncryptMod;
	DPSDK_BOOL bHighVersion;
	DPSDK_INT32 iUnlockRemainTime;							// Remaining time of unlocking
	DPSDK_INT32 iUnlockRemainTimes;
	DPSDK_INT32 iRemainderDays;								// Remainder Days
	DPSDK_INT32 iValue;
	DPSDK_INT32 iSubMQSystemType;
	DPSDK_INT32	iClientType;
	DPSDK_INT32	iTokenRate;
	DPSDK_INT32 iPwdChangeDay;
	DPSDK_BOOL  bEvoPaaServer;
	DPSDK_CHAR	szPlatformVersion[DPSDK_LEN_256];
	DPSDK_INT32	iSystemCount;
	DPSDK_INT32 iProtocolVersion;
	DPSDK_INT32 iServerMode;								// look	DPSDK_SERVER_MOD
	DPSDK_INT32 iHttpsMode;
	DPSDK_INT32 iDataCompressType;
	DPSDK_SYSTEMVERSION_INFO* pSystemInfo;
	DPSDK_PROLOGINIPCONFIG struIpConfig;
}DPSDK_LOGIN_RET;

typedef struct
{
	DPSDK_CHAR	szRsaEncryptKey[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR	szAesKey[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR	szSecretVector[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR	szClientAesKey[DPSDK_AESKEY_LEN];
	DPSDK_CHAR	szClientSecretVector[DPSDK_SECRETVECTOR_LEN];
	DPSDK_CHAR	szPOCId[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR	szPOCPwd[DPSDK_CERT_KEY_LEN];
}DPSDK_ENCODE_KEY;

typedef struct
{
	DPSDK_CHAR		szIP[DPSDK_IP_LEN];						// server IP						 
	DPSDK_UINT32	uiPort;									// server port
}DPSDK_SERVER_INFO;

typedef struct
{
	DPSDK_CHAR szPicData[DPSDK_VERIFYCODE_IMAGEDATA_LEN];	// Verification code picture data
}DPSDK_VERIFY_CODE_PIC_INFO;

typedef struct
{
	DPSDK_INT32 iIsCodeFuncExpired;							// Is expired. 1 expired 0 not expired(The default valid time is 10 minutes)
	DPSDK_INT32 iIsCodeExpired;								// Is expired. 1 expired 0 not expired(The default valid time is 1 minutes)
}DPSDK_VERIFY_CODE_EXPIRE_TIME_INFO;

typedef struct
{
	DPSDK_CHAR		szConfigType[DPSDK_CONFIG_PARAM_LEN];			// Config Type
	DPSDK_CHAR		szConfigName[DPSDK_CONFIG_PARAM_LEN];			// Config Name
	DPSDK_CHAR		szConfigSeq[DPSDK_CONFIG_PARAM_LEN];			// Config Sequence
	DPSDK_CHAR		szConfigPar1[DPSDK_CONFIG_PARAM_LEN];			// Config Paramer1
	DPSDK_CHAR		szConfigPar2[DPSDK_CONFIG_PARAM_LEN];			// Config Paramer2
	DPSDK_CHAR		szConfigPar3[DPSDK_CONFIG_PARAM_LEN];			// Config Paramer3
}DPSDK_CONFIG_INFO;

typedef struct
{
	DPSDK_INT32 iTotal;
	DPSDK_CONFIG_INFO* pConfigInfoList;
}DPSDK_CONFIG_INFO_LIST;

typedef struct
{
	DPSDK_CHAR		szDeviceCode[DPSDK_DEVICE_ID_LEN];		// Channel code	
	DPSDK_CHAR		szDeviceName[DPSDK_NAME_LEN];                  
	DPSDK_CHAR		szUserId[DPSDK_LEN_64];
	DPSDK_CHAR		szIsOnlineStr[DPSDK_LEN_64];                  
	DPSDK_CHAR		szSipRegister[DPSDK_LEN_64]; 
	
	DPSDK_INT32		iIsOnline;								// is online  0 offline, 1 online
	DPSDK_INT32		iManufacturer;
	DPSDK_INT32		iDeviceType;
}DPSDK_DEVICIEINFO_CALLNUMBER_INFO;

// Https model
typedef enum 
{
	DPSDK_HTTPS_UNENABLE	= 0,							// Not enable https
	DPSDK_HTTPS_ONEWAY_AUTH = 1,							// Enable https one-way authentication
	DPSDK_HTTPS_TWOWAY_AUTH = 2								// Enable https two-way authentication
}DPSDK_HTTPS_MODE;
//////////////////////////////////////////////////////////////////////////
/*
 *	The related define of video module
 */

typedef enum
{
	DPSDK_VIDEO_CMD_LOCK		= 0,							// Lock the current camera
	DPSDK_VIDEO_CMD_UNLOCK_ONE	= 1,							// Unlock the current camera
}DPSDK_VIDEO_LOCK_TYPE;

// Playback mode 
typedef enum
{
	DPSDK_STREAM_REAL_MODE		= 0,			// Real time priority mode
	DPSDK_STREAM_SMOOTH_MODE	= 1,			// Fluency priority model
	DPSDK_STREAM_POISE_MODE		= 2,			// Equilibrium priority model
	DPSDK_STREAM_CUSTOM_MODE	= 3,			// Custom priority mode
}DPSDK_STREAM_MODE;

//视频流请求协议
typedef enum
{
	DPSDK_MEDIA_PROTOCOL_UDP = 0,					//UDP
	DPSDK_MEDIA_PROTOCOL_TCP = 1,					//TCP
	DPSDK_MEDIA_PROTOCOL_END,
}DPSDK_MEDIA_PROTOCOL_TYPE;

// Enhanced support for functional enumeration
typedef enum 
{
	DPSDK_IVSE_DENOISE = 0,		   // 去噪
	DPSDK_IVSE_LOWLIGHT,		   // 低照度增强
	DPSDK_IVSE_EE,                 // 边缘锐化
	DPSDK_IVSE_ACC,			       // 偏色校正
	DPSDK_IVSE_HR,	               // 去雾
	DPSDK_IVSE_SLS,                // 强光抑制
	DPSDK_IVSE_DEBLUR,             // 失焦模糊祛除
	DPSDK_IVSE_NUM			       // 支持增强的功能个数
}DPSDK_IVSE_FUNC_TYPE;

// Export log type
typedef enum
{
	EXPORT_LOG_CVS = 1,													// cvs
	EXPORT_LOG_XLS = 2,													// xls
	EXPORT_LOG_TXT = 3,													// txt
	EXPORT_LOG_PDF = 4,													// pdf
	EXPORT_LOG_XLSX = 5,												// xlsx
	EXPORT_LOG_ZIP = 6,													// zip
}DPSDK_EXPORT_LOG_TYPE;

// Intelligence
typedef enum
{
	DPSDK_IVS_RULE_VISIBLE = 1,				// Rule
	DPSDK_IVS_OBJ_VISIBLE,					// Target box
	DPSDK_IVS_LOCUS_VISIBLE,				// trajectory == The interface is no longer displayed？
	DPSDK_IVS_SMD_VISIBLE,					// SMD intelligent motion inspection rule box
	DPSDK_IVS_FACE_FEATURE_VISIBLE,			// Face capture
	DPSDK_IVS_REGION_VISIBLE,				// Polygons, interference zones, and detection zones
	DPSDK_IVS_TITLE_VISIBLE,				// Title show
	DPSDK_IVS_TRACK_VISIBLE,
	DPSDK_IVS_LARGE_AMOUNT,					//人数
	DPSDK_IVS_ALL_VISIBLE,					// 所有智能信息
	DPSDK_IVS_VISIBLE_END,					
}DPSDK_IVS_VISIBLE;

// 4K Split screen mode
typedef enum
{
	DPSDK_SPLIT_ORG			= 0,			// Basic pattern
	//Four 4K
	DPSDK_SPLIT_1P_3		= 1,			// 1P+3 pattern
	DPSDK_SPLIT_1P_5		= 2,			// 1P+5 pattern
	//Three
	DPSDK_SPLIT_3_3_1P		= 4,			// 1P+3 pattern
	DPSDK_SPLIT_3_6_1P		= 5,			// 1P+6 pattern

	DPSDK_SPLIT_1P_1		= 7,					// 1P+1 pattern
	DPSDK_SPLIT_1P_3Ex		= 8,					// 1P+3(up and down screen)pattern
}DPSDK_SPLIT_TRECE_TYPE;

// Capture image format
typedef enum
{
	DPSDK_PIC_FORMAT_BMP		= 0,			// BMP type
	DPSDK_PIC_FORMAT_JPEG		= 1,			// JPEG type
	DPSDK_PIC_FORMAT_BMP24		= 6,			// BMP24 type
}DPSDK_PIC_FORMAT;

// Playback direction
typedef enum
{
	DPSDK_FORWARD_DIRECTION		= 0,			// Following discharge
	DPSDK_BACK_DIRECTION		= 1,			// Upside down
}DPSDK_PLAY_DIRECTION;

// Buffer Type
typedef enum
{
	DPSDK_VAX_BUF_VIDEO_SRC		= 1,			// Video Source Buffer
	DPSDK_VAX_BUF_AUDIO_SRC		= 2,			// Audio Source Buffer
	DPSDK_VAX_BUF_VIDEO_RENDER  = 3,			// Decoded Video Data Buffer
	DPSDK_VAX_BUF_AUDIO_RENDER  = 4,			// Decoded Audio Data Buffer
}DPSDK_VAX_BUF_TYPE;

// Fish eye opening type
typedef enum
{
	DPSDK_FISH_CORRECT			= 0,			// Fish eye correction
	DPSDK_FISH_CORRECT_AND_LINK = 1,			// Fish ball linkage and correction
	DPSDK_FISH_LINK				= 2,			// Fish ball linkage
}DPSDK_FISH_TYPE;

// Fish eye installation mode
typedef enum
{
	DPSDK_EMOUNT_MODE_INVALID	= 0,
	DPSDK_EMOUNT_MODE_CEIL		= 1,		// Top loading
	DPSDK_EMOUNT_MODE_WALL		= 2,		// Wall mounted
	DPSDK_EMOUNT_MODE_FLOOR		= 3,        // floor mounted
	DPSDK_EMOUNT_MODE_NUM
}DPSDK_FISH_MOUNTMODE;

typedef enum
{
	DPSDK_STEREO_COMMON_VIEW,              // normal mode
	DPSDK_STEREO_INNER_VIEW                // inner view mode
}DPSDK_FISH_VIEW_MODE;

// Fish eye image display model
typedef enum
{
	DPSDK_SHOW_MODE_INVALID									= 0,
	DPSDK_SHOW_MODE_OFF										= 1,	// Shut off the fish eye algorithm library and shut off the outside
	DPSDK_SHOW_MODE_ORIGINAL								= 2,	// Primitive pattern(Square),Zoom ratio
	DPSDK_SHOW_MODE_PANORAMA								= 3,	// 1p
	DPSDK_SHOW_MODE_PANORAMA_PLUS_ONE_EPTZ					= 4,	// 1p+1
	DPSDK_SHOW_MODE_DOUBLE_PANORAMA							= 5,	// 2p
	DPSDK_SHOW_MODE_ORIGINAL_PLUS_DOUBLE_PANORAMA			= 6,	// 1+2p
	DPSDK_SHOW_MODE_ORIGINAL_PLUS_THREE_EPTZ_REGION			= 7,	// 1+3
	DPSDK_SHOW_MODE_PANORAMA_PLUS_THREE_EPTZ_REGION			= 8,	// 1p+3
	DPSDK_SHOW_MODE_ORIGINAL_PLUS_TWO_EPTZ_REGION			= 9,	// 1+2	
	DPSDK_SHOW_MODE_ORIGINAL_PLUS_FOUR_EPTZ_REGION			= 10,	// 1+4
	DPSDK_SHOW_MODE_PANORAMA_PLUS_FOUR_EPTZ_REGION			= 11,	// 1p+4
	DPSDK_SHOW_MODE_PANORAMA_PLUS_SIX_EPTZ_REGION			= 12,	// 1p+6
	DPSDK_SHOW_MODE_ORIGINAL_PLUS_EIGHT_EPTZ_REGION			= 13,	// 1+8
	DPSDK_SHOW_MODE_PANORAMA_PLUS_EIGHT_EPTZ_REGION			= 14,	// 1p+8
	DPSDK_SHOW_MODE_TWO_EPTZ_REGION_WITH_ORIGINAL			= 15,	// 1F+2	
	DPSDK_SHOW_MODE_FOUR_EPTZ_REGION_WITH_ORIGINAL			= 16,	// 1F+4	
	DPSDK_SHOW_MODE_DOUBLE_PANORAMA_WITH_ORIGINAL			= 17,	// 1F+2p
	DPSDK_SHOW_MODE_FOUR_EPTZ_REGION_WITH_PANORAMA			= 18,	// 1p(F)+4

	DPSDK_SHOW_MODE_TWO_EPTZ_REGION							= 19,	// 2 Frame
	DPSDK_SHOW_MODE_SINGLE									= 20,	// Single picture
	DPSDK_SHOW_MODE_FOUR_EPTZ_REGION						= 21,	// 4 Frame
	DPSDK_SHOW_MODE_USER_DEFINED							= 22,	// User custom
	DPSDK_FISHEYE_CALIBRATE_MODE_ORIGINAL_PLUS_ONE_EPTZ_REGION = 23,// 1+1
	DPSDK_FISHEYE_CALIBRATE_MODE_ONE_EPTZ_REGION			= 24,	// 1 Frame
	DPSDK_SHOW_FISHEYE_CALIBRATE_MODE_SEMI_SPHERE,						// VR
	DPSDK_SHOW_FISHEYE_CALIBRATE_MODE_CYLINDER,							// VR
	DPSDK_SHOW_FISHEYE_CALIBRATE_MODE_LITTLE_PLANET,						// VR
	DPSDK_SHOW_FISHEYE_CALIBRATE_MODE_DOUBLE_SPHERE,						// VR
	DPSDK_SHOW_FISHEYE_CALIBRATE_MODE_DOUBLE_CYLINDER,					// VR
	DPSDK_SHOW_FISHEYE_CALIBRATE_MODE_DOUBLE_360,							// VR
	DPSDK_SHOW_MODE_NUM
}DPSDK_FISH_SHOWMODES;

// The related operate of mainSub track 
typedef enum
{
	DPSDK_LinkOpen,						//mainSubGroup.open mainSub track group
	DPSDK_LinkLocate,					//mainSubGroup.locate choose a locate on main camera and linkage sub camera
	DPSDK_LinkRectLocate,				//mainSubGroup.rectLocate choose a rectLocate on main camera and linkage sub camera
	DPSDK_LinkTrack,					//mainSubGroup.track choose Object to track manually
	DPSDK_LinkMainSubGlobal,		//mainSubGlobal  MainSub link configuration(enable auto tracking)
	DPSDK_LinkClose,					//mainSubGroup.close Close main-sub mode tracker example
	DPSDK_LinkAttach,					//mainSubGroup.attach  Track subscribed object, report auto/manual tracking start and end object
	DPSDK_LinkDetach,					//mainSubGroup.detach  Unsubscribe tracking object
}DPSDK_SmartTrack_Oper_e;

// An option for an electronic cloud platform to bloom and move
typedef enum
{
	DPSDK_EPTZ_CMD_INVALID						= 0,	
	DPSDK_EPTZ_CMD_ZOOM_IN						= 1,		// Enlarge
	DPSDK_EPTZ_CMD_ZOOM_OUT						= 2,		// Narrow
	DPSDK_EPTZ_CMD_UP							= 3,		// Move upwards
	DPSDK_EPTZ_CMD_DOWN							= 4,		// Move down
	DPSDK_EPTZ_CMD_LEFT							= 5,		// Move to the left
	DPSDK_EPTZ_CMD_RIGHT						= 6,		// Move to the right
	DPSDK_EPTZ_CMD_ROTATE_CLOCKWISE_AUTO		= 7,		// Clockwise rotation
	DPSDK_EPTZ_CMD_ROTATE_ANTICLOCKWISE_AUTO	= 8,		// Automatic counter clockwise rotation
	DPSDK_EPTZ_CMD_STOP							= 9,		// Stop it
	DPSDK_EPTZ_CMD_SHOW_REGION					= 10,		// Frame selection and enlargement
	DPSDK_EPTZ_CMD_EXIT_SHOW_REGION				= 11,		// Exit frame selection and enlargement
	DPSDK_EPTZ_CMD_DEFAULT						= 12,		// Restore the default
	DPSDK_EPTZ_CMD_ORIGIN_ROTATE				= 13,		// Circular rotation

	DPSDK_EPTZ_CMD_SET_CUR_REGION				= 0x20,		// Configure the location information of the specified window
	DPSDK_EPTZ_CMD_GET_CUR_REGION				= 0x21,		// Get the location information of the specified window
	DPSDK_EPTZ_CMD_IS_IN_PANORAMA_REGION		= 0x22,		// Whether the input point is in the current panoramic point chain area
	DPSDK_EPTZ_CMD_TAP_VIEW						= 0x23,		// Display the specified location,The point is to see
	DPSDK_EPTZ_CMD_SET_FOCUS					= 0x24,		// Setting window location information
	DPSDK_EPTZ_CMD_GET_FOCUS					= 0x25,		// Get the window location information

	DPSDK_EPTZ_CMD_PTZ_CALI						= 0x26,		// Calibration of fish ball linkage
	DPSDK_EPTZ_CMD_GET_PTZ_RLT					= 0x27,		// Acquisition of fish ball linkage location information 
	DPSDK_EPTZ_CMD_NUM
} DPSDK_FISH_EPTZCMD;

// Bolt type
typedef enum
{
	// Bolt type
	DPSDK_IPCTYPE_200WN				= 0,	//
	DPSDK_IPCTYPE_130WN				= 1,
	DPSDK_IPCTYPE_D1WN				= 2,
	DPSDK_IPCTYPE_100WN				= 3,
	DPSDK_IPCTYPE_FE				= 4,	// Fisheye

	// Type of ball machine
	DPSDK_SPCTYPE_D6501				= 100,	// Sony Movement Sixty-fiveSpeed Dome Cameras
	DPSDK_HSPCTYPE_D6A2030E			= 101,	// Dahua core 2030E，6ASpeed Dome Cameras
	DPSDK_HSPCTYPE_D65A2030E		= 102,	//大华机芯2030E，65A球机
}DPSDK_CAM_TYPE;

// Lens type
typedef enum 
{
	DPSDK_LENTYPE_NORM				= 0,	// Distortion free lens
	DPSDK_LENTYPE_Lens0361 			= 1,	// Three point sixMm bolt shot
	DPSDK_LENTYPE_Lens2880			= 2,	// One hundred and thirtyThe degree of wide-angle lens
	DPSDK_LENTYPE_Lens0362 			= 3,	// Three point sixMm bolt shot
	DPSDK_LENTYPE_Lens0401 			= 4,	// FourMm bolt shot

	DPSDK_LENTYPE_TEST1				= 100,	// Debug parameters
}DPSDK_LEN_TYPE;

// Stream type
typedef enum
{
	STREAM_UNKNOW_STREAM = 0,								// Unknown
	STREAM_MAIN_STREAM = 1,									// Main stream
	STREAM_SUB_STREAM = 2,								    // Auxiliary code stream
	STREAM_THIRD_STREAM = 3,								// Three bit stream
	STREAM_LOCAL_SIGNAL_STREAM = 5,							// Local signal
	STREAM_COMPRESSSTREAM = 6,								// compress stream
	STREAM_COMRESOLUTIONSTREAM = 7,							// compress Resolution
}DPSDK_STREAM_TYPE;

// Record type
typedef enum
{
	DPSDK_RECORD_TYPE_ALL = 0,
	DPSDK_RECORD_TYPE_MANUAL = 1,					// Manual record
	DPSDK_RECORD_TYPE_ALARM = 2,					// Alarm record
	DPSDK_RECORD_TYPE_MOTION_DETECT = 3,			// Dynamic detection
	DPSDK_RECORD_TYPE_VIDEO_LOST = 4,				// Video loss
	DPSDK_RECORD_TYPE_VIDEO_SHELTER = 5,			// Video occlusion
	DPSDK_RECORD_TYPE_TIMER = 6,					// Timing video
	DPSDK_RECORD_TYPE_ALLDAY = 7,					// All-weather video
	DPSDK_RECORD_TYPE_FILE_RECORD = 8,				// File video conversion
	DPSDK_RECORD_TYPE_NORMAL = 9,					// Ordinary video
	DPSDK_RECORD_TYPE_ALARM_BEGIN = 10,				// Alarm start Definition in the match protocol stack 10~300 -m -f -cSpecial alarm
	DPSDK_RECORD_TYPE_IVS = 11,						// IVS record
	DPSDK_RECORD_TYPE_CARD = 25,					// Card number video There is no this in the protocol library for the time being
	DPSDK_RECORD_TYPE_ALARM_END = 1000,				// End of intelligent alarm Definition in the match protocol stack 300~1000Intelligent alarm
}DPSDK_RECORD_TYPE;

// Record type
typedef enum
{
	DPSDK_RECORD_TYPE_ALL_PAAS = 0,
	DPSDK_RECORD_TYPE_NORMAL_PAAS = 1,					// Ordinary video
	DPSDK_RECORD_TYPE_ALARM_PAAS = 2,					// Alarm record
	DPSDK_RECORD_TYPE_MANUAL_PAAS = 3,					// Manual record
	DPSDK_RECORD_TYPE_FILL_PAAS = 4,					// Fill Record
	DPSDK_RECORD_TYPE_MOTION_DETECT_PAAS = 5,			// Dynamic detection
}DPSDK_RECORD_TYPE_PAAS;

//Video source
typedef enum
{
	DPSDK_SOURCE_TYPE_ALL = 1,						// All video, including platform video and device video
	DPSDK_SOURCE_TYPE_DEVICE = 2,					// Device video
	DPSDK_SOURCE_TYPE_CENTER = 3,					// Platform video
	DPSDK_SOURCE_TYPE_3RD_CLOUD = 4,				// 3rd platform video
	DPSDK_SOURCE_TYPE_OSS	 = 6,					// OSS Service video
	DPSDK_SOURCE_TYPE_EEC	 = 9					// EEC Device video
}DPSDK_SOURCE_TYPE;

typedef enum 
{
	DPSDK_PB_NORMAL = 1024,
	DPSDK_PB_NORMAL_0P75 = 768,
	DPSDK_PB_NORMAL_1P25 = 1280,
	DPSDK_PB_NORMAL_1P5 = 1536,
	DPSDK_PB_NORMAL_1P75 = 1792,
	DPSDK_PB_NORMAL_FAST2	= DPSDK_PB_NORMAL * 2,
	DPSDK_PB_NORMAL_FAST4	= DPSDK_PB_NORMAL * 4,
	DPSDK_PB_NORMAL_FAST8	= DPSDK_PB_NORMAL * 8,
	DPSDK_PB_NORMAL_FAST16	= DPSDK_PB_NORMAL * 16,
	DPSDK_PB_NORMAL_FAST32	= DPSDK_PB_NORMAL * 32,
	DPSDK_PB_NORMAL_FAST64	= DPSDK_PB_NORMAL * 64,
	DPSDK_PB_NORMAL_FAST128	= DPSDK_PB_NORMAL * 128,
	DPSDK_PB_NORMAL_SLOW2	= DPSDK_PB_NORMAL / 2,
	DPSDK_PB_NORMAL_SLOW4	= DPSDK_PB_NORMAL / 4,
	DPSDK_PB_NORMAL_SLOW8	= DPSDK_PB_NORMAL / 8,
	DPSDK_PB_NORMAL_SLOW16	= DPSDK_PB_NORMAL / 16,
}DPSDK_PLAYBACK_SPEED;

typedef struct
{
	DPSDK_PLAYBACK_SPEED iSpeed;
	DPSDK_INT32			 iScaleMoedValue;
}DPSDK_PLAYBACK_SPEED_PARAM;

typedef enum
{
	DPSDK_FILE_FORMAT_NORMAL = 0,			// Original stream
	DPSDK_FILE_FORMAT_AVI = 1,				// avi format
	DPSDK_FILE_FORMAT_MP4 = 2,				// mp4 format
	DPSDK_FILE_FORMAT_FLV = 3,				// flv format
	DPSDK_FILE_FORMAT_ASF = 4,				// asf format
	DPSDK_FILE_FORMAT_TS = 5,				// ts format
}DPSDK_DOWNLOAD_RECORD_FILE_FORMAT;

typedef enum 
{
	DPSDK_NAME_RULE_TIME_CHANNELID = 0,
	DPSDK_NAME_RULE_TIME_CHANNELNAME = 1,
	DPSDK_NAME_RULE_CHANNELID_TIME = 2,
	DPSDK_NAME_RULE_CHANNELNAME_TIME = 3
}DPSDK_RECORD_FILE_NAME_RULE;

// Extra OSD
typedef enum
{
	DPSDK_EXTRA_OSD_ADD = 0,				// Add OSD info
	DPSDK_EXTRA_OSD_UPDATE = 1,				// Update OSD info
	DPSDK_EXTRA_OSD_DELETE = 2				// Delete OSD info
}DPSDK_EXTRA_OSD_OPERATION_TYPE;

typedef enum
{
	DPSDK_MEDIA_DATA_VIDEO = 0,					//Video data
	DPSDK_MEDIA_DATA_AUDIO = 1,					//Audio data
	DPSDK_MEDIA_DATA_ALL = 2,					//Video+audio data
	DPSDK_MEDIA_DATA_END,
}DPSDK_MEDIA_DATA_TYPE;

typedef struct
{
	DPSDK_EXTRA_OSD_OPERATION_TYPE 		iOperationType;		
	DPSDK_INT32 						iX;
	DPSDK_INT32 						iY; 
	DPSDK_CHAR							szOSDInfo[DPSDK_MEMO_LEN];
}DPSDK_EXTRA_OSD_PARAM;

// Parameters of fish ball linkage initialization channel
typedef struct
{
	DPSDK_INT32   iHimgWidth;                       // From the camera image width
	DPSDK_INT32   iHimgHeight;						// From the camera image
	DPSDK_INT32   *arriZoomList;					// Ball multiplier table
	DPSDK_INT32   iZoomListSize;					// The number of multiple tables of the ball machine
}DPSDK_MHFPTZ_INIT_PARAM;

typedef struct
{
	DPSDK_INT32 iWidth;
	DPSDK_INT32 iHeight;
}DPSDK_FISH_SIZE;

typedef struct
{
	DPSDK_SHORT shX;
	DPSDK_SHORT shY;
}DPSDK_FISH_POINT2D;

typedef struct
{
	DPSDK_INT32 iX;
	DPSDK_INT32 iY;
	DPSDK_INT32 iHAngle;
	DPSDK_INT32 iVAngle;
	DPSDK_INT32 iAvailable;
	DPSDK_INT32 arriReserved[3];
}DPSDK_FISH_REGIONPARAM;

typedef struct
{
	DPSDK_FISH_REGIONPARAM		arrstruRegionParam[9];		// The sequence number of an array corresponds to a window IDNumber, incoming configuration needs matching ID
	DPSDK_INT32					iCircularOffset;
	DPSDK_INT32					iPanoramaOffset;
	DPSDK_INT32					iUseRegionParam;			// When it is valid, use this value to initialize it; if you don't save the information, please set it 0
	DPSDK_INT32					arriReserved[1];
}DPSDK_FISH_MODEINITPARAM;

typedef struct
{
	DPSDK_UINT32			uiSubMountMode;			// Sub image installation mode, Only when the image main correction mode is user defined mode, This value is valid, See DPSDK_FISH_MOUNTMODE
	DPSDK_UINT32			uiSubCalibrateMode;		// Subimage correction model, Only when the image main correction mode is user defined mode, This value is valid, See DPSDK_FISH_SHOWMODES
	DPSDK_FISH_SIZE			struImgOutput;			// Subimage output resolution
	DPSDK_FISH_POINT2D		struUpperLeft;			// Subimage offset
	DPSDK_INT32				arriReserved[3];		// Reserved bytes
}DPSDK_FISH_SUBMODE;

typedef struct
{
	DPSDK_FISH_SIZE			struMainShowSize;		// Not enabled for the time being, Main display ratio, 4:3, 16:9等, The optimal results are output based on the algorithm (no deformation case)Try to reach the ratio as far as possible)
	DPSDK_FISH_SIZE			struImgOutput;			// Output image resolution(Pre scale), The image main correction mode is external input when the user custom mode is used, Other modes Internal return
	DPSDK_FISH_SIZE			struFloatMainShowSize;	// Output double BufferWhen used, the main display window of the floating window is resolved for the time being with the old method of operation.The width to height ratio of the floating circle needs to be 1:1The width to height ratio of the floating Wall panorama needs to be 16:9

	DPSDK_FISH_SUBMODE*		pSubMode;				// Subpattern information, The image main correction mode is external input when the user custom mode is used, Other patterns are internally returned
	DPSDK_INT32				iSubModeNum;		    // Subpattern number, The image main correction mode is external input when the user custom mode is used, Other patterns are internally returned
	DPSDK_INT32				iOutputSizeRatio;		// Not enabled for the time being, The scaling ratio of the corrected output imageQ8.format,Range 0-256, Two hundred and fifty-sixTo maintain the maximum output resolution
	DPSDK_INT32				arriReserved[1];		// Reserved bytes
}DPSDK_FISH_OUTPUTFORMAT;

typedef struct
{	
	/*Necessary Parameters*/
	DPSDK_INT32					iZoomType;			 // Multiple Control Mode---- Expected Adaptive And Double The Size Of The Box
	DPSDK_INT32					iHCamWax;			 // The Expectation Multiplier Corresponds To The Ball Anglex (horizontal)
	DPSDK_INT32					iHCamWay;			 // The Expectation Multiplier Corresponds To The Ball Angley (vertical)
	DPSDK_INT32					iHCamWMul;			 // Expected Multiplier (benchmark Multiplier)
	DPSDK_INT32					iCfgType;			 // Configuration Method, Default Is1: Using Configuration Parameters 1:.using The Method Of Parameter Configuration, 0Use Device Type Collocation Method

	// Main Camera Parameters							         
	// Lens Parameters
	DPSDK_INT32					iPrmRE;				 // Projection Radius
	DPSDK_INT32					iPrmMul;			 // Projection Ratio
	DPSDK_INT32					iPrmDX;				 // X irection Shift
	DPSDK_INT32					iPrmDY;				 // Y irection Shift
	DPSDK_INT32					iPrmCW;				 // CMOS Wide (practical Use)
	DPSDK_INT32					iPrmCH;				 // CMOS High (high Practical Use)

	// Main Camera And Appurtenant Camera Type Configuration (Cfg_type is  0, it is valid to set this parameter at the time A) DefaultOne Hundred And ThirtyDegree, One Hundred And Thirty000 And Bolt200W65Speed Dome Cameras
	DPSDK_UINT32				iMLenType;			 // Main Camera Lens Type, See DPSDK_LEN_TYPE
	DPSDK_UINT32				iMCamType;			 // Main Camera Type, See DPSDK_CAM_TYPE
	DPSDK_UINT32				iHCamType;			 // From Camera Type, See DPSDK_CAM_TYPE

	// Ball Machine Parameters
	DPSDK_INT32					iHImgWidth;          // From The Camera Image Width
	DPSDK_INT32					iHImgHeight;         // From The Camera Image
	DPSDK_INT32					iPrmFax;     

	/*Default Parameters*/
	//Main Camera Parameters
	DPSDK_INT32					iMCamFC;			 // Equivalent Focal Length Of Camera
	DPSDK_INT32					iMCamCW;			 // Lens Target Height
	DPSDK_INT32					iMCamCH;			 // Wide Shot Target
	DPSDK_INT32					iCamHeight;          // Camera Height (meter), (temporarily Unused)
	DPSDK_INT32					iPrmMA;				 // Focal Length

	// From Camera Parameters
	// Ball Machine Parameters
	DPSDK_INT32					iPrmHW;				 // CMOS Width
	DPSDK_INT32					iPrmHH;				 // CMOS Height
	DPSDK_INT32					iPrmFO;				 // Equivalent Focal Length
	DPSDK_INT32					iPrmCA;				 // Field Of View Parameter
	DPSDK_INT32					iPrmMMul;			 // Maximum Ratio
}DPSDK_MHFPTZ_CONFIGPARAM;

// Fish eye parameters
typedef struct
{
	DPSDK_FISH_SIZE				struMainStreamSize;		// The original width of the main stream is high, and when the incoming resolution is different from it, it is shown that the auxiliary code stream is the scaling of this resolution
	DPSDK_INT32					iOriginX;				// The center abscissa of the fish eye circle in the input image, Normalization to 0-8192coordinate system
	DPSDK_INT32					iOriginY;				// The center longitudinal coordinates of the fish eye circle in the input image, Normalization to 0-8192coordinate system
	DPSDK_INT32					iRadius;				// The radius of the fish eye circle in the input image, Normalization to 0-8192coordinate system
	DPSDK_INT32					iLensDirection;		    // Angle of rotation, Q7format, Range 0-360*128, Generally matched 0
	DPSDK_UINT32				uiMainMountMode;		// Main installation mode,See DPSDK_FISH_MOUNTMODE
	DPSDK_UINT32				uiMainCalibrateMode;	// Image main correction model,See DPSDK_FISH_SHOWMODES
	DPSDK_FISH_MODEINITPARAM	struModeInitParam;		// The external afferent mode initializes each picture information, which is suitable for the mode switch to restore to the last state
	DPSDK_FISH_OUTPUTFORMAT*	pOutputFormat;			// Output image information
	DPSDK_MHFPTZ_CONFIGPARAM*	pConfigParam;			// Fish ball linkage configuration parameters
	DPSDK_INT32					iEnableAutoContrast;    //IN OUT/*Open automatic contrast, 0Close, 1open, This function increases the time consuming of the algorithm, It needs good performance The machine is recommended to open*/
	DPSDK_INT32              	iAlphaHistogram;        //IN OUT /*histogram IIRStrength 0-255, default 128, The bigger the current frame of reference*/
	DPSDK_INT32              	iAlphaGray;             //IN OUT/*Grayscale tensile strength 0-255, default 245, The bigger the weak contrast*/
	DPSDK_FISH_SIZE          	struCaptureSize;		//OUT/*Corresponding to the current mode of screen resolution*/
	DPSDK_INT32					iMhfptzIndex;           //IN /*Serial number of fish ball linkage ball machine 0,1,2.*/... / /At present, the client supports only one fish and one ball, so this parameter Default filling 0There will be an abnormality
	DPSDK_INT32					arriReserved[1];		// Reserved bytes
}DPSDK_FISH_OPTPARAM;


//具体含义可以查看Media::FISH_EPTZPARAM_BASE参数
typedef struct
{
	DPSDK_INT32					iCmd;			//fish ptz opt cmd
	DPSDK_INT32					iWndId;			//fish windows seq id
	DPSDK_INT32					iArg1;			//param arg1
	DPSDK_INT32					iArg2;			//param arg2
	DPSDK_INT32					iArg3;			//param arg3
	DPSDK_INT32					iArg4;			//param arg4
	DPSDK_INT32					iArg5;			//param arg5
	DPSDK_INT32					iArg6;			//param arg6
}DPSDK_FISH_PTZDETAILOPTPARAM;


typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_FISH_PTZDETAILOPTPARAM* pPtzInfo;
}DPSDK_FISH_TABLE_PTZDETAILOPTPARAM;


// Watchman
typedef struct 
{
public:
	DPSDK_BOOL  bAutoTrack;			//open、close device autoTrack
	DPSDK_BOOL  bmanuTrack;			//open、close manu autoTrack
	DPSDK_INT32 iObjectID;			//ivs object id
	DPSDK_INT32 iToken;				//token  useless
	DPSDK_INT32 iDirection;          //rectlocate direction
	DPSDK_INT32 x;					//locate x or rect locate x0
	DPSDK_INT32 y;					//locate y or rect locate y0
	DPSDK_INT32 x1;					//rect locate x1
	DPSDK_INT32 y1;					//rect locate y1
}DPSDK_SMARTTRACK_OPTPARAM;

// EPTZ parameter
typedef struct
{
	DPSDK_UINT32				uiPtzCmd;			// The operation of the cloud platform shows that DPSDK_FISH_EPTZCMD definition
	DPSDK_INT32					iWinId;				// To carry onEptzWindow number, upper left cornerWinId为0Increase from left to right							
	DPSDK_INT32					iArg1;
	DPSDK_INT32					iArg2;
	DPSDK_INT32					iArg3;
	DPSDK_INT32					iArg4;
	DPSDK_INT32					iArg5;
	DPSDK_INT32					iArg6;
	DPSDK_INT32					arriReserved0[6];	// Reserved bytes
	DPSDK_LPVOID				pParam;				// Fish ball linkage
	DPSDK_LPVOID				pResult;
	DPSDK_LPVOID				pArg;   
	DPSDK_INT32					arriReserved1[7];	// Reserved bytes
}DPSDK_FISH_EPTZPARAM;

// External configuration from camera parameters(Fish ball linkage)
typedef struct
{
	DPSDK_INT32				iHCamWax;				// The expectation multiplier corresponds to the dome angle x(horizontal)
	DPSDK_INT32				iHCamWay;				// The expectation multiplier corresponds to the dome angle y (vertical)
	DPSDK_INT32				iHCamWMul;				// Expectation multiplier (benchmark multiplier)
	DPSDK_UINT32			uiHCamType;				// From camera type,See DPSDK_CAM_TYPE
}DPSDK_SUBORDINATE_CAMCONFIGPARAM;

// Fish parameter
typedef struct
{
	DPSDK_INT32						iFitmode; 
	DPSDK_INT32						iDisplaymode; 
	DPSDK_INT32						iWidth; 
	DPSDK_INT32						iHeight; 
	DPSDK_INT32						iOriginX; 
	DPSDK_INT32						iOriginY; 
	DPSDK_INT32						iRadius;
	DPSDK_INT32						iWidthRatio; 
	DPSDK_INT32						iHeightRatio; 
	DPSDK_SUBORDINATE_CAMCONFIGPARAM struSubCamConfigParam;
}DPSDK_FISH_PARAMS;

typedef struct
{
	DPSDK_INT32						iCircleX;			// The center abscissa of the fish eye circle in the input image		
	DPSDK_INT32						iCircleY;			// The center longitudinal coordinates of the fish eye circle in the input image
	DPSDK_INT32						iRadius;			// The radius of the fish eye circle in the input image
	DPSDK_LONG						lWidthRatio;		// The original width of the main stream
	DPSDK_LONG						lHeightRatio;		// The original height of the main stream
}DPSDK_FISH_UPDATE_PARAM;

// Hight DPI parameters
typedef struct
{
	DPSDK_INT32						iWndWidth;			// Play window width
	DPSDK_INT32						iWndHeight;			// Play window height
}DPSDK_HIGH_DPI_PARAM;

// Subscription notice of main-sub tracking of fixed-PTZ camera 
typedef struct
{
	DPSDK_CHAR		szDevId[DPSDK_DEVICE_ID_LEN];		// Device ID
	DPSDK_INT32		iGroup;								//Subscribed group
	DPSDK_INT32     iSubscribeID;                      // Server subscription ID
	DPSDK_INT32     iSubID;                          // Appurtenant S./N.in tracking group
	DPSDK_CHAR      szClass[MAINSALVE_CLASS_LEN];    // Algorithm proposal type
	DPSDK_INT32     iObjectID;                         // Algorithm object ID
}DPSDK_SMARTTRACKOBJECT_NOTIFY;

// Basic video parameters
typedef struct
{
	HCWND			pHWnd;								// Window handle
	HCWND			pOverlayCurveHWnd;
	//Basic video parameters
	DPSDK_CHAR		szCodeId[DPSDK_DEVICE_ID_LEN];		// Channel ID Or equipment ID
	DPSDK_CHAR		szKeyCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR		szDeviceCode[DPSDK_DEVICE_ID_LEN];	// Device code for request media key
	DPSDK_CHAR		szTaskId[DPSDK_ID_LEN];				// intelligent task ID
	DPSDK_INT32		iStreamType;						// Code stream type 1=Main stream, 2=Auxiliary code stream
	DPSDK_INT32		iDataType;							// Video type:1=video, 2=audio frequency, 3=Audio and video
	DPSDK_INT32		iDecodeType;						// Decode type See DPSDK_DECODE_TYPE Definition
	DPSDK_INT32		iStreamMode;						// Playback mode See DPSDK_STREAM_MODE Definition
	DPSDK_UINT32	uiDelayTime;						// Play delay time, when IstreamMode is  DPSDK_STREAM_CUSTOM_MODETime, it is  effective Company MS
	DPSDK_INT32		iRenderType;						// render type 0 - RENDER_D3D11 1 - RENDER_WGL 2 - RENDER_D3D9
	DPSDK_HIGH_DPI_PARAM	struHighDPIParam;			// Hight DPI parameters
	DPSDK_BOOL		bNotCheckHWnd;						// whether need to check Window handle, false: need check, true: not check
	//rvsl pull App video stream
	DPSDK_BOOL		bIsRVSLRoute;						// 
	DPSDK_CHAR		szUserCode[DPSDK_USER_ID_LEN];		// user code
	DPSDK_CHAR		szRegionId[DPSDK_ID_LEN];			// Paas ID
	DPSDK_CHAR		szDomainId[DPSDK_ID_LEN];			// Saas ID
	DPSDK_CHAR		szChnlSN[DPSDK_ID_LEN];				// Channel Gb ID
	DPSDK_CHAR		szRoutePath[DPSDK_FILE_PATH_LEN * 3];	// route path
	DPSDK_INT32		iPullStreamSpeedUp;					// Whether set PullStreamSpeedUp falg enabled or not, 1 enable otherwise disabled
	DPSDK_BOOL		bIsShare;							// Whether is Shared Channel
	DPSDK_CHAR		szSharerId[DPSDK_USER_ID_LEN];		// Sharer UserCode
	DPSDK_BOOL		bAntiAliasEnable;					// whether need to AntiAlias
	DPSDK_BOOL		bShieldLog;							// whether need to Shield Log
	DPSDK_INT32		iUrlType;							// RTSP mode, 1: pull the streaming URL; 2: Push the URL of the stream. Default 2 Push Stream
	DPSDK_BOOL		bIsShortPath;						// whether to Use short path
	DPSDK_BOOL		bFacePrivacy;						// Face Privacy
}DPSDK_MEDIA_BASE_PARAM;

typedef struct
{
	int  iOsdType;			//Info type，32－Time；33－Camera infomation，34－Location marking
	int  iCodeType;			//Encode type，0－UTF-8
	int  iAlignType;		//Alignment，0－left；1－right
	int  iFontSize;			//Font size
	int  iFontType;			//Font type，0－White background and black edge；1－Black background and white edge；2－White；3－Black；4－Auto reverse color
	int  iTop;				//Character top in the picture
	int  iLeft;				//Character left in the picture
	int  iDataLen;			//Length of OSD data
	DPSDK_UCHAR *pData;		//OSD data
}DPSDK_OSDINFO;

typedef struct
{
	int				iOsdNum;							 //number of osd
	DPSDK_OSDINFO	szOsdInfo[8];
}DPSDK_DECINFO;

// DPSDK_MEDIA_CALLBACK
typedef struct
{
	DPSDK_REALDATA_CALLBACK	fRealDataCallBack;			// Bitstream callback
	DPSDK_LPVOID	pRealUserData;						// Code stream callback user data

	DPSDK_FISHEYE_CALLBACK fFishEyeCallBack;			// Fish eye data callback
	DPSDK_LPVOID	pFishEyeUserData;					// Fish eye data callback user data

	DPSDK_DRAW_CALLBACK		fDrawCallBack;				// Video plotting callback
	DPSDK_LPVOID	pDrawUserData;						// Video plotting callback user data

	DPSDK_DRAW_BY_PORT_CALLBACK	fDrawByPortCallBack;	// Video plotting by iport callback
	DPSDK_LPVOID	pDrawByPortUserData;				// Video plotting by iport callback user data

	DPSDK_DRAW_RENDER_CALLBACK	fRenderDrawCallBack;				// Video Render callback
	DPSDK_LPVOID	pRenderDrawUserData;						// Video Render callback user data

	DPSDK_DEMUXDEC_CALLBACK	fDemuxDecCallBack;			// Data callback for the analysis of source data
	DPSDK_LPVOID	pDemuxDecUserData;					// Data callback to user data analyzed by source data

	DPSDK_DEMUXDEC_CALLBACKEX	fDemuxDecCallBackEx;		// Data callback for the analysis of source data with frameTime
	DPSDK_LPVOID	pDemuxDecExUserData;					// Data callback to user data analyzed by source data

	DPSDK_AUDIOFRAMETIME_CALLBACK	fAudioFrameTimeCallBack;			// Data callback for the analysis of source data. For get audio frame time.
	DPSDK_LPVOID	pAudioFrameTimeUserData;					// Data callback to user data analyzed by source data. For get audio frame time.

	DPSDK_EVENT_CALLBACK fEventCallBack;				// Event callbacks
	DPSDK_LPVOID	pEventUserData;						// Event callback user data

	DPSDK_TVWALL_PLAYBACK_CALLBACK fTVWallPlaybackCallBack; // Replay the back wall callback
	DPSDK_LPVOID	pTVWallPlaybackUserData;				// Playback the upper wall callback user data

	DPSDK_EVENT_LOCALPLAY_CALLBACK	fEventLocalCallBack;// Local Record Event Callback
	DPSDK_LPVOID					pEventLocalUserData;// Local Record Event Callback user data

	DPSDK_IVSDATA_CALLBACK			fIVSDataCallBack;
	DPSDK_LPVOID					pIVSUserData;		// Local Record Event Callback user data

	DPSDK_IVSTRANSLATE_CALLBACK		fIvsTranslateCallBack;	//Ivs translate Callback
	DPSDK_LPVOID					pIvsTranslateUserData;	//Ivs translate Callback user data

	DPSDK_DEC_CALLBACK				fDecCallBack;
	DPSDK_LPVOID					pDecUserData;		// Local Record Event Callback user data

	DPSDK_FISHEYE_PARAM_CALLBACK	fFisheyeParamCallBack;	// Fisheye param Callback
	DPSDK_LPVOID					pFisheyeParamUserData;		// Fisheye param Callback user data

	DPSDK_PLAYBACKRANGE_CALLBACK    fPlaybackRangeCallBack;
	DPSDK_LPVOID					pPlaybackRangeData;

	DPSDK_PLAYBACKEVENT_CALLBACK    fPlaybackEventCallBack;
	DPSDK_LPVOID					pPlaybackEventData;

	DPSDK_PLAYBACKENC_CALLBACK      fPlaybackEncChangeCallBack;
	DPSDK_LPVOID					pPlaybackEncChangeData;

	DPSDK_DRAWONETRACK_CALLBACK		fIvsTrackPosCallBack;	//Ivs Tracking Box Position Callback
	DPSDK_LPVOID					pIvsTrackPosUserData;	//Ivs Tracking Box Position Callback use data
	
	DPSDK_VISIBLEDEC_CALLBACK		fVisibleDecCallBack;
	DPSDK_LPVOID					pVisibleDecUserData;

	DPSDK_ATTESTATION_CALLBACK		fAttestationCallBack;
	DPSDK_LPVOID					pAttestationUserData;	

	DPSDK_DECINFO_CALLBACK			fDecInfoCallBack;   // SVAC stream info callback
	DPSDK_LPVOID					pDecInfoUserData;

	DPSDK_MEDIAPROCESS_IVSDATA_CALLBACK	fMediaProcessIVSDataCallBack;
	DPSDK_LPVOID					pMediaProcessIVSUserData;		// 多进程解码 IVS数据回调

	bool							bDisplayCBEnable;				//whether to set displaycallback
}DPSDK_MEDIA_CALLBACK;

// DPSDK_DISPATCHMAINTHREAD_CALLBACK, For MacOS Only
typedef struct
{
	DPSDK_DISPATCHMAINTHREAD		fDispatchMainThreadCallBack;	//Dispatch mainthread Callback
	DPSDK_LPVOID					pDispatchMainThreadUserData;	//Dispatch mainthread Callback user data
}DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK;

typedef struct
{
	DPSDK_INT32		iWidth;
	DPSDK_INT32		iHeight;
	DPSDK_CHAR*		pMask;
}DPSDK_PROFILEDWND;

// Unicast video parameters
typedef struct  
{
	DPSDK_MEDIA_BASE_PARAM	struMediaBaseParam;			// Basic video parameters
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback structure
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure

	//3200W special treatment
	DPSDK_BOOL		bIsUsedST;							// Whether the tag needs to use the special treatment, when the device is 3200W, need to use.

	//Transcoding parameter
	DPSDK_INT32		iUsedVcs;							// Whether the tag needs to pass throughVCSTranscoding.0It means that there is no need for transcoding;1It means that transcoding is required
	DPSDK_CHAR		szVideoCode[DPSDK_VIDEO_PARAM_LEN];	// Video coding format, reference video coding format to define strings
	DPSDK_CHAR		szResolution[DPSDK_VIDEO_PARAM_LEN];// Code stream resolution, reference stream resolution definition string
	DPSDK_INT32		iFps;								// Frame rate
	DPSDK_INT32		iBps;								// Bit stream code stream
	DPSDK_INT32		iExchangeSession;					// Exchange stream session id
	DPSDK_INT32		iCompressVideoPlay;					// if is open video by compress
	DPSDK_INT32		iCompressVideoResolution;			// if is open video by compress resolution 
	DPSDK_CHAR		szOptModule[DPSDK_NAME_LEN];		// use module
	DPSDK_CHAR		szEncryptedInfo[DPSDK_VIDEOSHARE_ENCRYPTEDINFO];	// video enc
	DPSDK_CHAR		szKeyIndex[DPSDK_VIDEOSHARE_KEYINDEX];				// video key
	DPSDK_CHAR		szTrackId[DPSDK_VIDEO_PARAM_LEN];	// Track ID
	DPSDK_CHAR      szStreamType[DPSDK_STREAMTYPE_LEN];                 // StreamType
	DPSDK_CHAR      szScheme[DPSDK_NUMBER_LENGTH];      // flow category

	//yunnan special treatment
	DPSDK_BOOL		bIsUsedDraw;					    // Whether the tag needs to use the special treatment, when the value is true, need to use, if not, don't need to use.
	DPSDK_BOOL		bForceMainStream;					// Whether force to request mainstream while channel doesn't support substream
	DPSDK_INT32		iRTSPTimeout;						// timeout in rtsp
	DPSDK_BOOL		bCloseVideoSdp;						// whether to close video sdp
	DPSDK_PROFILEDWND		struProfiledWnd;			// Profile window parameters

	DPSDK_BASE_PARAM struBaseParam;
	DPSDK_BOOL		bPreVideoEnable;					// Whether to enable video preheat
}DPSDK_REALPLAY_PARAM;

// Unicast video response
typedef struct
{
	DPSDK_INT64		iStopTime;							// Expiration time, time stamp
}DPSDK_REALPLAY_RESP;

// Unicast video parameters
typedef struct  
{
	DPSDK_MEDIA_BASE_PARAM	struMediaBaseParam;			// Basic video parameters
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback structure
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure
	DPSDK_IP struDeviceIp;								// Device ip
	DPSDK_INT32 iDevicePort;							// Device port
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];				// Login name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];				// Device password (encrypt)
	DPSDK_INT32 iChannelNo;								// Channel No.
	DPSDK_BOOL bIsSecurityLogin;						// Whether used security mode to login device

	DPSDK_INT32		iExchangeSession;					// Exchange stream session id
}DPSDK_DEVICE_REALPLAY_PARAM;

typedef struct
{
	DPSDK_BOOL		bCompressState;							// Compress Video State.
	DPSDK_INT32		iSessionId;								// Stream media sessionId
	DPSDK_INT64		iStopTime;							// Expiration time, time stamp
}DPSDK_REALPLAY_RESPONSE_PARAM;

typedef struct  
{
	//Basic video parameters
	DPSDK_CHAR		szCodeId[DPSDK_DEVICE_ID_LEN];		// Channel ID Or equipment ID
	DPSDK_CHAR		szKeyCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32		iStreamType;						// Code stream type 1=Main stream, 2=Auxiliary code stream
	DPSDK_INT32		iDataType;							// Video type:1=video, 2=audio frequency, 3=Audio and video
	DPSDK_CHAR		szTrackId[DPSDK_VIDEO_PARAM_LEN];	// Track ID
}DPSDK_REALSTREAM_PARAM;

typedef enum
{
	DPSDK_PLAY_REAL,
	DPSDK_PLAY_PLAYBACK,
	DPSDK_PLAY_TALK,
}DPSDK_PLAY_TYPE;

typedef struct
{
	// call back
	DPSDK_MEDIA_BASE_PARAM	struMediaBaseParam;			// Basic video parameters
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback structure
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure
														// request parameters
	HCWND			pHWnd;								// Window handle
	DPSDK_CHAR		szURL[DPSDK_URL_LENGTH_EX];				// RTSP URL
	DPSDK_INT32		iServerType;						// Servere type see DPSDK_MTS_TYPE Definition.					

														// Media player parameters
	DPSDK_INT32		iDecodeType;						// Decode type See DPSDK_DECODE_TYPE Definition
	DPSDK_INT32		iPlayType;							// Play type see DPSDK_PLAY_TYPE Definition
	DPSDK_INT32		iStreamMode;						// Play mode See DPSDK_STREAM_MODE Definition, when iPlayType is PLAY_REAL
	DPSDK_UINT32	uiDelayTime;						// Play delay time, when IstreamMode is  DPSDK_STREAM_CUSTOM_MODETime, it is effective Company MS

	DPSDK_INT32		iReDirect;							// Is Redirect

	DPSDK_TIMET		tBeginTime;							// Start time(time stamp)
	DPSDK_TIMET		tPlayTime;							// Start playing time
	DPSDK_TIMET		tEndTime;							// End time(time stamp)
	DPSDK_INT32		iRecordSource;						// Video source, see see DPSDK_SOURCE_TYPE
	DPSDK_INT32		iStreamType;						// Code stream type, see see DPSDK_STREAM_TYPE
	DPSDK_INT32		iRTSPTimeout;						// timeout in rtsp
}DPSDK_PLAY_PARAM;

// Unicast video by url parameters
typedef struct  
{
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback structure
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure
	HCWND			pHWnd;								// Window handle
	DPSDK_CHAR		szURL[DPSDK_URL_LEN];				// RTSP URL

	// Media player parameters
	DPSDK_INT32		iDecodeType;						// Decode type See DPSDK_DECODE_TYPE Definition
	DPSDK_INT32		iStreamMode;						// Playback mode See DPSDK_STREAM_MODE Definition
	DPSDK_UINT32	uiDelayTime;						// Play delay time, when IstreamMode is  DPSDK_STREAM_CUSTOM_MODETime, it is  effective Company MS

	//Transcoding parameter
	DPSDK_INT32		iUsedVcs;							// Whether the tag needs to pass throughVCSTranscoding.0It means that there is no need for transcoding;1It means that transcoding is required
	DPSDK_CHAR		szVideoCode[DPSDK_VIDEO_PARAM_LEN];	// Video coding format, reference video coding format to define strings
	DPSDK_CHAR		szResolution[DPSDK_VIDEO_PARAM_LEN];// Code stream resolution, reference stream resolution definition string
	DPSDK_INT32		iFps;								// Frame rate
	DPSDK_INT32		iBps;								// Bit stream code stream
	DPSDK_BOOL		bReDirect;							// [Useless field]
	DPSDK_BOOL		bUseBG28181;						// Is GB28181
	DPSDK_BOOL		bPassServer;						// Is Pass server
	DPSDK_BOOL		bStdRtsp;							// Is rtsp es stream
	DPSDK_BOOL		bAntiAliasEnable;					// whether need to AntiAlias
	DPSDK_BOOL		bShieldLog;							// whether need to Shield Log
	DPSDK_BOOL		bIsShortPath;						// whether to Use short path
	DPSDK_BOOL		bFacePrivacy;						// Face Privacy
}DPSDK_REALPLAY_BY_URL_PARAM;

// Unicast play back video by url parameters
typedef struct  
{
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback structure
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure
	HCWND			pHWnd;								// Window handle
	DPSDK_CHAR		szURL[DPSDK_URL_LEN];				// RTSP URL

	// Media player parameters
	DPSDK_INT32		iDecodeType;						// Decode type See DPSDK_DECODE_TYPE Definition
	DPSDK_TIMET		tBeginTime;							// record begin time(Time-stamp)
	DPSDK_TIMET		tPlayTime;							// url starts playing time(Time-stamp)
	DPSDK_TIMET		tEndTime;							// record end time(Time-stamp)
	DPSDK_BOOL		bReDirect;							// [Useless field]
	DPSDK_BOOL		bIsPro;								// [Useless field]
	DPSDK_INT32     iPlayDirection;                     // play direction DPSDK_PLAY_DIRECTION
	DPSDK_BOOL		bPassServer;						// Is Pass server
	DPSDK_BOOL		bESRTSP;
	DPSDK_CHAR		szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32		iRecordSource;
	DPSDK_BOOL		bAntiAliasEnable;					// whether need to AntiAlias
	DPSDK_BOOL		bVideoFastQuery;					// wether or not fast query
	DPSDK_BOOL		bIsShortPath;						// whether to Use short path
	DPSDK_BOOL		bFacePrivacy;						// Face Privacy
}DPSDK_PLAYBACK_BY_URL_PARAM;

//Download parameters by RTSP
typedef struct  
{
	DPSDK_EVENT_DOWNLOAD_CALLBACK	fEventCallBack;				// Event callbacks
	DPSDK_LPVOID					pEventUserData;				// Event callback user data

	DPSDK_CHAR			szChannelID[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_SOURCE_TYPE	iSourceType;							// Video source
	DPSDK_STREAM_TYPE	iStreamType;							// Code stream type
	DPSDK_RECORD_TYPE	iRecordType;							// Video type
	DPSDK_TIMET			tBeginTime;								// Start time
	DPSDK_TIMET			tEndTime;								// End time
	DPSDK_CHAR			szSSId[DPSDK_SS_ID_LEN];				// Storage service (IDReturn to the query)
	DPSDK_UINT64		uFileHandle;							// File handle(Return to the query)
	DPSDK_CHAR			szDiskId[DPSDK_DISDK_ID_LEN];			// Disk ID(Return to the query)
	DPSDK_CHAR			szFilename[DPSDK_RECORD_FILE_NAME_LEN];	// The name of the video (different manufacturers are different in the identification of the documents)
	DPSDK_BOOL			bRateCtrl;								// Speed Ctrl, true:Download speed is determined by fSpeed , false:Download speed is 128.0						
	DPSDK_FLOAT			fSpeed;									// Download Speed
	DPSDK_INT32			iReDirect;							// Is Redirect
	HCWND				pHWnd;								// Window handle
	DPSDK_CHAR			szURL[DPSDK_URL_LENGTH_EX];				// RTSP URL
	DPSDK_INT32			iServerType;						// Servere type see DPSDK_MTS_TYPE Definition.			
	DPSDK_CHAR			szChannelName[DPSDK_CHANNEL_NAME_LEN];	// Channel name
	DPSDK_CHAR			szDownloadPath[DPSDK_FILE_PATH_LEN];	// Downloading path
	DPSDK_RECORD_FILE_NAME_RULE			iNameRule;				// Download file naming rules
	DPSDK_CHAR			szDownloadFileName[DPSDK_FILE_PATH_LEN];// Download the name of the file, if it is empty, use INameRuleThe defined rules are generated, not empty,Neglecting INameRule, szDownloadPath, szChannelNamefield
	DPSDK_INT32			iSplitFileSize;							// Division of file size, unit MB，0Non segmentation
	DPSDK_INT32			iFileFormat;			// Download file format
	DPSDK_CHAR			szDomainCode[DPSDK_RECORD_DOMAINCODE_LEN];  // Record Domain Code
	DPSDK_CHAR			szPaasID[DPSDK_CHANNEL_ID_LEN];				// Record Pass Id
	DPSDK_BOOL			bCutRecord;								//is cut
	DPSDK_UINT64		iMaxCutFileSize;						//cut size
	DPSDK_BASE_PARAM	struBaseParam;
}DPSDK_DOWNLOAD_BY_URL_PARAM;

// Track ID
typedef struct
{
	DPSDK_CHAR		szTrackId[DPSDK_TRACK_ID_LEN];		// Track ID: 501-PS stream,601-Original frame,701-Dahua frame,801-Dahua standard frame,901-TS frame,101-RTP standard frame
}DPSDK_TRACK_ID;

//URL 
typedef struct
{
	DPSDK_CHAR   szUrl[DPSDK_URL_LEN];					//URL
	DPSDK_CHAR   szToken[DPSDK_TOKEN_LEN];				//TOKEN
	DPSDK_BOOL	 bPaasTalk;								//is paas 9 talk
}DPSDK_URL;

//TCP link way
typedef enum
{
	DPSDK_TCPMODE_DEFAULT = 0,							// Default link way
	DPSDK_TCPMODE_ACTIVE = 1,							//tcp active link way
	DPSDK_TCPMODE_PASSIVE = 2							//tcp passive link way
}DPSDK_TCP_MODE;

typedef struct
{
	DPSDK_BOOL      bMuticast;							// tag of multicast: true multicast, false Unicast	
	DPSDK_CHAR		szSSrc[DPSDK_IP_LEN];					
	DPSDK_CHAR		szSrcIp[DPSDK_IP_LEN];				
	DPSDK_INT32		iSrcPort;							
}DPSDK_RTSP_INFO;

// Video parameter //for new Protocol:28181
typedef struct
{
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback function
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure
	DPSDK_CHAR		szCodeId[DPSDK_DEVICE_ID_LEN];		// Channel id or device id
	DPSDK_INT32		iSubType;						    // Code stream type 1=Main stream, 2=Auxiliary code stream
	DPSDK_CHAR      szStreamType[DPSDK_STREAMTYPE_LEN]; // Video stream type normal, intelligent, private
	DPSDK_CHAR		szKeyCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32		iDataType;							// Video type:1=video, 2=audio frequency, 3=Audio and video
	DPSDK_INT32		iTransMode;							// 0:UDP, 1:TCP
	DPSDK_CHAR		szDstIp[DPSDK_IP_LEN];				// Destination IP
	DPSDK_INT32		iDstPort;							// Destination port
	DPSDK_CHAR		szTrcakID[DPSDK_TRACK_ID_LEN];		// TrackID
	DPSDK_INT32		iRtpHeadType;						// 1TRP, 2 NONE
	DPSDK_CHAR		szDevCode[DPSDK_DEVICE_ID_LEN];		// Device code
	DPSDK_TCP_MODE	iTcpMode;							// 0,Default link way，1active link way，2passive link way
	DPSDK_INT32		iOptionDPSDK;						// 0,Start from setup, 1,Start from Option then Option and Describe Uaer-Agent is "DPSDK"
	DPSDK_BOOL		bPrerTcpMode;						// is prer tcp mode
	DPSDK_BOOL      bUseBG28181;                        // 1,denotes pull flow, 2,denotes push flow, have to be given value  
	DPSDK_INT32		iTimeOut;							// 0,default 600, webgate
}DPSDK_REALPLAY_TO_IP_PARAM;

typedef struct  
{
	DPSDK_CHAR		szPayLoadType[DPSDK_LEN_64];
}DPSDK_PAYLOADTYPE_INFO;

// Multicast parameter
typedef struct  
{
	DPSDK_MEDIA_BASE_PARAM struMediaBaseParam;			// Basic video parameters
	DPSDK_MEDIA_CALLBACK struMediaCallBack;				// Video callback structure
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure

	DPSDK_CHAR		szTrackId[DPSDK_VIDEO_PARAM_LEN];	// Track ID
}DPSDK_MULITCAST_REALPLAY_PARAM;

// Multi screen preview video parameters
typedef struct  
{
	DPSDK_MEDIA_BASE_PARAM	struMediaBaseParam;			// Basic video parameters
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback structure
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure

	DPSDK_CHAR		szTrackId[DPSDK_VIDEO_PARAM_LEN];	// Track ID

	// Multi picture preview
	DPSDK_INT32		iScreenNum;							// Multi picture segmentation number
	DPSDK_INT32		iStartChnlIndex;					// Starting channel
	DPSDK_CHAR		szOptModule[DPSDK_NAME_LEN];		// use module
}DPSDK_MULITVIEW_REALPLAY_PARAM;

// Video status
typedef enum
{
	RECORD_STATUS_IDLE		= 0,						// Video does not make it possible
	RECORD_STATUS_NORMAL	= 1,						// In the ordinary video
	RECORD_STATUS_EXCEPTION = 2,						// Abnormal
	RECORD_STATUS_MANUAL	= 3,						// Manual video is being triggered
}DPSDK_RECORD_STATUS;

// Channel video information
typedef struct
{
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];		// Channel coding
	DPSDK_INT32 iChannelSeq;							// Channel number
	DPSDK_INT32 iRecordStatus;							// Video status SeeDPSDK_RECORD_STATUSDefinition
	DPSDK_INT32 iFlow;									// Average flow rate (Kbps）
	DPSDK_INT32 iStreamType;							// Code stream type See DPSDK_STREAM_TYPEDefinition
	DPSDK_INT32 iUsedCapacity;							// Used storage capacity
}DPSDK_RECORD_STATUS_INFO;

typedef struct
{
	DPSDK_UINT32				uTagId;										// The value of tag unique id is 0 when add
	DPSDK_CHAR					szUserCode[DPSDK_USER_ID_LEN];				// User ID
	DPSDK_CHAR					szCameraId[DPSDK_CHANNEL_ID_LEN];			// Camera ID   
	DPSDK_CHAR					szSubject[DPSDK_RECORD_TAG_SUBJECT_LEN];	// The title of tag(name)
	DPSDK_TIMET					tTagTime;									// The video time of marking
	DPSDK_INT32					iTagType;									// 1=Point time, 2=Range time
	DPSDK_TIMET					tBeginTagTime;								// Begin time,iTagType=2 is effective
	DPSDK_TIMET					tEndTagTime;								// End time,iTagType=2 is effective 
	DPSDK_UINT32				uOwnerId;									// User ID
	DPSDK_SOURCE_TYPE			iSourceType;								// Video source 
	
	DPSDK_CHAR					szContent[DPSDK_RECORD_TAG_CONTENT_LEN];	// The content of tag
	DPSDK_CHAR					szUrl[DPSDK_URL_LEN];						// The URL address of save picture
	DPSDK_INT32					iIsCollect;									// 0=Not collect, 1=Collect
	DPSDK_BASE_PARAM			struBaseParam;
}DPSDK_ADD_RECORD_TAG_PARAM;

typedef struct
{
	DPSDK_CHAR					szTagId[DPSDK_ID_LEN];						// Video tag ID
	DPSDK_CHAR					szSubject[DPSDK_RECORD_TAG_SUBJECT_LEN];	// The title of tag(name)
	DPSDK_CHAR					szContent[DPSDK_RECORD_TAG_CONTENT_LEN];	// The content of tag
	DPSDK_INT32					iIsCollect;									// 0=Not collect, 1=Collect
	DPSDK_BASE_PARAM			struBaseParam;
}DPSDK_UPDATE_RECORD_TAG_PARAM;

// Paging information 
typedef struct
{
	DPSDK_UINT32 uiPage;											// The current paging, from 1 start
	DPSDK_UINT32 uiPageSize;										// Page size
}DPSDK_PAGE_INFO;

typedef struct  
{
	DPSDK_INT32						iChannelNum;							// Channel number
	DPSDK_CHANNEL_ID*				pChannelList;							// Channel list
	DPSDK_INT32						iIsCollect;								// 0=Not collect, 1=Collect
	DPSDK_CHAR						szCameraId[DPSDK_CHANNEL_ID_LEN];		// Camera ID
	DPSDK_CHAR						szUserId[DPSDK_USER_ID_LEN];				// User ID
	DPSDK_SOURCE_TYPE				iSourceType;							// Video source, platform record or device record
	DPSDK_TIMET						tStartTime;								// Star time
	DPSDK_TIMET						tEndTime;								// End time
	DPSDK_CHAR						szKeyword[DPSDK_KEY_WORD_LEN];			// Keyword
	DPSDK_PAGE_INFO					struPageInfo;							// VSL param
	DPSDK_BASE_PARAM				struBaseParam;
}DPSDK_QUERY_RECORD_TAG_PARAM;

typedef struct  
{
	DPSDK_CHAR					  	szTagId[DPSDK_ID_LEN];						// Video tag ID
	DPSDK_CHAR						szUserCode[DPSDK_USER_ID_LEN];				// User ID
	DPSDK_CHAR						szUsername[DPSDK_NAME_LEN];					// username
	DPSDK_UINT32					uTagId;										// Video tag ID
	DPSDK_SOURCE_TYPE				iSourceType;								// Video source, platform video or device video
	DPSDK_CHAR						szCameraId[DPSDK_CHANNEL_ID_LEN];			// CameraID
	DPSDK_CHAR						szSubject[DPSDK_RECORD_TAG_SUBJECT_LEN];	// The title of tag(name)
	DPSDK_INT32						iTagType;									// 1=Point time, 2=Range time
	DPSDK_TIMET						tTagTime;									// The video time of marking,iTagType=1 is effective
	DPSDK_TIMET						tBeginTagTime;								// Begin time,iTagType=2 is effective
	DPSDK_TIMET						tEndTagTime;								// End time,iTagType=2 is effective  
	DPSDK_CHAR						szContent[DPSDK_RECORD_TAG_CONTENT_LEN];	// The content of tag
	DPSDK_CHAR						szUrl[DPSDK_URL_LEN];						// The URL address of save picture
	DPSDK_INT32						iIsCollect;									// 0=Not collect, 1=Collect
}DPSDK_SINGLE_RECORD_TAG_INFO;

// Alarm linkage record information
typedef struct
{
	DPSDK_CHAR			szLinkRecordId[DPSDK_CHANNEL_ID_LEN];		// Linkage record channel ID
	DPSDK_INT32			iRecordPosition;								// Record storage position, 1: center and device, 2: only device, 3: only center
	DPSDK_INT32			iStreamType;									// Code stream type
	DPSDK_INT32			iRecordTime;									// Record time
	DPSDK_INT32			iPrerecordTime;									// Prerecord time
}DPSDK_ALARMLINKRECORD_INFO;

typedef struct
{
	DPSDK_INT32						iRetCount;							// The number of videos returned
	DPSDK_ALARMLINKRECORD_INFO*		pAlarmLinkRecordInfo;				// The information of link record
}DPSDK_ALARM_LINK_RECORD_INFO_LIST;

typedef struct
{
	DPSDK_CHAR						szCameraId[DPSDK_CHANNEL_ID_LEN];			// Camera ID
	DPSDK_INT32						iRetCount;									// The number of videos returned
	DPSDK_SINGLE_RECORD_TAG_INFO	struSingleRecordTagInfo[1];					// The information of video tag
}DPSDK_RECORD_TAG_INFO_LIST;

typedef struct  
{
	DPSDK_CHAR						szCameraId[DPSDK_CHANNEL_ID_LEN];			// Camera ID
	DPSDK_SOURCE_TYPE				iSourceType;								// Video source, platform video or device video
	DPSDK_TIMET						tStartTime;									// The start time of lock
	DPSDK_TIMET						tEndTime;									// The end time of lock
	DPSDK_CHAR						szReason[DPSDK_LOCK_RECORD_REASON_LEN];		// The reason of lock
}DPSDK_LOCK_RECORD_PARAM;

// Lock record file
typedef struct
{
	DPSDK_CHAR						szCameraId[DPSDK_CHANNEL_ID_LEN];			// Camera ID
	DPSDK_CHAR						szFilename[DPSDK_RECORD_FILE_NAME_LEN];		// The name of the video (different manufacturers are different in the identification of the documents)
	DPSDK_BASE_PARAM				struBaseParam;
}DPSDK_LOCK_RECORD_FILE_PARAM;

// Unlock record file
typedef struct
{
	DPSDK_CHAR						szCameraId[DPSDK_CHANNEL_ID_LEN];			// Camera ID
	DPSDK_CHAR						szFilename[DPSDK_RECORD_FILE_NAME_LEN];		// The name of the video (different manufacturers are different in the identification of the documents)
	DPSDK_BOOL						bForce;										// Whether or not compulsory
	DPSDK_BASE_PARAM				struBaseParam;
}DPSDK_UNLOCK_RECORD_FILE_PARAM;

// Locking or unlocking the results of video files
typedef struct
{
	DPSDK_INT32 iLockNum;														// Lock number
}DPSDK_LOCK_RECORD_FILE_RESULT;

typedef struct  
{
	DPSDK_INT32						iChannelNum;							// Channel number
	DPSDK_CHANNEL_ID*				pChannelList;							// Channel list
	DPSDK_CHAR						szUserId[DPSDK_USER_ID_LEN];				// User ID
	DPSDK_CHAR						szCameraId[DPSDK_CHANNEL_ID_LEN];			// Camera ID
	DPSDK_SOURCE_TYPE				iSourceType;								// Video source, platform video or device video
	DPSDK_TIMET						tStartTime;									// The start time of lock
	DPSDK_TIMET						tEndTime;									// The unlock time of lock
	DPSDK_CHAR						szReason[DPSDK_LOCK_RECORD_REASON_LEN];		// The reason of lock
	DPSDK_BASE_PARAM				struBaseParam;
}DPSDK_QUERY_LOCK_RECORD_PARAM;

typedef struct  
{
	DPSDK_INT32						iLockId;									// Video lock ID
	DPSDK_CHAR						szUserId[DPSDK_USER_ID_LEN];				// Lock user
	DPSDK_SOURCE_TYPE				iSourceType;								// Video source, platform video or device video
	DPSDK_TIMET						tOperateTime;								// Operate time
	DPSDK_CHAR						szCameraId[DPSDK_CHANNEL_ID_LEN];			// Camera ID
	DPSDK_CHAR						szUserIp[DPSDK_IP_LEN];						// User IP
	DPSDK_CHAR						szUserName[DPSDK_NAME_LEN];					// User name
	DPSDK_TIMET						tStartTime;									// The start time of lock
	DPSDK_TIMET						tEndTime;									// The end time of lock
	DPSDK_CHAR						szReason[DPSDK_LOCK_RECORD_REASON_LEN];		// The reason of lock
	DPSDK_CHAR						szFileName[DPSDK_RECORD_FILE_NAME_LEN];		// The name of record file
}DPSDK_SINGLE_RECORD_LOCK_INFO;

typedef struct  
{
	DPSDK_CHAR						szCameraID[DPSDK_CHANNEL_ID_LEN];			// Camera ID
	DPSDK_INT32						iRetCount;									// The number of returned
	DPSDK_SINGLE_RECORD_LOCK_INFO	struSingleRecordLockInfo[1];				// Used to save the informations of video lock which are query, the size of it depend on iReqCount
}DPSDK_RECORD_LOCK_INFO_LIST;

typedef struct  
{
	DPSDK_CHAR							szCameraId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_SOURCE_TYPE					iSourceType;								// Video source type
	DPSDK_INT32							iYear;										// Year
	DPSDK_INT32							iMonth;										// Month
	bool								bTimeZoneOffset;
	DPSDK_DOUBLE						fTimeZoneOffset;							// timezone offset. East 8 is -8, west 8 is 8
	DPSDK_BASE_PARAM					struBaseParam;
}DPSDK_QUERY_RECORD_DATE_PARAM;

typedef struct
{
	DPSDK_INT32		RecordDays[DPSDK_DAY_IN_MONTH];	// The record is video taped. 0 start for the first day
}DPSDK_RECORD_DATE_INFO;

typedef struct
{
	DPSDK_CHAR							szAlarmCode[DPSDK_CHANNEL_ID_LEN];			// 	Alarm ID
	DPSDK_CHAR							szAlarmTime[DPSDK_ALARM_TIME_LEN_LOING];	//  Alarm time yyyymmddhhmmss
	DPSDK_CHAR							szExtend[DPSDK_ALARM_HANDLEMESSAGE_LEN];			//  extend info
	DPSDK_INT32							iDbType;									//  Dbtype: 0 ordinary, 1 cloudDb 
	DPSDK_CHAR							szAlarmLinkId[DPSDK_ALARM_RECORD_PICTURE_URL_LEN];			//  extend info
	DPSDK_BASE_PARAM					struBaseParam;
}DPSDK_QUERY_ALARM_RECORD_PARAM;

// Query record information
typedef struct
{
	DPSDK_CHAR							szCameraId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_STREAM_TYPE					iStreamType;								// Code stream type
	DPSDK_SOURCE_TYPE					iSourceType;								// Video source type
	DPSDK_RECORD_TYPE					iRecordType;								// Video type
	DPSDK_CHAR							szRecordSubType[DPSDK_TYPE_LEN];
	DPSDK_TIMET							tBeginTime;									// Start time
	DPSDK_TIMET							tEndTime; 									// End time
	DPSDK_CHAR                          szUtcBeginTime[DPSDK_TIME_STRING_LEN];
	DPSDK_CHAR                          szUtcEndTime[DPSDK_TIME_STRING_LEN];
	DPSDK_CHAR							szEncryptedInfo[DPSDK_VIDEOSHARE_ENCRYPTEDINFO];				// video enc
	DPSDK_CHAR							szKeyIndex[DPSDK_VIDEOSHARE_KEYINDEX];							// video key
	DPSDK_UINT32                        uiPage;                                                         // page number
	DPSDK_UINT32                        uiPageSize;                                                     // records num per page
	DPSDK_INT64							iPlace;										//query local record
	DPSDK_CHAR							szUserId[DPSDK_USER_ID_NUM_LEN];			//User Code
	DPSDK_CHAR							szRoutePath[DPSDK_FILE_PATH_LEN * 3];		//Route Path
	DPSDK_BASE_PARAM					struBaseParam;
	DPSDK_CHAR							szSession[DPSDK_SESSION_LEN];				// Page Session
}DPSDK_QUERY_RECORD_PARAM;

// Query app record information
typedef struct
{
	DPSDK_CHAR							szCameraId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR							szPaasId[DPSDK_ID_LEN];						// Paas ID
	DPSDK_STREAM_TYPE					iStreamType;								// Code stream type
	DPSDK_SOURCE_TYPE					iSourceType;								// Video source type
	DPSDK_RECORD_TYPE					iRecordType;								// Video type
	DPSDK_CHAR							szRecordSubType[DPSDK_TYPE_LEN];
	DPSDK_TIMET							tBeginTime;									// Start time
	DPSDK_TIMET							tEndTime; 									// End time
	DPSDK_CHAR							szEncryptedInfo[DPSDK_VIDEOSHARE_ENCRYPTEDINFO];				// video enc
	DPSDK_CHAR							szKeyIndex[DPSDK_VIDEOSHARE_KEYINDEX];							// video key
}DPSDK_QUERY_APP_RECORD_PARAM;

typedef struct 
{
	DPSDK_CHAR							szChannelId[DPSDK_CHANNEL_ID_LEN];		//Channel ID
	DPSDK_CHAR							szDeleteReason[DPSDK_DELETE_REASON];	//Delete Reason
}DPSDK_DELETE_RECORD_REASON_PARAM;


typedef struct
{
	DPSDK_SOURCE_TYPE	iSourceType;							// Video source
	DPSDK_RECORD_TYPE	iRecordType;							// Video type. See RecordType_e
	DPSDK_TIMET		iStartTime;									// Start time
	DPSDK_TIMET		iEndTime;									// End time				
	DPSDK_CHAR      szUtcStartTime[DPSDK_TIME_STRING_LEN];
	DPSDK_CHAR      szUtcEndTime[DPSDK_TIME_STRING_LEN];
	DPSDK_CHAR		szName[DPSDK_RECORD_FILE_NAME_LEN];			// The name of the video (different manufacturers are different in the identification of the documents)
	DPSDK_INT64		iLength;									// File length, unit KB
	DPSDK_STREAM_TYPE	iStreamType;							// Code stream type

																// Here's the information needed for the center video
	DPSDK_INT64		iPlanId;									// Video plan ID
	DPSDK_CHAR	    szSSId[DPSDK_SS_ID_LEN];					// Storage service (IDReturn to the query)
	DPSDK_CHAR		szDiskId[DPSDK_DISDK_ID_LEN];				// Disk ID
	DPSDK_INT32		iFileHandle;								// File handle				
	DPSDK_CHAR		szChannelCode[DPSDK_CHANNEL_ID_LEN];		// Channel coding
	DPSDK_BOOL		bRecordHidden;								// Video hiding state True: concealment ；False Visible
	DPSDK_BOOL		bForgotten;									// Do you forget to forget the video

																// The informations of alarm video what are add
	DPSDK_CHAR		szAlarmChannelId[DPSDK_ALARM_CHANNEL_ID_LEN];	// Video camera ID

	DPSDK_BOOL		bLocked;									// Whether or not to be locked,Device video will not be locked
	DPSDK_BOOL		bIsDaylight;								// Whether or not record file in day light
	DPSDK_UINT32	iPlaybackType;								// the type of playback eg.time\file\both
	DPSDK_CHAR		szPassId[DPSDK_RECORD_DOMAIN_LEN];			// Record Pass Domain ID
	DPSDK_CHAR		szDomainCode[DPSDK_RECORD_DOMAINCODE_LEN];  // Record Domain Code
}DPSDK_SINGLE_RECORD_INFO;


typedef struct
{
	DPSDK_CHAR				szServerIp[DPSDK_IP_LEN];				// server IP
	DPSDK_CHAR    		    szDiskIP[DPSDK_IP_LEN];					// disk IP
	DPSDK_CHAR				szDiskPath[DPSDK_FILE_PATH_LEN];		// disk path
	DPSDK_INT32				iType;									//异常类型： 1=磁盘故障，2=磁盘读写异常
	DPSDK_INT32				iStatus;								//1 = 发生，2 = 清楚
}DPSDK_DISKALARMEVENT_NOTIFY;

// Record information
typedef struct
{
	DPSDK_CHAR		szTransMode[10];							// 8 or 9
	DPSDK_CHAR		szCameraId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_UINT32	iRetCount;									// Return the number of records, that is record number of recorded video records
	DPSDK_UINT32	iPlaybackType;								// the type of playback eg.time\file\both
	int				iNextPage;									// -1 query finish, 0 not exist, otherwise Next query page
	DPSDK_BOOL		bSupportExport;							// Support export video
	DPSDK_CHAR		szSecurityLevel[2];						// Security level
	DPSDK_INT32		iPageCount;									// Total Page Number
	DPSDK_CHAR		szSession[DPSDK_SESSION_LEN];				// Page Session
	DPSDK_SINGLE_RECORD_INFO	struSingleRecord[1];			// Video recording information
}DPSDK_RECORD_INFO_LIST;

typedef struct
{
	DPSDK_CHAR          szFile[DPSDK_RECORD_FILE_NAME_LEN];     // file category
	DPSDK_TIMET			tBeginTime;								// start time
	DPSDK_TIMET			tEndTime;								// End time
	DPSDK_STREAM_TYPE	iStreamType;			// Code stream type
	DPSDK_SOURCE_TYPE	iSourceType;			// Video source type
	DPSDK_RECORD_TYPE	iRecordType;			// Video type
	DPSDK_CHAR			szAPPChannelPaasId[DPSDK_CHANNEL_ID_LEN];		// app channel paas id
	DPSDK_CHAR			szDomainCode[DPSDK_RECORD_DOMAINCODE_LEN];  // Record Domain Code
}DPSDK_RECORDS_INFO;

// Playback parameter
typedef struct
{
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback function
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure

	HCWND			pHWnd;								// Window handle
	DPSDK_INT32		iDirection;							// Playback direction See DPSDK_PLAY_DIRECTION Definition
	DPSDK_INT32		iDecodeType;						// Decode type See DPSDK_DECODE_TYPE Definition

	//3200W special treatment
	DPSDK_BOOL		bIsUsedST;							// Whether the tag needs to use the special treatment, when the device is 3200W, need to use.
	DPSDK_BOOL		bInstantPlayback;					// Whether instant playback enabled.
	DPSDK_BOOL		bPlayIFrameMode;					// Whether only play back I frame.
	
	DPSDK_CHAR		szSN[DPSDK_SN_LEN];
	DPSDK_CHAR		szGbId[DPSDK_SN_LEN];
	
	DPSDK_CHAR		szCodeId[DPSDK_CHANNEL_ID_LEN];		// Channel id or device id
	DPSDK_CHAR		szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_TIMET		tBeginTime;							// Start time(time stamp)
	DPSDK_TIMET		tPlayTime;							// Start playing time
	DPSDK_TIMET		tEndTime;							// End time(time stamp)
	DPSDK_BOOL		bOnlySupportRealUTC;				// Support Real UTC
	DPSDK_TIMET		tRealUTCBeginTime;					// Start time(Real UTC time stamp)
	DPSDK_TIMET		tRealUTCPlayTime;					// Start playing time Real UTC
	DPSDK_TIMET		tRealUTCEndTime;					// End time(Real UTC time stamp)
	
	DPSDK_CHAR		szSSId[DPSDK_SS_ID_LEN];		// SS Id
	DPSDK_UINT64	uFileHandle;						// File handle(Return to the query)
	DPSDK_INT32		iRecordSource;						// Video source, see see DPSDK_SOURCE_TYPE
	DPSDK_INT32		iStreamType;						// Code stream type, see see DPSDK_STREAM_TYPE
	DPSDK_INT32		iRecordType;						// Video type, see see DPSDK_RECORD_TYPE
	DPSDK_HIGH_DPI_PARAM	struHighDPIParam;			// Hight DPI parameters

	DPSDK_BOOL 		bDevicePlayback;					// Direct connect device to play back
	DPSDK_IP 		struDeviceIp;						// Device ip
	DPSDK_INT32 	iDevicePort;						// Device port
	DPSDK_CHAR 		szLoginName[DPSDK_NAME_LEN];		// Login name
	DPSDK_CHAR 		szLoginPWD[DPSDK_PWD_LEN];			// Device password (encrypt)
	DPSDK_INT32 	iChannelNo;							// Channel No.
	DPSDK_BOOL 		bIsSecurityLogin;					// Whether used security mode to login device
	DPSDK_CHAR		szOptModule[DPSDK_NAME_LEN];		// use module
	DPSDK_BOOL		bSyncPlay;							// whether sync play
	DPSDK_CHAR		szEncryptedInfo[DPSDK_VIDEOSHARE_ENCRYPTEDINFO];				// video enc
	DPSDK_CHAR		szKeyIndex[DPSDK_VIDEOSHARE_KEYINDEX];							// video key
	DPSDK_CHAR		szAPPChannelPaasId[DPSDK_CHANNEL_ID_LEN];		// app channel paas id
	DPSDK_CHAR		szDomainCode[DPSDK_RECORD_DOMAINCODE_LEN];  // Record Domain Code
	DPSDK_CHAR		szTrcakID[DPSDK_TRACK_ID_LEN];		// Track ID
	DPSDK_RECORDS_INFO*  pDownLoadFileList;             // File list(with new protocol)
	DPSDK_INT32          iDownLoadFileNum;			    // File num of list
	DPSDK_BOOL			bFullFrame;

	//yunnan special treatment
	DPSDK_BOOL		bIsUsedDraw;					    // Whether the tag needs to use the special treatment, when the value is true, need to use, if not, don't need to use.
	DPSDK_BOOL		bOpenSeamlessSwitch;				// Whether open seamless switch
	DPSDK_INT32		iRTSPTimeout;						// timeout in rtsp
	DPSDK_BOOL		bCloseVideoSdp;						// whether to close video sdp
	DPSDK_CHAR		szRoutePath[DPSDK_FILE_PATH_LEN * 3];			//route path
	
	DPSDK_BASE_PARAM struBaseParam;

	DPSDK_BOOL		bAntiAliasEnable;					// wether or not Enable AntiAlias
	DPSDK_INT32		iUrlType;							// RTSP mode, 1: pull the streaming URL; 2: Push the URL of the stream. Default 2 Push Stream
	
	DPSDK_BOOL		bVideoFastQuery;					// wether or not fast query
	DPSDK_BOOL		bIsShortPath;						// whether to Use short path
	DPSDK_BOOL		bFacePrivacy;							// Face Privacy
	DPSDK_BOOL		bSlideMode;							// SlideMode
	DPSDK_INT32		bLargePicAdjustmentEnable;			// Large Pic Adjustment Enable  0：不抽帧，1：自适应抽帧，2：强制抽帧
}DPSDK_PLAYBACK_BY_TIME_PARAM;

// Playback by time with url parameter
typedef struct
{
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback function
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure

	HCWND			pHWnd;								// Window handle
	DPSDK_INT32		iDirection;							// Playback direction See DPSDK_PLAY_DIRECTION Definition

	DPSDK_CHAR		szURL[DPSDK_URL_LEN];				// RTSP URL

	DPSDK_TIMET		tBeginTime;							// Start time(time stamp)
	DPSDK_TIMET		tPlayTime;							// Start playing time
	DPSDK_TIMET		tEndTime;							// End time(time stamp)
	DPSDK_INT32		iRecordSource;						// Video source, see see DPSDK_SOURCE_TYPE
	DPSDK_INT32		iStreamType;						// Code stream type, see see DPSDK_STREAM_TYPE
	DPSDK_INT32		iRecordType;						// Video type, see see DPSDK_RECORD_TYPE
	DPSDK_CHAR		szEncryptedInfo[DPSDK_VIDEOSHARE_ENCRYPTEDINFO];				// video enc
	DPSDK_CHAR		szKeyIndex[DPSDK_VIDEOSHARE_KEYINDEX];							// video key
	DPSDK_CHAR		szTrcakID[DPSDK_TRACK_ID_LEN];		// Track ID
	DPSDK_BOOL		bFileStreamPlay;					// use file steam play

	//yunnan special treatment
	DPSDK_BOOL		bIsUsedDraw;					    // Whether the tag needs to use the special treatment, when the value is true, need to use, if not, don't need to use.
	DPSDK_BOOL		bAntiAliasEnable;					// wether or not Enable AntiAlias

	DPSDK_BOOL		bVideoFastQuery;					// wether or not fast query
	DPSDK_BOOL		bCloseVideoSdp;						// whether to close video sdp

	DPSDK_BOOL		bIsShortPath;						// whether to Use short path
	DPSDK_BOOL		bFacePrivacy;						// Face Privacy
}DPSDK_PLAYBACK_BY_TIME_BY_URL_PARAM;

// Playback parameter
typedef struct
{
	DPSDK_CHAR		szCodeId[DPSDK_CHANNEL_ID_LEN];		// Channel id or device id
	DPSDK_TIMET		tBeginTime;							// Start time(time stamp)
	DPSDK_TIMET		tPlayTime;							// Start playing time
	DPSDK_TIMET		tEndTime;							// End time(time stamp)
	DPSDK_INT32		iRecordSource;						// Video source, see see DPSDK_SOURCE_TYPE
	DPSDK_INT32		iStreamType;						// Code stream type, see see DPSDK_STREAM_TYPE
	DPSDK_INT32		iRecordType;						// Video type, see see DPSDK_RECORD_TYPE
	DPSDK_BOOL		bUseBG28181;						// Is GB28181
	DPSDK_CHAR		szSSId[DPSDK_SS_ID_LEN];		// SS Id
	DPSDK_UINT64	uFileHandle;						// File handle(Return to the query)
	DPSDK_CHAR		szOptModule[DPSDK_NAME_LEN];		// use module
	DPSDK_BOOL		bPassServer;						// Is Pass server
	DPSDK_BOOL		bSyncPlay;							// whether sync play
	DPSDK_BOOL		bAntiAliasEnable;					// wether or not Enable AntiAlias
	DPSDK_BOOL		bIsShortPath;						// whether to Use short path
	DPSDK_BOOL		bFacePrivacy;						// Face Privacy
}DPSDK_GET_PLAYBACK_URL_BY_TIME_PARAM;

typedef enum
{
	PB_MODE_NORMAL	 = 0,								// Ordinary video
	PB_MODE_DOWNLOAD = 1,								// Down load
}DPSDK_PLACK_MODE;

typedef enum
{
	PB_TYPE_FILE = 0,								// File playback
	PB_TYPE_TIME = 1,								// Time playback
	PB_TYPE_RTSP = 2,								// RTSP playback
	PB_TYPE_DEVICE_TIME = 3,								
	PB_TYPE_LOCALFILE = 4,							// Local file playback
}DPSDK_PLACK_TYPE;

// Playback by time parameter //for new Protocol:28181
typedef struct
{
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback function
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure
	DPSDK_CHAR		szCodeId[DPSDK_CHANNEL_ID_LEN];		// Channel id or device id
	DPSDK_INT32		iRecordSource;						// Video source, see DPSDK_SOURCE_TYPE
	DPSDK_PLACK_MODE iPlayBackMode;						// 0，Ordinary video, 1 Down load
	DPSDK_CHAR		szDstIp[DPSDK_IP_LEN];				// Destination IP
	DPSDK_INT32		iDstPort;							// Destination port
	DPSDK_CHAR		szTrcakID[DPSDK_TRACK_ID_LEN];		// Track ID
	DPSDK_TIMET		tBeginTime;							// Start time(time stamp) 
	DPSDK_TIMET		tPlayTime;							// Start time of play
	DPSDK_TIMET		tEndTime;							// End time(time stamp) 
	DPSDK_INT32		iStreamType;						// Code stream type, see see DPSDK_STREAM_TYPE
	DPSDK_INT32		iRtpHeadType;						// 1TRP, 2 NONE
	DPSDK_PLAYBACK_SPEED iSpeed;						// Play speed
	DPSDK_CHAR		szDevCode[DPSDK_DEVICE_ID_LEN];		// Device code
	DPSDK_TCP_MODE	iTcpMode;							// 0,default link way，1 active link way，2 passive link way
	DPSDK_INT32		iDirection;							// Playback direction See DPSDK_PLAY_DIRECTION Definition
	DPSDK_BOOL      bFullFrame;                         // 是否全帧播放，true-传输所有的帧，用于下载场景。false-在高倍速时允许抽帧，只发I帧，用于回放场景。默认false 回放
	DPSDK_BOOL      bUseBG28181;                        // 1,denotes pull flow, 2,denotes push flow 
	DPSDK_INT32		iTimeOut;							// 0,default 600 sec, webgate
	DPSDK_INT32		iRecordType;						// Video type, see see DPSDK_RECORD_TYPE
	DPSDK_BOOL		bPrerTcpMode;						// is prer tcp mode
}DPSDK_PLAYBACK_TO_IP_BY_TIME_PARAM;

// Playback by file parameter//for new Protocol:28181
typedef struct
{
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback function
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure
	DPSDK_CHAR		szCodeId[DPSDK_CHANNEL_ID_LEN];		// Channel id
	DPSDK_INT32		iRecordSource;						// Video source, see DPSDK_SOURCE_TYPE
	DPSDK_PLACK_MODE	iPlayBackMode;					// 0，Ordinary video, 1 Down load
	DPSDK_CHAR		szFilename[DPSDK_RECORD_FILE_NAME_LEN];	// The name of the video (different manufacturers are different in the identification of the documents)
	DPSDK_TIMET		tBeginTime;							// Start time
	DPSDK_TIMET		tEndTime;							// End time
	DPSDK_CHAR	    szSSId[DPSDK_SS_ID_LEN];			// Storage service (IDReturn to the query)
	DPSDK_UINT64	uFileHandle;						// File handle(Return to the query)
	DPSDK_CHAR		szDiskId[DPSDK_DISDK_ID_LEN];		// Disk ID(Return to the query)
	DPSDK_CHAR		szDstIp[DPSDK_IP_LEN];				// Destination IP
	DPSDK_UINT32	iDstPort;							// Destination port
	DPSDK_CHAR		szTrcakID[DPSDK_TRACK_ID_LEN];		//TrackID
	DPSDK_INT32		iRtpHeadType;						// 1TRP, 2 NONE
	DPSDK_UINT64	uiFileOffset;						// The offset of playback by file, unit byte
	DPSDK_INT32		iDirection;							// Playback direction See DPSDK_PLAY_DIRECTION Definition
}DPSDK_PLAYBACK_TO_IP_BY_FILE_PARAM;

// Playback parameter
typedef struct
{
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback function
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure

	HCWND			pHWnd;								// Window handle
	DPSDK_INT32		iDirection;							// Playback direction See DPSDK_PLAY_DIRECTION Definition
	DPSDK_INT32		iDecodeType;						// Decode type See DPSDK_DECODE_TYPE Definition

	DPSDK_CHAR		szCodeId[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_CHAR		szSN[DPSDK_SN_LEN];
	DPSDK_CHAR		szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_TIMET		tBeginTime;							// Start time
	DPSDK_TIMET		tEndTime;							// End time
	DPSDK_INT32		iStreamType;						// Code stream type, see see DPSDK_STREAM_TYPE
	DPSDK_INT32		iRecordSource;						// Video source, see DPSDK_SOURCE_TYPE
	DPSDK_CHAR	    szSSId[DPSDK_SS_ID_LEN];			// Storage service (IDReturn to the query)
	DPSDK_UINT64	uFileHandle;						// File handle(Return to the query)
	DPSDK_CHAR		szDiskId[DPSDK_DISDK_ID_LEN];		// Disk ID(Return to the query)
	DPSDK_CHAR		szFilename[DPSDK_RECORD_FILE_NAME_LEN];	//The name of the video (different manufacturers are different in the identification of the documents)
	DPSDK_CHAR		szEncryptedInfo[DPSDK_VIDEOSHARE_ENCRYPTEDINFO];	// video enc
	DPSDK_CHAR		szKeyIndex[DPSDK_VIDEOSHARE_KEYINDEX];				// video key
	DPSDK_CHAR		szTrcakID[DPSDK_TRACK_ID_LEN];		// TrackID
	DPSDK_INT32		iUrlType;							// RTSP mode, 1: pull the streaming URL; 2: Push the URL of the stream. Default 2 Push Stream
	
	//3200W special treatment
	DPSDK_BOOL		bIsUsedST;							// Whether the tag needs to use the special treatment, when the device is 3200W, need to use.
	DPSDK_BOOL		bInstantPlayback;					// Whether instant playback enabled.
	DPSDK_HIGH_DPI_PARAM	struHighDPIParam;			// Hight DPI parameters
	DPSDK_CHAR		szOptModule[DPSDK_NAME_LEN];		// use module
	DPSDK_BOOL		bSyncPlay;							// whether sync play
	DPSDK_BOOL		bAntiAliasEnable;					// wether or not Enable AntiAlias
	DPSDK_BOOL		bVideoFastQuery;					// wether or not fast query
	DPSDK_BOOL		bIsShortPath;						// whether to Use short path
	DPSDK_BOOL		bFacePrivacy;						// Face Privacy
}DPSDK_PLAYBACK_BY_FILE_PARAM;


typedef struct
{
	DPSDK_INT32		iCompressState;						// Compress Stream Result
	DPSDK_INT32		iSessionId;							// Stream Media Session Id
}DPSDK_PLAYBACK_RESPONSE_PARAM;

// Playback parameter
typedef struct
{
	DPSDK_CHAR		szCodeId[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_TIMET		tBeginTime;							// Start time
	DPSDK_TIMET		tEndTime;							// End time
	DPSDK_INT32		iRecordSource;						// Video source, see DPSDK_SOURCE_TYPE
	DPSDK_CHAR	    szSSId[DPSDK_SS_ID_LEN];			// Storage service (IDReturn to the query)
	DPSDK_UINT64	uFileHandle;						// File handle(Return to the query)
	DPSDK_CHAR		szDiskId[DPSDK_DISDK_ID_LEN];		// Disk ID(Return to the query)
	DPSDK_CHAR		szFilename[DPSDK_RECORD_FILE_NAME_LEN];	//The name of the video (different manufacturers are different in the identification of the documents)
	DPSDK_BOOL		bUseBG28181;						// Is GB28181
	DPSDK_CHAR		szOptModule[DPSDK_NAME_LEN];		// use module
	DPSDK_BOOL		bPassServer;						// Is Pass server
	DPSDK_BOOL		bSyncPlay;							// whether sync play
	DPSDK_BOOL		bAntiAliasEnable;					// wether or not Enable AntiAlias
	DPSDK_BOOL		bIsShortPath;						// whether to Use short path
	DPSDK_BOOL		bFacePrivacy;						// Face Privacy
}DPSDK_GET_PLAYBACK_URL_BY_FILE_PARAM;

// Local playback parameter
typedef struct
{
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback function
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure

	HCWND			pHWnd;								// Window handle
	DPSDK_INT32		iDecodeType;						// Decode type See DPSDK_DECODE_TYPE Definition
	DPSDK_CHAR		szFilePath[DPSDK_FILE_PATH_LEN];	// Local playback file path
	DPSDK_INT32		iDecode;
	DPSDK_INT32		iLargePicAdjustment;				//使能标记 0：不抽帧，1：自适应抽帧，2：强制抽帧
	DPSDK_BOOL		bExport;
	DPSDK_BOOL		bSetUtf8;							// Set utf-8
	DPSDK_HIGH_DPI_PARAM	struHighDPIParam;			// Hight DPI parameters
	DPSDK_BOOL		bAntiAliasEnable;					// wether or not Enable AntiAlias
}DPSDK_PLAYBACK_BY_LOCALFILE_PARAM;

typedef struct  
{
	DPSDK_TIMET		tBeginTime;							// Start time
	DPSDK_TIMET		tEndTime;							// End time
	DPSDK_PLAYBACK_SPEED	iSpeed;						// Playback speed
	DPSDK_INT32		iDirection;							// Playback direction See DPSDK_PLAY_DIRECTION Definition
	DPSDK_INT32     iNotCheckIFrameTimeOffset;			// Check IFrameTimeOffset, 0 check, 1 not check
	DPSDK_BOOL		bPlayIFrameMode;					// Whether I frame play mode
	DPSDK_BOOL		bForceClearCache;					// whether to clear cache, include vaxplayer cache and local cache
	DPSDK_BOOL		bSlideMode;
 }DPSDK_PLAYBACK_SEEK_PARAM;

typedef struct  
{
	DPSDK_FLOAT 	fSpeed;						        // Playback speed, value such as DPSDK_PLAYBACK_SPEED Defination(1, 2, 4, 8, 16, 1/2, 1/4, 1/8, 1/16)
	DPSDK_INT32		iDirection;							// Playback direction See DPSDK_PLAY_DIRECTION Definition
	DPSDK_BOOL		bForceSeek;							// Playback change speed with npt strictly
	DPSDK_BOOL		bDragMode;							// Playback drag enhance mode
	DPSDK_TIMET		tCurTime;							// Playback seek time
	DPSDK_INT32		iMaxPlaySpeed;						// Playback max play speed
}DPSDK_PLAYBACK_PARAM_EX;

// Visible decode callback structure
typedef struct
{
	DPSDK_LONG			lPort;			// Port num
	DPSDK_INT32			iFrameType;		// Frame type: 0 is video, 1 is audio
	DPSDK_INT32			iFrameSubType;	//Frame sub type: 0 is I frame, 1 is P frame, 2 is B frame
	DPSDK_INT32			iTimeStamp;		//Time stamp, unit ms
	DPSDK_INT32			iYear;
	DPSDK_INT32			iMonth;
	DPSDK_INT32			iDay;
	DPSDK_INT32			iHour;
	DPSDK_INT32			iMinute;
	DPSDK_INT32			iSecond;
	DPSDK_INT32			iMilliseconds;
	DPSDK_INT32			iFrameTimeOffset;
	DPSDK_INT64			iFrameTimeEx;	//Time stamp with offset, unit ms
}DPSDK_VISIBLE_DECODE;

typedef enum 
{
	TALK_TYPE_DEVICE = 1,								// Device
	TALK_TYPE_CHANNEL,									// Channel
	Talk_Type_GB_Device,								// GB broadcasting intercom
	TALK_TYPE_DEVTODEV,									// Device to device talk
	Talk_Type_NVRDVRDevice,								// Communicate with NVR and DVR devices
}DPSDK_TALK_TYPE;

typedef enum
{
	TALK_TYPE_TALK = 0,									// Talk
	TALK_TYPE_BROADCAST,								// Braodcast
}DPSDK_TALK_MODE;

// Audio type
typedef enum 
{
	TALK_CODING_DEFAULT = 0,							//default
	TALK_CODING_PCM = 1,								//PCM
	TALK_CODING_G711a,									//G711a
	TALK_CODING_AMR,									//AMR
	TALK_CODING_G711u,									//G711u
	TALK_CODING_G726,									//G726
	TALK_CODING_G723_53,								//G723_53
	TALK_CODING_G723_63,								//G723_63
	TALK_CODING_AAC = 8,								//add by fengjian 2012.8.8
	TALK_CODING_G722 = 101,								//G722 Used by Hk
	TALK_CODING_G711_MU,								//G711 Used by Hk
}DPSDK_AUDIO_TYPE;					

typedef enum {
	TALK_PROTOCOL_AUTO = 0,
	TALK_PROTOCOL_TCP,
	TALK_PROTOCOL_UDP,
	TALK_PROTOCOL_END,
}DPSDK_TALK_PROTOCOL_TYPE;								//Video Stream Request Protocol

// Digits
typedef enum
{
	TALK_AUDIO_BIT_8 = 8,
	TALK_AUDIO_BIT_16 = 16,
}DPSDK_TALK_BIT;					

// Precision
typedef enum
{
	TALK_AUDIO_SAM_8K = 8000,
	TALK_AUDIO_SAM_16K = 16000,
	TALK_AUDIO_SAM_32K = 32000,
	TALK_AUDIO_SAM_48K = 48000,
	TALK_AUDIO_SAM_8192 = 8192,
}DPSDK_TALK_SAMPLE_RATE;	

// Start talk parameter
typedef struct
{
	DPSDK_CHAR szDevId[DPSDK_DEVICE_ID_LEN];			// Device code 
	DPSDK_INT32 iChnlNo;								// Channel code
	DPSDK_INT32 iTalkType;								// Talk type see DPSDK_TALK_TYPE
	DPSDK_INT32 iAudioType;								// Audio type see DPSDK_AUDIO_TYPE
	DPSDK_INT32 iTalkBit;								// Digits see DPSDK_TALK_BIT
	DPSDK_INT32 iSampleRate;							// Sample rate see DPSDK_TALK_SAMPLE_RATE
	DPSDK_BOOL bUseBG28181;								// is GB28181
	DPSDK_INT32 iTransMode;								// 0:UDP, 1:TCP
	DPSDK_BOOL bAdaptiveParam;							// Self adaptive parameter=true
	DPSDK_DEVICE_ID* pMultiDevChlInfo;                  // Denotes multiply device info
	DPSDK_INT32 iMultiNum;                              // Num of devices
	DPSDK_BOOL bNeedDHHead;								// whether or not need DaHua reader
	DPSDK_BOOL bBroadCast;								// talk or broadcast
	DPSDK_BOOL bIsWebGate;                              // webgate or client,true denotes webgate, false denotes client
	DPSDK_INT32 iTalkSymbol;                            //
	DPSDK_CHAR szDstIP[DPSDK_IP_LEN];					// ip
	DPSDK_INT32 iDstPort;								// port
	DPSDK_INT32	iRtpHeadType;							// 1TRP, 2 NONE
	DPSDK_INT32	iTcpMode;								// 0 Default，1 Active，2 Passive
	DPSDK_CHAR	szDeviceDomainId[DPSDK_DEVICE_ID_LEN];	// Device Domain Id
	DPSDK_CHAR szTrackId[DPSDK_TRACK_ID_LEN];			// Track ID: 501-PS stream,601-Original frame,701-Dahua frame,801-Dahua standard frame,901-TS frame,101-RTP standard frame
	DPSDK_CHAR szAudioTypeList[DPSDK_AUDIOTYPELIST_ID_LEN];	// Audio Type Set List
	DPSDK_EVENT_CALLBACK fEventCallBack;				// Event callback
	DPSDK_LPVOID	pEventUserData;						// The user data of event callback
	DPSDK_REALDATA_CALLBACK	fRealDataCallBack;			// Bitstream callback
	DPSDK_LPVOID	pRealUserData;						// Code stream callback user data
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK struDispatchMainThreadCallBack;	// Dispatch main thread callback structure
	DPSDK_BOOL bPrerTcpMode;							// is prer tcp mode
	DPSDK_INT32 iTalkMode;								// Talk mode see DPSDK_TALK_MODE
	DPSDK_BOOL bAutoAdjust;								// is Auto Adjust
	DPSDK_INT32		iUrlType;							// RTSP mode, 1: pull the streaming URL; 2: Push the URL of the stream. Default 2 Push Stream
	DPSDK_BOOL		bIsShortPath;						// whether to Use short path
	DPSDK_BASE_PARAM struBaseParam;
}DPSDK_START_TALK_PARAM;

// Start talk by url parameter
typedef struct
{
	DPSDK_CHAR szDevId[DPSDK_DEVICE_ID_LEN];			// Device or Channel code 
	DPSDK_INT32 iChnlNo;								// Channel code
	DPSDK_INT32 iTalkType;								// Talk type see DPSDK_TALK_TYPE
	DPSDK_INT32 iAudioType;								// Audio type see DPSDK_AUDIO_TYPE
	DPSDK_INT32 iTalkBit;								// Digits see DPSDK_TALK_BIT
	DPSDK_INT32 iSampleRate;							// Sample rate see DPSDK_TALK_SAMPLE_RATE
	DPSDK_BOOL bAdaptiveParam;							// Self adaptive parameter=true

	DPSDK_BOOL bNeedDHHead;								// whether or not need DaHua reader
	DPSDK_BOOL bBroadCast;								// talk or broadcast
	DPSDK_BOOL bIsWebGate;                              // webgate or client,true denotes webgate, false denotes client
	DPSDK_INT32 iTalkSymbol;                            //
	// request parameters
	DPSDK_CHAR		szURL[DPSDK_URL_LENGTH_EX];				// RTSP URL
	DPSDK_INT32		iServerType;						// Servere type see DPSDK_MTS_TYPE Definition.					
	DPSDK_INT32		iReDirect;							// Is Redirect

	DPSDK_EVENT_CALLBACK fEventCallBack;				// Event callback
	DPSDK_LPVOID	pEventUserData;						// The user data of event callback
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK struDispatchMainThreadCallBack;	// Dispatch main thread callback structure

	DPSDK_BASE_PARAM struBaseParam;
	DPSDK_BOOL	 bPaasTalk;								//is paas 9 talk
}DPSDK_START_TALK_BYURL_PARAM;

// Start talk parameter
typedef struct
{
	DPSDK_CHAR szDevId[DPSDK_DEVICE_ID_LEN];			// Device code 
	DPSDK_INT32 iChnlNo;								// Channel code
	DPSDK_INT32 iTalkType;								// Talk type see DPSDK_TALK_TYPE
	DPSDK_INT32 iAudioType;								// Audio type see DPSDK_AUDIO_TYPE
	DPSDK_INT32 iTalkBit;								// Digits see DPSDK_TALK_BIT
	DPSDK_INT32 iSampleRate;							// Sample rate see DPSDK_TALK_SAMPLE_RATE
	DPSDK_BOOL	bPassServer;							// is pass server
}DPSDK_Get_TALK_URL_PARAM;

typedef struct
{
	DPSDK_CHAR szSSrc[DPSDK_IP_LEN];					// SSRC
	DPSDK_CHAR szIP[DPSDK_IP_LEN];						// Device real ip
	DPSDK_INT32 iPort;									// Device real port
	DPSDK_INT32 iAudioType;								// Audio type see DPSDK_AUDIO_TYPE
	DPSDK_INT32 iTalkBit;								// Digits see DPSDK_TALK_BIT
	DPSDK_INT32 iSampleRate;							// Sample rate see DPSDK_TALK_SAMPLE_RATE
	DPSDK_INT32 iRtpPortforGetting;                     // Requestion of gateway, for getting port(prior);
	DPSDK_INT32 iRtcpPortforGetting;                    // Requestion of gateway, for getting port(rear);
	DPSDK_CHAR szIPforGetting[DPSDK_IP_LEN];            // Requestion of gateway, for getting IP;
}DPSDK_START_TALK_RESULT;

typedef struct
{
	DPSDK_UINT32 uiEncodeInfoNum;
	DPSDK_START_TALK_RESULT struEncodeInfo[1];
}DPSDK_TALK_ENCODE_INFO_LIST;

// Start broadcast talk parameter
typedef struct
{
	DPSDK_INT32			iAudioType;					// Audio type see DPSDK_AUDIO_TYPE
	DPSDK_INT32			iTalkBit;					// Digits see DPSDK_TALK_BIT
	DPSDK_INT32			iSampleRate;				// Sample rate see DPSDK_TALK_SAMPLE_RATE
	DPSDK_BOOL			bNeedDHHead;				// whether or not need DaHua reader
	DPSDK_BOOL			bAutoAdapt;					// whether or not auto adapt
	DPSDK_DEVICE_ID*	pDeviceIdList;				// Device list
	DPSDK_INT32			iDeviceIdNum;				// Device count
	DPSDK_CHANNEL_ID*	pChannelIdList;
	DPSDK_INT32			iChannelIdNum;
	DPSDK_CHAR			szAudioTypeList[DPSDK_AUDIOTYPELIST_ID_LEN];	// Audio Type Set List
}DPSDK_START_BROADCAST_TALK_PARAM;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_CHANNEL_ID_LEN];	//id
	DPSDK_INT32	iRetCode;					//return code
}DPSDK_BROADCAST_TALK_RETINFO;

typedef struct
{
	DPSDK_BROADCAST_TALK_RETINFO*	pDeviceRetInfoList;		// Device return info list
	DPSDK_INT32						iDeviceRetNum;			// Device return count
	DPSDK_BROADCAST_TALK_RETINFO*	pChannelRetInfoList;	// Channel return info list
	DPSDK_INT32						iChannelRetNum;			// Channel return count
}DPSDK_BROADCAST_TALK_RET;
// ROIData type definition
typedef struct
{
	DPSDK_INT32					iX;				// Top left corner x coordinate
	DPSDK_INT32					iY;				// Top left corner y coordinate
	DPSDK_INT32					iWidth;			// Regional width
	DPSDK_INT32					iHeight;		// Regional height
}DPSDK_IVSE_ROI;
// Input parameters of video enhancement algorithm
typedef struct
{
	DPSDK_UINT32		uiFuncType;		// Functional options See DPSDK_IVSE_FUNC_TYPE
	DPSDK_IVSE_ROI		struRoi;        // ROI To configure
	DPSDK_INT32			iMode;			// 0 Representing the picture pattern, 1 For video mode, please use the video when you use it 1Video mode
	DPSDK_INT32			iParam[2];		// Processing parameters, range[1,5]
	DPSDK_INT32			iLevel; 
}DPSDK_IVSE_INFO;

// AR
typedef enum 
{
	VR_MODE_NONE = 0, //不设置VR
	VR_360,           //360度VR
	VR_180,           //180度VR
	VR_SEMI_360,      //360度半球VR
	VR_SEMI_180,      //180度半球VR
	VR_90,            //90度VR
	VR_SEMI_90,       //90度半球VR
	VR_270,            //270度VR
	VR_SEMI_270,       //270度半球VR
	VR_CUSTOM,         //自定义类型
	VR_MODE_SIZE
}DPSDK_AR_MODE_TYPE;

typedef struct
{
	DPSDK_DWORD nWndNum;
	DPSDK_FLOAT fFovy;
}DPSDK_SETSTEREO_FOVY_INFO;

typedef struct
{
	DPSDK_DWORD nWndNum;
	DPSDK_FLOAT fXOffset;
	DPSDK_FLOAT fYOffset;
	DPSDK_FLOAT fZOffset;
}DPSDK_SETSTEREO_ROTATE_INFO;

typedef struct
{
	DPSDK_AR_MODE_TYPE eVrType;
	DPSDK_FLOAT fVerFieldViewAngle;    //垂直视场角,(0,180]
	DPSDK_FLOAT fHoriFieldViewAngle;   //水平视场角,取值范围(0,360]
	DPSDK_FLOAT fDownPressAngle;       //下压角,与水平赤道线的夹角，向下为正，向上为负，取值范围为(-90，90),单位为度
}DPSDK_SET_VR_MODE_INFO;

// Matrix coordinate of stitching algorithm 
typedef struct
{
	DPSDK_INT32					iLeft;
	DPSDK_INT32					iTop;
	DPSDK_INT32					iRight;
	DPSDK_INT32					iBottom;
	DPSDK_INT32					iX;				// Central point coordinates, used for scaling, recording positions at normal scale and narrowing to the edge
	DPSDK_INT32					iY;				// Central point coordinates, used for scaling, recording positions at normal scale and narrowing to the edge
	DPSDK_INT32					iPicWidth;		// Picture resolution-width
	DPSDK_INT32					iPicHeight;		// Picture resolution-height
}DPSDK_DISPLAY_RECT;

typedef struct
{
	DPSDK_DISPLAY_RECT  RectList[DPSDK_DISPLAY_RECT_LIST_NUM];
}DPSDK_DISPLAY_RECT_LIST;

// Video file path
typedef struct
{
	DPSDK_UINT32		uiStoreLen;		// Video length
	DPSDK_TIMET 		lBeginTime;		// Video start time
	DPSDK_TIMET 		lEndTime;		// Video end time
	DPSDK_CHAR			szFile[DPSDK_FILE_PATH_LEN];	// Full path of video files
	DPSDK_BOOL			bWaterMarkEnable;	// waterMark Enable
	DPSDK_INT32			iRecordSeq;			//Record Seq
}DPSDK_FILE_STORE_INFO;

// Video file list
typedef struct
{
	DPSDK_UINT64				ulTotal;			// Total number of video files
	DPSDK_FILE_STORE_INFO		struFileList[1];	// Video file list
}DPSDK_FILE_STORE_LIST;

typedef struct
{
	DPSDK_CHAR szContent[DPSDK_LEN_512];						// 水印内容
	DPSDK_INT32 nDensity;										// 水印密度
	DPSDK_UINT32 nDirection;									// 水印方向		旋转角度，范围0-359度
	DPSDK_UINT32 nTransparency;									// 水印透明度	osd叠加透明度，范围0-255
	DPSDK_UINT32 nRed;											// 水印颜色		osd叠加颜色r，范围0-255
	DPSDK_UINT32 nGreen;										// 水印颜色		osd叠加颜色g，范围0-255
	DPSDK_UINT32 nBlue;											// 水印颜色		osd叠加颜色b，范围0-255
	DPSDK_BOOL   bFontDahua;									// 子体类型
	DPSDK_UINT32	nFontSize;									// 字体大小
	DPSDK_USHORT	nHorizontalSpacing;							// 横向间距，字符串外围框的间距
	DPSDK_USHORT	nVerticalSpacing;							// 纵向间距
}DPSDK_WATER_MARK_DATA;

// Local Record Download parameters
typedef struct
{
	DPSDK_CHAR			szFilePath[DPSDK_FILE_PATH_LEN];// Download the name of the file, if it is empty, use INameRuleThe defined rules are generated, not empty,Neglecting INameRule, szDownloadPath, szChannelNamefield
	DPSDK_INT32			iRecordSpliteLen;						// Division of file size, unit MB，0Non segmentation
	DPSDK_DOWNLOAD_RECORD_FILE_FORMAT	iFileFormat;			// Download file format
	DPSDK_BOOL			bPrivacyRecover;						// Privacy Recover
	DPSDK_BOOL			bOSD;									// OSD Enable: true open; false close
	DPSDK_WATER_MARK_DATA struWaterMarkData;					// OSD info
	DPSDK_UINT32		uiMaxRecDuration;
	DPSDK_INT32			iProviderType;
	DPSDK_INT32			iRecordSeq;								//Record Seq
}DPSDK_RECORD_DOWNLOAD_PARAM;

//Download parameters by time
typedef struct
{
	DPSDK_EVENT_DOWNLOAD_CALLBACK	fEventCallBack;				// Event callbacks
	DPSDK_LPVOID					pEventUserData;				// Event callback user data

	DPSDK_CHAR			szChannelID[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_CHAR			szChannelSN[DPSDK_SN_LEN];				
	DPSDK_CHAR			szDeviceCode[DPSDK_DEVICE_ID_LEN];		// Device code
	DPSDK_SOURCE_TYPE	iSourceType;							// Video source
	DPSDK_STREAM_TYPE	iStreamType;							// Code stream type
	DPSDK_RECORD_TYPE	iRecordType;							// Video type
	DPSDK_TIMET			tBeginTime;								// start time
	DPSDK_TIMET			tEndTime;								// End time
	DPSDK_BOOL			bRateCtrl;								// Speed Ctrl, true:Download speed is determined by fSpeed , false:Download speed is 128.0						
	DPSDK_FLOAT			fSpeed;									// Download Speed
	
	DPSDK_CHAR			szSSId[DPSDK_SS_ID_LEN];				// Storage service (IDReturn to the query)
	DPSDK_UINT64		uFileHandle;							// File handle(Return to the query)
	DPSDK_CHAR			szChannelName[DPSDK_CHANNEL_NAME_LEN];	// Channel name
	DPSDK_CHAR			szDownloadPath[DPSDK_FILE_PATH_LEN];	// Downloading path
	DPSDK_RECORD_FILE_NAME_RULE			iNameRule;				// Download file naming rules
	DPSDK_CHAR			szDownloadFileName[DPSDK_FILE_PATH_LEN];// Download the name of the file, if it is empty, use INameRuleThe defined rules are generated, not empty,Neglecting INameRule, szDownloadPath, szChannelNamefield
	DPSDK_INT32			iSplitFileSize;							// Division of file size, unit MB，0Non segmentation
	DPSDK_DOWNLOAD_RECORD_FILE_FORMAT	iFileFormat;			// Download file format
	DPSDK_BOOL			bPrivacyRecover;						// Privacy Recover
	DPSDK_BOOL			bESRTSP;								// RTSP ES Stream
	DPSDK_UINT64		uTotalSize;								// download total size
	DPSDK_CHAR			szDomainCode[DPSDK_RECORD_DOMAINCODE_LEN];  // Record Domain Code
	DPSDK_CHAR			szPaasID[DPSDK_CHANNEL_ID_LEN];				// Record Pass Id

	DPSDK_BOOL			bExport;									// Export Video[35114]
	DPSDK_TIMET			tInvalidTime;								// Playback permission expiration time[35114]
	DPSDK_UINT32		iPlayTimes;									// Playback times[35114]

	DPSDK_BOOL			bOSD;									// OSD Enable: true open; false close
	DPSDK_WATER_MARK_DATA struWaterMarkData;					// OSD info

	DPSDK_BASE_PARAM	struBaseParam;

	DPSDK_CHAR			szOptModule[DPSDK_NAME_LEN];			// use module
	DPSDK_UINT32		iNoDataTimeout;
}DPSDK_DOWNLOAD_BY_TIME_PARAM;

typedef struct
{
	DPSDK_TIMET 		lBeginTime;		// Video start time
	DPSDK_TIMET 		lEndTime;		// Video end time
	DPSDK_CHAR			szFileStoragePath[DPSDK_FILE_PATH_LEN];	// Full path of video files
}DPSDK_FILE_STORGAGE_INFO;

typedef struct
{
	DPSDK_FILE_STORGAGE_INFO struFileStorageInfo[1];
}DPSDK_FILE_STORGAGE_INFO_LIST;

//Download parameters by time by file path
typedef struct
{
	DPSDK_EVENT_DOWNLOAD_CALLBACK	fEventCallBack;				// Event callbacks
	DPSDK_LPVOID					pEventUserData;				// Event callback user data
	DPSDK_CHAR			szFilePath[DPSDK_FILE_PATH_LEN];		// RTSP URL
	DPSDK_CHAR			szChannelID[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_CHAR			szChannelSN[DPSDK_SN_LEN];
	DPSDK_SOURCE_TYPE	iSourceType;							// Video source
	DPSDK_STREAM_TYPE	iStreamType;							// Code stream type
	DPSDK_RECORD_TYPE	iRecordType;							// Video type
	DPSDK_TIMET			tBeginTime;								// start time
	DPSDK_TIMET			tEndTime;								// End time
	DPSDK_TIMET			tFileStorageBeginTime;					// start time
	DPSDK_BOOL			bRateCtrl;								// Speed Ctrl, true:Download speed is determined by fSpeed , false:Download speed is 128.0						
	DPSDK_FLOAT			fSpeed;									// Download Speed

	DPSDK_CHAR			szChannelName[DPSDK_CHANNEL_NAME_LEN];	// Channel name
	DPSDK_CHAR			szDownloadPath[DPSDK_FILE_PATH_LEN];	// Downloading path
	DPSDK_RECORD_FILE_NAME_RULE			iNameRule;				// Download file naming rules
	DPSDK_CHAR			szDownloadFileName[DPSDK_FILE_PATH_LEN];// Download the name of the file, if it is empty, use INameRuleThe defined rules are generated, not empty,Neglecting INameRule, szDownloadPath, szChannelNamefield
	DPSDK_INT32			iSplitFileSize;							// Division of file size, unit MB，0Non segmentation
	DPSDK_DOWNLOAD_RECORD_FILE_FORMAT	iFileFormat;			// Download file format
	DPSDK_CHAR		szDomainCode[DPSDK_RECORD_DOMAINCODE_LEN];  // Record Domain Code
	DPSDK_CHAR		szPaasID[DPSDK_CHANNEL_ID_LEN];		// Record Pass Id

	DPSDK_BOOL			bExport;						// Export Video[35114]
	DPSDK_TIMET			tInvalidTime;					// Playback permission expiration time[35114]
	DPSDK_UINT32		iPlayTimes;						// Playback times[35114]
	DPSDK_INT32         iFileNum;
	DPSDK_FILE_STORGAGE_INFO*	pFileStorageInfoList; 
	DPSDK_BASE_PARAM   struBaseInfo;
}DPSDK_DOWNLOAD_BY_TIME_BY_FILEPATH_PARAM;

//Download parameters by file
typedef struct  
{
	DPSDK_EVENT_DOWNLOAD_CALLBACK	fEventCallBack;				// Event callbacks
	DPSDK_LPVOID					pEventUserData;				// Event callback user data

	DPSDK_CHAR			szChannelID[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_CHAR			szChannelSN[DPSDK_SN_LEN];	
	DPSDK_CHAR			szDeviceCode[DPSDK_DEVICE_ID_LEN];		// Device code
	DPSDK_SOURCE_TYPE	iSourceType;							// Video source
	DPSDK_TIMET			tBeginTime;								// Start time
	DPSDK_TIMET			tEndTime;								// End time
	DPSDK_CHAR			szSSId[DPSDK_SS_ID_LEN];			// Storage service (IDReturn to the query)
	DPSDK_UINT64		uFileHandle;							// File handle(Return to the query)
	DPSDK_CHAR			szDiskId[DPSDK_DISDK_ID_LEN];			// Disk ID(Return to the query)
	DPSDK_CHAR			szFilename[DPSDK_RECORD_FILE_NAME_LEN];	// The name of the video (different manufacturers are different in the identification of the documents)

	DPSDK_CHAR			szChannelName[DPSDK_CHANNEL_NAME_LEN];	// Channel name
	DPSDK_CHAR			szDownloadPath[DPSDK_FILE_PATH_LEN];	// Downloading path
	DPSDK_RECORD_FILE_NAME_RULE			iNameRule;				// Download file naming rules
	DPSDK_CHAR			szDownloadFileName[DPSDK_FILE_PATH_LEN];// Download the name of the file, if it is empty, use INameRuleThe defined rules are generated, not empty,Neglecting INameRule, szDownloadPath, szChannelNamefield
	DPSDK_INT32			iSplitFileSize;							// Division of file size, unit MB，0Non segmentation
	DPSDK_DOWNLOAD_RECORD_FILE_FORMAT	iFileFormat;			// Download file format
	DPSDK_BOOL			bPrivacyRecover;						// Privacy Recover
	DPSDK_BOOL			bESRTSP;								// RTSP ES Stream
	DPSDK_UINT64		uTotalSize;								// download total size
	DPSDK_BOOL			bOSD;									// OSD Enable: true open; false close
	DPSDK_WATER_MARK_DATA struWaterMarkData;					// OSD info
	DPSDK_CHAR			szOptModule[DPSDK_NAME_LEN];			// use module
	DPSDK_CHAR			szVkek[DPSDK_NAME_LEN];
	DPSDK_CHAR			szVkekId[DPSDK_NAME_LEN];
}DPSDK_DOWNLOAD_BY_FILE_PARAM;

typedef struct  
{
	DPSDK_INT32			iDownloadID;
	DPSDK_INT32			iFileID;
	DPSDK_INT32			iDownloadMode;
	DPSDK_INT32			iRecordSource;
	DPSDK_INT32			iRecordType;
	DPSDK_INT32			iStreamType;
	DPSDK_UINT64		uiCurFileSize;
	DPSDK_UINT64		uiPrevFileSize;
	DPSDK_TIMET			tBeginTime;
	DPSDK_TIMET			tEndTime;
	DPSDK_INT32			iDownloadState;
	DPSDK_CHAR			szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR			szChannelGbID[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR			szSSId[DPSDK_SS_ID_LEN];			// Storage service (IDReturn to the query)
	DPSDK_UINT64		uiFileHandle;
	DPSDK_CHAR			szDiskId[DPSDK_DISDK_ID_LEN];
	DPSDK_INT32			iDownloadStatus;
	DPSDK_INT32			iFileCount;
	DPSDK_CHAR			szDownloadFileName[1][DPSDK_FILE_PATH_LEN];
}DPSDK_DOWNLOAD_RECORD_INFO;


typedef struct
{
	DPSDK_INT32			iDrawType;
	DPSDK_CHAR			szDrawText[DPSDK_IN64_LEN];
	DPSDK_CHAR			szDrawContent[DPSDK_IN64_LEN];
}DPSDK_PROCESS_DRAWTIP_INFO;

// Picture turn BMP format
typedef struct
{
	DPSDK_CHAR*			pBuf;			// Image data pointer
	DPSDK_LONG			lSize;			// Image data size
	DPSDK_LONG			lWidth;			// Image width
	DPSDK_LONG			lHeight;		// Image height
	DPSDK_LONG			lType;			// Image type
	DPSDK_CHAR			szFileName[DPSDK_FILE_PATH_LEN];		// File name to be saved.It is best to BMP as a file extension
}DPSDK_CONVERT_BMP;

// Picture turn jpeg format
typedef struct
{
	DPSDK_CHAR*			pBuf;			// Image data pointer
	DPSDK_LONG			lSize;			// Image data size
	DPSDK_LONG			lWidth;			// Image width
	DPSDK_LONG			lHeight;		// Image height
	DPSDK_LONG			lType;			// Image type
	DPSDK_INT32			iQuality;		// Image compression quality,region[0, 100]
	DPSDK_CHAR			szFileName[DPSDK_FILE_PATH_LEN];		// File name to be saved.It is best to jpg as a file extension
}DPSDK_CONVERT_JPEG;

// Fish data callback structure
typedef struct 
{
	DPSDK_UCHAR			uszCorrectMode;		// Correction model
	DPSDK_USHORT		uRadius;			// Radius[0,8192)
	DPSDK_USHORT		uCircleX;			// The center abscissa of circle 
	DPSDK_USHORT		uCircleY;			// The center longitudinal coordinates of circle 
	DPSDK_UINT32		uWidthRatio;		// Width ratio
	DPSDK_UINT32		uHeigthRatio;		// Height ratio
	DPSDK_UCHAR			uszGain;			// Gain
	DPSDK_UCHAR			uszDenoiseLevel;	// Denoise level
	DPSDK_UCHAR			uszInstallStyle;	// Fisheye installing mode
}DPSDK_FISH_EYE_INFO;

// Video draw callback structure
typedef struct
{
	DPSDK_HDC			hDc;		// Draw handle
	HCWND				pWnd;		// Window handle
}DPSDK_VIDEO_DRAW;

//Resolution change callback structure
typedef struct 
{
	DPSDK_INT32			iWidth;			// Image width
	DPSDK_INT32			iHeight;		// Image height
}DPSDK_ENCHANGE;

//Capture pic callback structure
typedef struct 
{
	DPSDK_INT32			iSeq;
}DPSDK_CAPTUREPIC_NOTIFY;

// Screen shots callback structure
typedef struct 
{
	DPSDK_LONG			lPort;		// Channel code
	DPSDK_CHAR*			pBuf;		// The data of returned image
	DPSDK_LONG			lSize;		// User data
	DPSDK_LONG			lWidth;		// Image width, unit:pixel
	DPSDK_LONG			lHeight;	// Image height
	DPSDK_LONG			lStamp;		// The information of time scale, unit:ms
	DPSDK_LONG			lType;		// Data type,T_RGB32,T_UYVY
}DPSDK_SCREENSHOT;

// Decode display callback
typedef struct
{
	DPSDK_LONG			lPort;		// Channel code
	DPSDK_INT32			iFrameType;	// The type of video frame, 0 is video，1 is audio
	DPSDK_INT32			iFrameSubType;// Video sub frame, 0 is I frame，1 is P frame，2 is B frame
	DPSDK_INT32			iTimeStamp;	// The frame time (ms)
	DPSDK_INT32			iYear;
	DPSDK_INT32			iMonth;
	DPSDK_INT32			iDay;
	DPSDK_INT32			iHour;
	DPSDK_INT32			iMinute;
	DPSDK_INT32			iSecond;
}DPSDK_VISIBLEDECCODE;

//Event callback parameter structure
typedef struct 
{
	DPSDK_INT32			iSessionID;				// Conversation ID
	DPSDK_LPVOID		pBuf;					// Message structure
	DPSDK_UINT32		uiBufLen;				// Message structure length
	DPSDK_INT32			iEventType;				// Event Type
}DPSDK_EVENT_PARAM;

// Card type monitoring dictionary type
typedef enum 
{
	DPSDK_LANE_NUMBER				= 19,		// Lane number
	DPSDK_TRAFFIC_DICTIONARY		= 20,		// Driving direction
	DPSDK_VEHICLE_PLATE_COLOR		= 22,		// License plate color
	DPSDK_VEHICLE_COLOR				= 2001,		// Vehicle color
	DPSDK_VEHICLE_TYPE				= 2002,		// Vehicle type
	DPSDK_PROVINCE					= 2003,		// Vehicle type
	DPSDK_VIOLATION_TYPE			= 2006,		// Violation type
	DPSDK_CONTROL_TYPE				= 2007,		// Control type
	DPSDK_CONTROL_STATUS			= 2008,		// Control state
	DPSDK_CONTROL_LEVEL				= 2009,		// Control level
	DPSDK_MONITOR_SPEED				= 2010,		// Interval velocity measurement of violation type
	DPSDK_VEHICLE_TRADEMARK			= 2016,		// Vehicle trademark
	DPSDK_VEHICLE_PLATE_TYPE		= 2017,		// License plate type
	DPSDK_VEHICLE_TYPE_STATUS		= 2018,		// Vehicle type state
	DPSDK_VEHICLE_USE_STATUS		= 2019,		// Vehicle status
	DPSDK_CREDENTIALS_TYPE			= 2027,		// Document type
	DPSDK_PROVINCE_TYPE				= 2028,		// Province type
	DPSDK_CITY_TYPE					= 2029,		// Urban type
}DPSDK_BAYONET_DICTIONARY_TYPE;

// Port picture monitoring parameter structure
typedef struct
{
	DPSDK_CHAR				szCodeId[DPSDK_DEVICE_ID_LEN];		// Channel id or device id
	DPSDK_UINT32			uiDataType;							// Subscription type:1=Vehicle information, 2=Vehicle information+Picture information
	DPSDK_UINT32			uiStreamType;						// Stream type:1=Main stream, 2=Auxiliary code stream

	DPSDK_PICDATA_CALLBACK  fBayPicCallBack;					// Card port picture monitoring callback
	DPSDK_LPVOID			pUserData;							// User data
}DPSDK_PICTURE_MONITOR;

// Channel name
typedef struct
{
	DPSDK_CHAR szName[DPSDK_CHANNEL_NAME_LEN];						// Channel name
}DPSDK_CHANNEL_NAME;

// The list of channel id
typedef struct
{
	DPSDK_INT32 iChannelNum;										// The number of channel
	DPSDK_CHANNEL_ID struChannelList[1];							// The list of channel
}DPSDK_CHANNEL_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];							// Channel id
}DPSDK_MAIN_INFO;

typedef struct
{
	DPSDK_INT32			iMainType;										// Main device type
	DPSDK_MAIN_INFO	struMainList;
	DPSDK_INT32			iSubNum;
	DPSDK_CHANNEL_ID*	pSubList;
}DPSDK_GET_MAINSUB_GROUP_INFO;

typedef struct
{
	DPSDK_CHAR					szToken[DPSDK_TOKEN_LENGTH];			
	DPSDK_CHAR					szTokenType[DPSDK_TOKEN_LENGTH];
	DPSDK_CHAR					szResourceToken[DPSDK_TOKEN_LENGTH];
	DPSDK_INT32					iTokenRate;
}DPSDK_TOKENCHANGEEVENT_NOTIFY;

// User ID
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id
}DPSDK_USER_ID;

typedef struct
{
	DPSDK_INT32 iUserIDNum;
	DPSDK_USER_ID* pUserIdList;    // User id list
}DPSDK_USER_ID_LIST;

typedef struct
{
	DPSDK_CHAR				szMapName[DPSDK_MAP_NAME_LEN];		//Map name
	DPSDK_CHAR				szMapId[DPSDK_MAP_ID_LEN];			//Map ID
}DPSDK_MAP_INFO;

typedef struct  
{
	DPSDK_CHAR szPlatformIndustyStr[DPSDK_NAME_LEN];
}DPSDK_PLATFORMINDSUTYINFO;

// Organization Query Node Type
typedef enum
{
	SUB_SIGNAL_CODE,												// First-level Child Node
	SUB_ALL_CODE,													// All Child Nodes
}DPSDK_SUB_CODE_TYPE;

// Organization type
typedef enum
{
	BASIC_ORGANIZATION = 1,											// basic organization
	LOGIC_ORGANIZATION = 2,											// logical organization
}ORGANIZATION_TYPE;

//Organization query conditions
typedef struct  
{
	DPSDK_INT32 iOrgType;											// 
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Oorganization code is the length which is the default query root organization
	DPSDK_INT32 iChannelTypeList[1];								// Channel type set that needs to be querying see DPSDK_DEV_UNIT_TYPEDefinition
}DPSDK_QUERY_ORG_INFO;

typedef enum
{
	NORMAL_ORG = 1,                      //Basic organization
	LOGICAL_ORG = 2,                     //Logical organization
	LOGICAL_ORG_SUB = 3,                 //Logical organization  subsystem
}DPSDK_ORG_TYPE;

// Organization of basic data
typedef struct
{
	DPSDK_CHAR	szOrgCode[DPSDK_ORG_CODE_LEN];						// organization Code
	DPSDK_CHAR	szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_CHAR	szOrgRemark[DPSDK_ORG_REMARK_LEN];					// Organization remark
	DPSDK_CHAR	szOrgSN[DPSDK_SN_LEN];								// organization SN code
	DPSDK_CHAR	szOrgType[DPSDK_TYPE_LEN];							// Organization type, webgate need
	DPSDK_INT32	iOrgType;											// Organization node type
	DPSDK_INT32	iOrgSort;											// Organization sort
	DPSDK_BOOL	bHasData;											// Whether there is direct data
	DPSDK_TIMET tModifyTime;										// Modify time

	//
	DPSDK_CHAR	szParentCode[DPSDK_ORG_CODE_LEN];					// Organization parent node ID

	//Cloud SDK parameter
	DPSDK_CHAR	szParentName[DPSDK_ORG_NAME_LEN];					// Organization parent node name
	DPSDK_CHAR	szPlatformCode[DPSDK_ORG_CODE_LEN];					// GB ID
	DPSDK_INT32	iGroupNumber;										// Number of department under this node
	DPSDK_INT32	iDevivceNumber;										// Number of device under this node
	DPSDK_INT32 iChannelNum;										// Number of channel under this node

	DPSDK_INT32   iDomainID;
	DPSDK_ORG_TYPE eBusiType;                                          // 1.Basic organization  2.Logical organization
	DPSDK_CHAR	szOrgProvStdCode[DPSDK_PROV_CODE_LEN];				// Provincial Standard Code
	DPSDK_INT32 iSourceType;										// Source type
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// Third organization Id
	DPSDK_BOOL   bAuthorityChange;											 //bAuthority is Change
	DPSDK_BOOL	bAuthority;														 // Authority of org
}DPSDK_ORG_BASE_INFO;

//logical org operator Type 
typedef enum
{
	ORG_INSERT = 1,
	ORG_UPDATE = 2,
	ORG_DELETE = 3,
	ORG_MOVE = 4,
}DPSDK_LOGICAL_ORG_OPERATOR_TYPE;

//logical org channel operator Type 
typedef enum
{
	CHL_INSERT = 1,
	CHL_MOVE = 2,
	CHl_DELETE = 3,
}DPSDK_LOGICAL_ORG_CHANNEL_OPERATOR_TYPE;

// OrOrganization of logic data channels
typedef struct 
{
	DPSDK_CHAR	szOrgChannelCode[DPSDK_ORG_CODE_LEN];				// organization Code
}DPSDK_LOGIC_ORG_INFO_CHANNELS;
// Organization of logic data
typedef struct DPSDK_LOGIC_ORG_INFO_T
{
	DPSDK_CHAR	szID[DPSDK_ID_LEN];									// id
	DPSDK_CHAR	szOrgCode[DPSDK_ORG_CODE_LEN];						// organization Code
	DPSDK_CHAR	szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_INT32	iOrgSort;											// Organization sort
	DPSDK_CHAR	szParentCode[DPSDK_ORG_CODE_LEN];					// Organization parent node ID
	DPSDK_INT32 iDomainID;
	
	DPSDK_INT32 iSourceType;										// Source type
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// Third organization Id
	DPSDK_CHAR	szRemark[DPSDK_ORG_REMARK_LEN];						// Organization remark

	DPSDK_TIMET tModifyTime;										// Modify time
	DPSDK_INT32 iChlNum;                                            // Organization channels num
	DPSDK_LOGIC_ORG_INFO_CHANNELS* pOrgChlList;                     // Organization channels
	DPSDK_INT32 iLogicalOrgNum;										// Number of Logical Sub-organization
	DPSDK_LOGIC_ORG_INFO_T* pLogicalOrgList;						// List of Logical Sub-organization
}DPSDK_LOGIC_ORG_INFO;


// Device data for organizing trees
typedef struct
{
	DPSDK_CHAR	szDeviceId[DPSDK_DEVICE_ID_LEN];					// Device ID
	DPSDK_CHAR  szDeviceLogicalId[DPSDK_ORG_CODE_LEN];              // Logical Device ID
	DPSDK_CHAR  szDeviceLogicalName[DPSDK_DEVICE_NAME_LEN];         // Logical Device name
	DPSDK_INT64	iSort;												// Sort
}DPSDK_ORG_SUB_DEV_INFO;

// The channel data of the organization tree
typedef struct
{
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT64	iSort;												// Sort
	DPSDK_CHAR  szDeviceId[DPSDK_DEVICE_ID_LEN];                    // parent Device node ID
	DPSDK_CHAR  szParentCode[DPSDK_ORG_CODE_LEN];                   // parent Organization node ID
	DPSDK_CHAR  szDeviceLogicalId[DPSDK_ORG_CODE_LEN];              // Parent Logical Device ID if Logcial Org, it may empty
	DPSDK_CHAR  szChannelLogicalName[DPSDK_CHANNEL_NAME_LEN];       // Logical Channel name
	DPSDK_CHAR  szChannelLogicalID[DPSDK_CHANNEL_ID_LEN];           // Logical Channel ID
	DPSDK_INT32 iOwnerType;                                         // Channel Owner   1 Device  2 Orgnization
}DPSDK_ORG_SUB_CHANNEL_INFO;

// Basic Organizational Data
typedef struct DPSDK_ORG_INFO_T
{
 	DPSDK_ORG_BASE_INFO struOrgBaseInfo;							// Organization Info
	DPSDK_INT32 iDevNum;											// Number of Child Device
	DPSDK_ORG_SUB_DEV_INFO* pDevList;								// List of Child Device
	DPSDK_INT32 iChannelNum;										// Number of Sub-channel
	DPSDK_ORG_SUB_CHANNEL_INFO* pChannelList;						// List of Sub-channel
	DPSDK_INT32 iOrgNum;											// Number of Sub-organization
	DPSDK_ORG_INFO_T* pOrgList;										// List of Sub-organization
	DPSDK_INT32 iValidOrgNum;
	//logical do not have devInfo
	DPSDK_LOGIC_ORG_INFO struOrgLogicalInfo;                        // Logical Organization Info
}DPSDK_ORG_INFO;

// Single organization data
typedef struct DPSDK_SINGLE_ORG_INFO_T
{
	DPSDK_CHAR	szOrgCode[DPSDK_ORG_CODE_LEN];						// organization code
	DPSDK_CHAR	szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_CHAR	szOrgSN[DPSDK_SN_LEN];								// Organization name
	DPSDK_BOOL	bHasData;											// Whether there is direct data
	DPSDK_INT32	iOrgSort;											// Organization sort 											//
	DPSDK_CHAR	szParentCode[DPSDK_ORG_CODE_LEN];					// Organization parent node ID
	DPSDK_CHAR	szOrgType[DPSDK_TYPE_LEN];							// Organization type, webgate need
}DPSDK_SINGLE_ORG_INFO;

// All Organizational Info (Recursion Tree)
typedef struct DPSDK_ALL_ORG_INFO_T
{
	DPSDK_SINGLE_ORG_INFO struOrgBaseInfo;							// Info about Organization at this Level
	DPSDK_INT32 iOrgNum;											// Number of Sub-organizations
	DPSDK_ALL_ORG_INFO_T* pOrgList;									// List of Sub-organizations
	DPSDK_INT32 iValidOrgNum;										// Number of Valid Sub-organization(this num is the valid org count)
}DPSDK_ALL_ORG_INFO;

// Hierarchical acquisition of device tree request parameters
typedef struct
{
	DPSDK_CHAR	szID[DPSDK_ORG_CODE_LEN];							// Node ID，Represent one code of orgCode,deviceCode,channelCode
	DPSDK_CHAR	szNodeType[DPSDK_TYPE_LEN];							// DPSDK_NODE_TYPE definition 1:Organization,2:Equipment,3:passageway,support plural,"1,2,3"
	DPSDK_INT32 iOrgType;											// 1: Basic organization
	DPSDK_INT32 iShowDev;											// 0: No device nodes are needed,1: Need device node
	DPSDK_INT32 iDeep;												// 2: organization+Equipment,3Organization+equipment+passageway
	DPSDK_INT32 iCascading;											// 0: No need cascading data, 1: Need cascading data
	DPSDK_INT32 iNodeType;											// DPSDK_NODE_TYPE definition 1:Organization,2:Equipment,3:passageway

	DPSDK_INT32 iCategoryNum;										// Device large class list length
	DPSDK_INT32* pCategoryList;										// Device large list
	DPSDK_CHAR* pTypeCode;
	DPSDK_CHAR* pKeyType;

	DPSDK_INT32 iChannelTypeNum;									// Channel type list length
	DPSDK_INT32* pChannelTypeList;									// Channel type set

	DPSDK_CHAR szKeyWord[DPSDK_MEMO_LEN];							// Search keywords
	DPSDK_CHAR	szAct[DPSDK_TYPE_LEN];								// Active,"search",default:""
	DPSDK_INT32 iEndPosType;										// Type for end judgement, use for 
}DPSDK_GET_DEVICE_LAYERED_PARAM;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];				// Channel Id
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			// Device name
	DPSDK_CHAR szPId[DPSDK_NODE_ID_LEN];							// Parent node
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_INT32	iUnitType;											// Unit type
	DPSDK_INT64 lCapability;											// Capability 
	DPSDK_LONG lCapabilityCode;
	DPSDK_INT32 iChannelType;										// Channel type
	DPSDK_INT32 iCameraType;										// Camera type see DPSDK_CAMERA_TYPE
	DPSDK_INT32 iChannelSubType;									// Channel subtype see DPSDK_CHANNEL_SUBTYPE
	DPSDK_INT32 iChannelRemoteType;									// Channel remote type
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;										// Device type	
	DPSDK_INT32 iChannelStreamType;									// Encode Channel Stream type
	DPSDK_INT32 iStatus;
}DPSDK_BRMS_CHANNEL_INFO;

typedef struct
{
	DPSDK_BRMS_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iStatus;											// Status
}DPSDK_BRMS_DEVICE_CHANNEL_INFO;


typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Source channel device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Source channel device name
	DPSDK_CHAR szPId[DPSDK_NODE_ID_LEN];							// Parent node
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_CHAR szDeviceModel[DPSDK_DEVICE_MODEL_LEN];				// Device model
	DPSDK_CHAR szSoftwareVersion[DPSDK_SOFTWARE_VERSION_LEN];		// Software version
	DPSDK_INT32 iSourceType;										// Source type
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// Third organization Id
	DPSDK_INT64 lCapability;											// Capability binary code
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;										// Device type
	DPSDK_INT32 iChannelNum;
	DPSDK_INT32 iStatus;
}DPSDK_BRMS_BASE_DEVICE_INFO;

typedef struct
{				
	DPSDK_INT32 iStatus;											// CheckID
	DPSDK_BRMS_BASE_DEVICE_INFO struBaseInfo;
	DPSDK_BRMS_DEVICE_CHANNEL_INFO* pChannelList;
}DPSDK_BRMS_GRADE_DEVICE_INFO;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_CHAR szPId[DPSDK_ID_LEN];									// Parent node
	DPSDK_INT32 iDomainID;											// Domain ID
	DPSDK_INT32 iSourceType;										// Source type
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// Third organization Id
}DPSDK_BRMS_ORGANIZATION_INFO;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_INT32 iDomainID;											// Domain ID
	DPSDK_INT32 iSourceType;										// Source type
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// Third organization Id
	DPSDK_INT32 iOrganizationNum;
	DPSDK_BRMS_ORGANIZATION_INFO* pOrganizationList;
	DPSDK_INT32 iDeviceNum;
	DPSDK_BRMS_GRADE_DEVICE_INFO* pDeviceList;
	DPSDK_INT32 iChannelNum;
	DPSDK_BRMS_DEVICE_CHANNEL_INFO* pChannelList;
}DPSDK_TREE_GRADE_DEVICE_TREE_INFO;

typedef struct
{
	DPSDK_INT32  iDeviceCategorieCount;								//device Categorie total count
	DPSDK_INT32* pDeviceCategories;									//device Categories
	DPSDK_INT32  iDeviceTypeCount;									//device type total count
	DPSDK_INT32* pDeviceTypes;										// device types
	DPSDK_INT32	 iUnitTypeCount;									// unit type total count
	DPSDK_INT32* pUnitTypes;										//unit types
	DPSDK_INT32	 iCapabilitieCount;									//capabilitie total count
	DPSDK_INT32* pCapabilities;										//capabilities
	DPSDK_INT32	 iChannelTypeCount;									//channel type total count
	DPSDK_INT32* pChannelTypes;										//channel types
	DPSDK_INT32  iChannelSubtypesCount;								// channel sub type total count
	DPSDK_INT32* pChannelSubtypes;									// channel sub types
	DPSDK_INT32	 iChannelRemoteTypeCount;							//channel remote type total count
	DPSDK_INT32* pChannelRemoteTypes;								//channel remote types
	DPSDK_INT32	 iCameraTypeCount;									//camera type total count
	DPSDK_INT32* pCameraTypes;										//camera types
	DPSDK_INT32	 iDevCapabilitieCount;								//device capabilitie total count
	DPSDK_INT32* pDevCapabilities;									//device capabilities
	DPSDK_INT32	 iSourceTypeCount;									//Source type total count
	DPSDK_INT32* pSourceTypes;										//Source types
	DPSDK_INT32	 iProtocolTypeCount;								//Protocol type total count
	DPSDK_INT32* pProtocolTypes;									//Protocol types
}DPSDK_TREE_GRADE_DEVICE_TREE_CONDITION;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// org code
	DPSDK_INT32 iTreeType;											// tree type
	DPSDK_INT32 iDomain;
	int iMaxConditonCount;											// conditon count
	DPSDK_INT32 iEmptyDeviceFilter;
	DPSDK_TREE_GRADE_DEVICE_TREE_CONDITION* pGradeDeviceConditonList;// condition list
}DPSDK_TREE_GRADE_DEVICE_TREE_PARAM;

// Hierarchical acquisition of device tree node information
typedef struct
{
	DPSDK_CHAR	szID[DPSDK_ORG_CODE_LEN];							// Organization code
	DPSDK_CHAR	szName[DPSDK_ORG_NAME_LEN];							// Organization name
	DPSDK_BOOL isParent;											// Whether it is a parent node
	DPSDK_CHAR	szParentID[DPSDK_ORG_CODE_LEN];						// Parent node code
}DPSDK_LAYERED_ORG_INFO;

// Hierarchical acquisition of device tree device node information
typedef struct
{
	DPSDK_CHAR	szID[DPSDK_DEVICE_ID_LEN];							// Device code
	DPSDK_CHAR	szName[DPSDK_DEVICE_NAME_LEN];						// Device name
	DPSDK_BOOL isParent;											// Whether it is a parent node
	DPSDK_CHAR	szParentID[DPSDK_ORG_CODE_LEN];						// Parent node code

	DPSDK_INT32 iCatagory;											// Device category
	DPSDK_INT32 iSubType;											// Device subtype
	DPSDK_CHAR szIP[DPSDK_IP_LEN];									// Device IP
}DPSDK_LAYERED_DEVICE_INFO;

//Hierarchical acquisition of device tree channel node information
typedef struct
{
	DPSDK_CHAR	szID[DPSDK_DEVICE_ID_LEN];							// Device code
	DPSDK_CHAR	szName[DPSDK_DEVICE_NAME_LEN];						// Device name
	DPSDK_BOOL isParent;											// Whether it is a parent node
	DPSDK_CHAR	szParentID[DPSDK_ORG_CODE_LEN];						// Parent node code

	DPSDK_INT32 iChannelSeq;										// Channel code
	DPSDK_INT32 iUnitType;											// Unit type
	DPSDK_INT32 iChannelType;										// Channel type
}DPSDK_LAYERED_CHANNEL_INFO;

typedef enum
{
	NODE_TYPE_ORG			= 1,									// Organization
	NODE_TYPE_DEV			= 2,									// Device
	NODE_TYPE_CHANNEL		= 3,									// Channel
}DPSDK_NODE_TYPE;

// Gradation gets the result of the device tree
typedef struct
{
	DPSDK_INT32 iNodeType;											// See DPSDK_NODE_TYPE Definition 1:Organization,2:Equipment,3:passageway
	/*DPSDK_LAYERED_ORG_INFO* pNodeOrg;
	DPSDK_LAYERED_DEVICE_INFO* pNodeDevice;
	DPSDK_LAYERED_CHANNEL_INFO* pNodeChannel;*/

	DPSDK_CHAR	szID[DPSDK_ORG_CODE_LEN];							// Node ID
	DPSDK_CHAR	szName[DPSDK_ORG_NAME_LEN];							// Node name
	DPSDK_BOOL isParent;											// Whether it is a parent node
	DPSDK_CHAR	szParentID[DPSDK_ORG_CODE_LEN];						// Parent node ID
	DPSDK_INT64 iSort;												// Sort value
	DPSDK_INT32 iStatus;											// Channel state see DPSDK_DEV_STATUS Definition
	//
	DPSDK_INT32 iCategory;											// iNodeType For equipment, it represents a large class of equipment.
	DPSDK_INT32 iSubType;											// iNodeType A small class of devices is represented when the device is used.
	DPSDK_INT32 iDevType;											// Device Type
	DPSDK_INT32	iUnitType;											// iNodeTypeUnit type for channel time
	DPSDK_INT32 iChannelType;										// iNodeTypeExpress channel type for channel
	DPSDK_CHAR szSN[DPSDK_SN_LEN];									// SN code
	// Equipment information
	DPSDK_CHAR szIP[DPSDK_IP_LEN];									// Device IP
	// Channel information
	DPSDK_INT32 iChannelSeq;										// Channel code
	DPSDK_INT32 iDomainID;											// Domain  ID
	DPSDK_INT32 iCapability;										// Capability
	DPSDK_CHAR	szParentName[DPSDK_ORG_NAME_LEN];					// Parent node Name
	DPSDK_INT32 iCameraType;										// Camera type see DPSDK_CAMERA_TYPE
	DPSDK_CHAR	szOrgName[DPSDK_ORG_NAME_LEN];						// org name
	DPSDK_INT32 iManufacturer;
	DPSDK_CHAR szDeviceModel[DPSDK_TYPE_LEN];										
	DPSDK_INT32 iChannelRemoteType;									// Remote channel type See DPSDK_CHANNEL_REMOTE_TYPE Definition
	DPSDK_INT32 iDecodeMode;										// Decoding mode See DPSDK_DECODE_MODE Definition
	DPSDK_INT32 iAssistantStream;									// Code stream type
	DPSDK_INT32 iOwnerType;                                         // Channel Owner   1 Device  2 Orgnization
	DPSDK_INT32 iSourceType;										// Source type
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// Third organization Id
	DPSDK_CHAR	szDeviceID[DPSDK_ORG_CODE_LEN];						// Device ID

}DPSDK_LAYERED_RESULT;

// Obtain Layered List of Device Tree Returned Result
typedef struct
{
	DPSDK_INT32 iResultNum;											// List Length
	DPSDK_LAYERED_RESULT* pResultList;								// Result List
	DPSDK_INT32 isQueryChannel;										// More than 1000 channels, return isQueryChannel=1, do not return channel, further request to obtain channel paging interface
}DPSDK_LAYERED_RESULT_LIST;

typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name;
}DPSDK_USER_DATA_INFO;

typedef struct DPSDK_DEVICE_STATUS_T
{
	DPSDK_CHAR		szCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_INT32		iStatus;
	DPSDK_INT64		iStatusTime;
}DPSDK_DEVICE_STATUS;

typedef struct
{
	DPSDK_INT32	iDevNum;											// The number of device 
	DPSDK_DEVICE_ID struDevIdList[1];								// The list of device id
}DPSDK_DEVICE_LIST;

typedef struct DPSDK_DEVICE_STATUS_INFO_LIST_T
{
	DPSDK_INT32	iNum;
	DPSDK_DEVICE_STATUS*	pList;
}DPSDK_DEVICE_STATUS_INFO_LIST;

typedef struct DPSDK_CHANNEL_STATUS_T
{
	DPSDK_CHAR		szCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32		iStatus;
	DPSDK_INT64		iStatusTime;
}DPSDK_CHANNEL_STATUS;

typedef struct DPSDK_CHANNEL_STATUS_INFO_LIST_T
{
	DPSDK_INT32	iNum;
	DPSDK_CHANNEL_STATUS*	pList;
}DPSDK_CHANNEL_STATUS_INFO_LIST;

// Front-end state
typedef enum
{
	DEV_STATUS_OFFLINE						= 0,					// Off-line
	DEV_STATUS_ONLINE						= 1,					// On-line
	DEV_STATUS_SLEEP						= 2,					// sleep
	DEV_STATUS_FORBID,												// Disable
	DEV_STATUS_UNDEFINE						= 100,					// Unknown	
}DPSDK_DEV_STATUS;

typedef enum
{
	DEV_STATUS_REAL						    = 0,					// real
	DEV_STATUS_VIRTUAL						= 1,					// virtual
}DPSDK_DEV_VIRTUAL_STATUS;

// Access protocol
typedef enum
{
	DEV_PROTOCOL_UNDEFINE					= 0,					// Unknown
	DEV_PROTOCOL_DAHUA						= 1,					// Dahua
	DEV_PROTOCOL_HIK,												// Hikvion
	DEV_PROTOCOL_ONVIF						= 99,					// Onvif
}DPSDK_DEV_PROTOCOL;

// The define of TVWALL type
typedef enum
{
	TVWALL_TYPE_UNKNOW		 = 0,
	TVWALL_TYPE_NVD			 = 1,			// Decoder
	TVWALL_TYPE_SNVD		 = 2,			// Soft decoder
	TVWALL_TYPE_MATRIX		 = 3,			// Matrix
	TVWALL_TYPE_CTRL		 = 4,			// Decoding splicer
	TVWALL_TYPE_UDS			 = 5,			// Universal decoder, which is device edition of soft decoder
	TVWALL_TYPE_COURT		 = 6,			// Court trial host info
	TVWALL_TYPE_NVR6000		 = 7,			// Decoding NVR
	TVWALL_TYPE_AB			 = 8,			// AB controller
	TVWALL_TYPE_B10_PLATFORM = 9,			// Hikvision B10 integrated video platform
	TVWALL_TYPE_INFINOVAMARTRIX	 = 10,		// Infinova Matrix
	TVWALL_TYPE_B10_INTEGRAL	 = 11,		// Hikvision B10 integral machine
	TVWALL_TYPE_B20_PLATFORM	 = 12,		// Hikvision B20 integrated video platform
	TVWALL_TYPE_B20_INTEGRAL	 = 13,		// Hikvision B20 integral machine
}DPSDK_TVWALL_DEVICE_TYPE;

// Channel type
typedef enum
{
	CHNL_TYPE_ENC_BEGIN,											// Encode channel
	CHNL_TYPE_STREAM						= 1,					// Video
	CHNL_TYPE_PIC,													// Picture
	CHNL_TYPE_MIX,													// Double bit stream
	CHNL_TYPE_POS,													// POS channel
	CHNL_TYPE_ENC_END						= 10,
}DPSDK_CHANNEL_TYPE;//"channelType"

// Channel subtype
typedef enum
{
	CHNL_SUBTYPE_NORMAL,											// Ordinary video
	CHNL_SUBTYPE_VISIBLE					= 1,					// visible light
	CHNL_SUBTYPE_THERMAL					= 2,					// thermal imaging
}DPSDK_CHANNEL_SUBTYPE;//"channelSubtype"

typedef struct
{
	DPSDK_INT32 iMonth;												// month
	DPSDK_INT32 iWeek;												// week, date mode this field is invalid, - 1 means the last week
	DPSDK_INT32 iDay;												// day, week pattern indicates day of week 
	DPSDK_CHAR  szTime[DPSDK_TIME_LEN];								// time, eg:"09:30"					
}DPSDK_TIME_INFO;

typedef struct
{
	DPSDK_CHAR szTimezoneId[DPSDK_ID_LEN];							// Time zone ID
	DPSDK_CHAR szTimezoneName[DPSDK_NAME_LEN];						// Time zone name
	DPSDK_INT32 iDstEnable;											// Daylight time enable: 0-off, 1-on
	DPSDK_INT32 iDstType;											// Daylight time type, 1-date mode, 2-week mode
	DPSDK_TIME_INFO struDstBeginTime;
	DPSDK_TIME_INFO struDstEndTime;
	DPSDK_CHAR szTimezoneOffset[DPSDK_TIME_LEN];					// Timezone offset, e.g. +08:00
}DPSDK_TIMEZONE_INFO;

typedef enum
{
	EVO_SERVER_AUTH			= 0,
	EVO_SERVER_BRM,
	EVO_SERVER_ECM,
	EVO_SERVER_VIMS,
	EVO_SERVER_PACKAGE,
	EVO_SERVER_ALARMHOST,
	EVO_SERVER_IPMS,
	EVO_SERVER_RCSGW,
	EVO_SERVER_AR,
	EVO_SERVER_EIMS,
	EVO_SERVER_COUNT,
	EVO_SERVER_RUNS,
	EVO_SERVER_ACCESSCONTROL,
	EVO_SERVER_ISMS,
	EVO_SERVER_INSPECTION,
	EVO_SERVER_RECTIFICATION,
	EVO_SERVER_APS,
	EVO_SERVER_IPTS,
	EVO_SERVER_ISC,
	EVO_SERVER_LOG,
	EVO_SERVER_IMFG,
	EVO_SERVER_VIDEO,
	EVO_SERVER_CAR,
	EVO_SERVER_ROBOTGW,
	EVO_SERVER_ORMS,
	EVO_SERVER_SRCS,
	EVO_SERVER_ADMS,
	EVO_SERVER_ADMIN,
	EVO_SERVER_DTMS,
	EVO_SERVER_OKC,
	EVO_SERVER_WBE,
	EVO_SERVER_BCDMS,
	EVO_SERVER_GMCOMMON,
	EVO_SERVER_FOREST,
}DPSDK_EVO_SERVER_SYSTEM;

// Basic equipment information
typedef struct
{
	DPSDK_CHAR szDeviceID[DPSDK_DEVICE_ID_LEN];						// Device ID
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN_EX];						// Device name
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// Device login user
	DPSDK_CHAR szUserPwd[DPSDK_PWD_LEN];							// Device login password
	DPSDK_CHAR szIP[DPSDK_IP_LEN];									// Device additionIP
	DPSDK_CHAR szDeviceSn[DPSDK_SN_LEN];							// Device serial number
	DPSDK_USHORT ushPort;											// Device add port
	DPSDK_CHAR szDevIP[DPSDK_IP_LEN];								// Device real ip
	DPSDK_USHORT ushDevPort;										// Device real port
	DPSDK_INT32 iManFac;											// Manufacturer
	DPSDK_INT32 iAlarmRecordPosition;								// alarmRecordPosition
	DPSDK_INT32 iCapability;										// Capability
	DPSDK_INT32 iStatus;											// Device status	See DPSDK_DEV_STATUS Definition
	DPSDK_INT64 iStatusTime;
	DPSDK_INT32 iSleepStatus;										// Device Sleep status	istatus = 1 , iSleepStatus = 0 online, iSleepStatus = 1 dormancy
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// The organization code
	DPSDK_CHAR szOldOrgCode[DPSDK_ORG_CODE_LEN];						// The old organization code
	DPSDK_INT32 iDomainID;											// Domain ID
	DPSDK_INT32 iDevModel;											// Device model
	DPSDK_CHAR szDeviceModelStr[DPSDK_DEVICE_MODEL_STR];			// Device model(str)
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];
	DPSDK_CHAR szSipPwd[DPSDK_PWD_LEN];
	DPSDK_INT32 iSipIdNum;
	DPSDK_ID vthRelatedConfirmVTOSipId[DPSDK_MAX_VTO_SIPID_NUM];
	DPSDK_INT32 iUnitEnable;
	DPSDK_INT32 iPhaseEnable;
	DPSDK_INT32 iBuildingEnable;
	DPSDK_INT32 iElevatorEnable;
	DPSDK_CHAR szSoftwareVersion[DPSDK_ID_LEN];
	DPSDK_CHAR szHardwareVersion[DPSDK_ID_LEN];
	DPSDK_CHAR szProtocolVersion[DPSDK_ID_LEN];
	DPSDK_CHAR szLoginType[DPSDK_TYPE_LEN];
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];
	DPSDK_INT32 iProtocol;											// Access protocol	See DPSDK_DEV_PROTOCOL Definition
	DPSDK_INT32 iStreamProtocol;									// Agreement: see DPSDK_STREAM_PROTOCOL_TYPE_e
	DPSDK_INT32 iEncrypType;										// Encryp type
	DPSDK_CHAR szSecretKey[DPSDK_DEVICE_NAME_LEN];					// Secret Key
	DPSDK_CHAR szAccessKey[DPSDK_KEY_LEN];							// Access Key
	DPSDK_INT32 iIsVideoNexus;										// Is it a baseline for video interconnection 1 yes 0 no;
	DPSDK_INT32 iLargeAmountChannel;                                // 0 not Big channels 1 = big channels
	DPSDK_CHAR szHwid[DPSDK_LEN_128];								// Hardware identification code
	DPSDK_CHAR szDeviceMac[DPSDK_MAC_ADDRESS_LEN];					// Mac address
	DPSDK_INT32 iVirtual;
	DPSDK_INT32 iCasacadeDevType;									// Cascade Dev StreamType
	DPSDK_INT32 iStat;												//状态 0 不启用 1 启用
	DPSDK_CHAR szDevProvStdCode[DPSDK_PROV_CODE_LEN];				// Provincial Standard Code
	DPSDK_INT32 iDeviceCategory;                                    // device Category big Type
	DPSDK_INT32 iDeviceType;                                        // device type small type
	DPSDK_INT64 iSort;                                              // device sort
	DPSDK_CHAR szDevGBSNCode[DPSDK_SN_LEN];							// device GB SN Code
	DPSDK_TIMEZONE_INFO timeZone;
	DPSDK_INT32 iAlarmHostState;							//alarmhost state 0-no,64-all arm, 128-all disarm,256-part arm	
	DPSDK_INT32 iDevType;	
	DPSDK_INT32 iSourceType;										// Source type
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// Third organization Id
	DPSDK_CHAR szRegDeviceCode[DPSDK_DEVICE_CODE_LEN];						// The organization code
	DPSDK_INT32 iLinkMode;											// Link Mode:0=persistent connection, 1=short connection
	DPSDK_INT32 iNetWork;											// netWork Mode,TV WALL is must
	DPSDK_BOOL	bAuthority;											// Whether has permission
	DPSDK_BOOL	bAuthorityChange;								//bAuthority is Change
}DPSDK_DEV_INFO;

// Channel basic information
typedef struct
{
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32 iChannelSeq;										// Channel serial number, begin at 0
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN_EX];					// Channel name
	DPSDK_CHAR szChnlSN[DPSDK_SN_LEN];								// Channel SN code
	DPSDK_INT32 iChannelType;										// Channel type		see DPSDK_CHANNEL_TYPE  Only coded channels are currently available classification
	DPSDK_INT32 iChannelSubtype;									// Channel type		see DPSDK_CHANNEL_SUBTYPE
	DPSDK_INT32 iStatus;											// Channel status	see DPSDK_DEV_STATUS
	DPSDK_INT64 iStatusTime;
	DPSDK_INT32 iSleepStatus;											// Channel status	
	DPSDK_INT32 iDomainID;											// Domain ID
	DPSDK_INT64 iSort;												// Sort
	DPSDK_INT64	lCapability;										// channel capability
	DPSDK_INT32 iVirtual;
	DPSDK_INT32 iStat;												//状态 0 不启用 1 启用
	DPSDK_CHAR	szChnlProvStdCode[DPSDK_PROV_CODE_LEN];				// Provincial Standard Code
	DPSDK_CHAR szChnlGBSNCode[DPSDK_SN_LEN];						// Channel GB SN Code
	DPSDK_CHAR szOwnerCode[DPSDK_NAME_LEN_EX];						// channel ownerCode
	DPSDK_CHAR szChannelIp[DPSDK_CHANNEL_ID_LEN];						// channel Ip
	DPSDK_INT32 iChannelUnitType;  
	DPSDK_CHAR szStreamType[DPSDK_STREAMTYPE_LEN];                  // StreamType
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// OrgCode
	DPSDK_CHAR szOldOrgCode[DPSDK_ORG_CODE_LEN];					//Old Org
	DPSDK_BOOL   bAuthorityChange;											 //bAuthority is Change
	DPSDK_BOOL	bAuthority;														 // Authority of channe
}DPSDK_BASE_CHANNEL_INFO;

// Virtual Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iChannelRemoteType;									// Remote channel type see DPSDK_CHANNEL_REMOTE_TYPE
}DPSDK_EVENT_DETETOR_CHANNEL_INFO;

// Camera type
typedef enum
{
	CAMERA_TYPE_NORMAL,												// Bolt
	CAMERA_TYPE_SD,													// Speed Dome Cameras
	CAMERA_TYPE_HALFSD,												// Hemisphere
	CAMERA_TYPE_EVIDENCE,											// Evidence channel
}DPSDK_CAMERA_TYPE;

// Lock holder information
typedef struct
{
	DPSDK_CHAR		szLockUserName[DPSDK_NAME_LEN];	// User name for lockin cloud
	DPSDK_INT32		iLockUserLevel;					// Lock user level of cloud
	DPSDK_CHAR		szLowerDomain[DPSDK_IP_LEN];				// Lower Domain IP
	DPSDK_BOOL		bLowerUser;
}DPSDK_PTZ_LOCKUSER;

// Operating parameters of cloud platform
typedef struct
{
	typedef enum
	{
		PtzOF_Show_PtzMenu				= 0,		// Display "Cloud platform menu"
		PtzOF_Move_PtzMenu				= 1,		// Control "Menu direction of the cloud platform"
		PtzOF_Confirm_PtzMenuItem		= 2,		// Determine "Cloud platform menu item"
		PtzOF_Set_LineScannBorder		= 3,		// Set up "Line scavenging boundary"
		PtzOF_Switch_LineScanBorder		= 4,		// Switch "Line scan"
		PtzOF_Switch_AutoRotate			= 5,		// Switch "Horizontal rotation"
		PtzOF_Switch_Light				= 6,		// Switch "lighting"
		PtzOF_Switch_RainBrush			= 7,		// Switch "Wiper"
		PtzOF_Switch_InfraredLight		= 8,		// Switch "infrared light"
		PtzOF_Switch_AssisentPoint		= 9,		// Switch "Auxiliary point"
		PtzOF_Switch_Cruise				= 10,		// Switch "Cruise function"
		PtzOF_Switch_Track				= 11,		// Switch "Cruising"
		PtzOF_Switch_SetTrack			= 12,		// Switch "Track setting"
	}PtzOperateFunction_e;

	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	PtzOperateFunction_e	iPtzOFType;							// Operating function type of cloud platform
	DPSDK_INT32				iCruiseId;							// (This variable is only in Switch_CruiseOperation when effective) Cruise ID
	DPSDK_INT32				iTrackId;							// (This variable is only in Switch_Track、Switch_SetTrackEffective operation during operation ID
	DPSDK_INT32				iSwitchMode;						// (This variable is only in SwitchEffective operation)0-Close，1-open
	DPSDK_INT32				iBorderType;						// (This variable is only in Set_LineScannBorderEffective operation)16-Left boundary17-.Right boundary
	DPSDK_INT32				iAssisentType;						// (This variable is only in Switch_AssisentPointEffective operation)23-Backlight compensation,24-Number doubled,27- Color turn black,35-Shutter time,41-Brightness,42-Image flip,43-The name of the preset point is hidden,80-Restore factory settings
	DPSDK_INT32				iMoveType;							// (This variable is only in Move_PtzMenuEffective operation)25-Upward movement,26-Move down,27-Left shift,28-Right
	DPSDK_INT32				iSwitchPtzMenu;						// (This variable is only in Show_PtzMenuEffective operation)22=Open the platform menu,23=Close the cloud table menu
	DPSDK_CHAR				szExtend[DPSDK_LEN_256];			// extend variable
}DPSDK_PTZOPERATE_FUNCTION_PARAM;

// Function operation result of cloud platform 
typedef struct
{
	DPSDK_PTZ_LOCKUSER		struLockUser;
	DPSDK_INT32				iResult;				// Operation results:0-failure,1-success
}DPSDK_PTZOPERATE_RESULT;

// Operating cloud platform camera parameters
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_INT32				iDirect;							// Direction:1-increase,2-decrease
	DPSDK_INT32				iCommand;							// Order:0-stop it，1-open
	DPSDK_INT32				iStep;								// Step
	DPSDK_INT32				iOperateType;						// Operation type:1-variable,2-zoom,3-aperture
	DPSDK_CHAR				szExtend[DPSDK_PTZ_EXTEND_LEN];		// Extended data
	DPSDK_DOUBLE			fSpeed;								// The speed of PTZ,normalized 0~1，0 represent default speed, used when vsl zoomed
	DPSDK_INT32				iDuration;							// Duration,unit:ms
	DPSDK_BOOL				bShare;								// Whether is shared channel
	DPSDK_CHAR				szSharerId[DPSDK_USER_ID_NUM_LEN];	// Sharer UserId
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZOPERATE_CAMERA_PARAM;

// Cloud platform direction control parameters
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	//DPSDK_DOUBLE			fPan;								// The control speed of vertical direction,(-1,1), turn right when bigger than 0, other turn left
	//DPSDK_DOUBLE			fTilt;								// The control speed of Horizontal direction,(-1,1),upper when bigger than 0, other turn down
	//DPSDK_DOUBLE			fZoom;								//  The control speed of variable,(-1,1),amplification when bigger than 0，other narrow
	//															// The PTZ stop turning when the value of fPan, Tilt and fZoom are 0

	DPSDK_INT32				iStepY;								// Vertical direction step
	DPSDK_INT32				iStepX;								// Horizontal direction step
	DPSDK_INT32				iDirect;							// Direction:1-On,2-Under the,3-Left,4-Right,5-Upper left,6-Lower left,7-On the right,8-lower right
	DPSDK_INT32				iCommand;							// Order:0-Stop it, 1-open
	DPSDK_CHAR				szExtend[DPSDK_PTZ_EXTEND_LEN];		// Extended data
	DPSDK_INT32				iDuration;							// The duration of PTZ turned, unit:ms
	DPSDK_BOOL				bShare;								// Whether is shared channel
	DPSDK_CHAR				szSharerId[DPSDK_USER_ID_NUM_LEN];	// Sharer UserId
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZOPERATE_DIRECT_PARAM;

// Operating cloud platform zoom parameters
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_DOUBLE			fChange;							// The relative change value of focus,(-1,1)
	DPSDK_DOUBLE			fSpeed;								// The speed of PTZ turning, normalized 0~1，0 represent default speed
	DPSDK_CHAR				szSharerId[DPSDK_USER_ID_NUM_LEN];	// Sharer UserId
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZ_FOCUS_PARAM;

// Operating cloud platform aperture parameters
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_DOUBLE			fChange;							// The change value of aperture,(-1,1)
	DPSDK_CHAR				szSharerId[DPSDK_USER_ID_NUM_LEN];	// Sharer UserId
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZ_IRIS_PARAM;

// Operating cloud platform variable parameters
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_DOUBLE			fChange;							// The change value of variable,(-1,1)
	DPSDK_INT32				iDuration;							// Duration,unit:ms
	DPSDK_CHAR				szSharerId[DPSDK_USER_ID_NUM_LEN];	// Sharer UserId
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZ_ZOOM_PARAM;

// Electric focusing control parameters
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_FLOAT				fFocus;								// Focal length
	DPSDK_FLOAT				fZoom;								// Multiple
	DPSDK_INT32				iOperateType;						// Operation type:0-Reset,1-Continuous focusing,2-Autofocus
	DPSDK_INT32				iLensType;							// Lens type：0-unknown，1-Built-in zoom lens, 2-manual zoom lens, 3-external-in zoom lens
}DPSDK_PTZOPERATE_FOCUS_PARAM;

// Control preset point parameters
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR				szPointCode[DPSDK_PRESETPOINT_CODE_LEN];	// Preset point coding
	DPSDK_CHAR				szPointName[DPSDK_PRESETPOINT_NAME_LEN];	// Preset point name
	DPSDK_INT32				iOperateType;								// Operation type:1-Location, 2-Set up, 3-delete, 4-Update working time
	DPSDK_CHAR				szStartTime[DPSDK_PTZ_TIME_LEN];			// Start time(time stamp)
	DPSDK_CHAR				szEndTime[DPSDK_PTZ_TIME_LEN];				// End time(time stamp)
	DPSDK_DOUBLE			fSpeed;										// The speed of PTZ turning, normalized 0~1，0 represent default speed
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZOPERATE_PRESETPOINT_PARAM;


typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_INT32				iMotionType;								// watch point motion type
	DPSDK_INT32				iPrePointId;								// Preset point id
	DPSDK_INT32				iLeisureTime;								// Leisure time(minutes)
	DPSDK_INT32				iEnable;									// Enable
}DPSDK_PTZOPERATE_WATCHPOINT_PARAM;

// Get the preset point information
typedef struct
{
	DPSDK_CHAR				szPointName[DPSDK_PRESETPOINT_NAME_LEN];	// Preset point name
	DPSDK_CHAR				szPointCode[DPSDK_PRESETPOINT_CODE_LEN];	// Preset point encoding, from 1 start
	DPSDK_INT32				iPointType;									// Preset point type,0=Ordinary preset point,1=Preset points that have been set for intelligent rules
	DPSDK_BOOL				bIsWatchPoint;								// Wheather Preset point  Is WatchPoint? 0 not  1 is
}DPSDK_PTZ_PRESETPOINT_INFO;

// Get a list of preset points
typedef struct
{
	DPSDK_UINT32			uiTotal;									// Total
	DPSDK_PTZ_PRESETPOINT_INFO struPresetPointInfo[1];					// Preset point list
}DPSDK_PTZ_PRESETPOINT_LIST;

// Set current point of PTZ as preset point
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR				szPointCode[DPSDK_ID_LEN];					// Preset point encoding, from 1 start
	DPSDK_CHAR				szPointName[DPSDK_PRESETPOINT_NAME_LEN];	// Preset point name
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZ_PRESETPOINT_SET_PARAM;

// Delete preset point
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR				szPointCode[DPSDK_ID_LEN];					// Preset point encoding, from 1 start
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZ_PRESETPOINT_DEL_PARAM;

// Locating ball machine to current preset point
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR				szPointCode[DPSDK_ID_LEN];					// Preset point encoding, from 1 start
	DPSDK_DOUBLE			fSpeed;										// The speed of PTZ turning, normalized 0~1，0 represent default speed
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZ_PRESETPOINT_LOCATE_PARAM;

// Three dimensional positioning parameters
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_DOUBLE			fPointX;								// Horizontal coordinates:-8192 ~ ~ Eight thousand one hundred and ninety-two
	DPSDK_DOUBLE			fPointY;								// Vertical coordinates:-8192 ~ ~ Eight thousand one hundred and ninety-two
	DPSDK_DOUBLE			fPointZ;								// Variable number:-4 ~ ~ 4
	DPSDK_CHAR				szExtend[DPSDK_PTZ_EXTEND_LEN];			// Extended data
}DPSDK_PTZOPERATE_SITPOSITION_PARAM;

// Three dimensional positioning parameters(Used by VSL)
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_DOUBLE			fCandidateBoxMidX;						// x value of center point of candidate box
	DPSDK_DOUBLE			fCandidateBoxMidY;						// y value of center point of candidate box
	DPSDK_INT32				iCandidateBoxWidth;						// Width of candidate box, the value on horizontal coordinate, corresponding to x
	DPSDK_INT32				iCandidateBoxHeight;					// Height of candidate box, the value on vertical coordinate, corresponding to y
	DPSDK_INT32				iWindowWidth;							// Width of window, the value on horizontal coordinate, corresponding to x
	DPSDK_INT32				iWindowHeight;							// Height of window,the value on vertical coordinate, corresponding to y
	DPSDK_BOOL				bZoomOut;								// Zoom in and out zone bit, true is to zoom in, and false is to zoom out
	DPSDK_BOOL				bShare;									// Whether is shared channel
	DPSDK_CHAR				szSharerId[DPSDK_USER_ID_NUM_LEN];		// Sharer UserId
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZOPERATE_SITPOSITION_EX_PARAM;

// Lock the unlocking parameters
typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_UINT32			uiLockTime;								// Lock time, unit second,texpression has been locked until the release or Bei Qiang Wins
	DPSDK_INT32				iOperateType;							// Operation type:0-Unknown, 1-Lock the current camera, 2-Unlock the current camera, 3-Unlock all the cameras locked by the user, 4-Lock all the cameras, 5-Query lock state
	DPSDK_CHAR				szUserCode[DPSDK_USER_ID_LEN];
	DPSDK_CHAR				szUserName[DPSDK_NAME_LEN];
	DPSDK_CHAR				szExtend[DPSDK_PTZ_EXTEND_LEN];			// Extended data
	DPSDK_BOOL				bShare;									// Whether is shared channel
	DPSDK_CHAR				szSharerId[DPSDK_USER_ID_NUM_LEN];		// Sharer UserId
	DPSDK_BASE_PARAM		struBaseParam;
}DPSDK_PTZOPERATE_ARRANGEPTZ_PARAM;

// scan and rainwiper
typedef struct
{
	DPSDK_CHAR			szChannelId[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_INT32			iSpeed;									// scan speed
	DPSDK_INT32			iControl;								// 0 OFF 1 ON
	DPSDK_INT32			iDirection;								// Margin direction 0 left 1 right
	DPSDK_INT32			iRoute;									// Scan number 1 is the initial value
}DPSDK_PTZ_SCAN_WIPER_PARAM;

// Open the manual video parameters
typedef struct
{
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_INT32					iStreamType;						// Code stream type (code stream type:1-Main stream, 2-Auxiliary code stream)
	DPSDK_INT32					iRecordDuration;					// Video length(default 12*3600s)
	DPSDK_CHAR					szRecordSubType[DPSDK_TYPE_LEN];
	DPSDK_CHAR					szState[DPSDK_TYPE_LEN];
	DPSDK_BASE_PARAM			struBaseParam;
}DPSDK_PTZOPERATE_STARTREMOTERECORD_PARAM;

// Open/Stop the result of manual video
typedef struct
{
	DPSDK_INT32					iPlanId;							// Plan ID
	DPSDK_CHAR					szNow[DPSDK_PTZ_TIME_LEN];			// Current time(time stamp)
}DPSDK_PTZOPERATE_REMOTERECORD_RESULT;

// Open the APP manual video parameters
typedef struct
{
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_CHAR					szPaasId[DPSDK_ID_LEN];				// paas ID
	DPSDK_INT32					iStreamType;						// Code stream type (code stream type:1-Main stream, 2-Auxiliary code stream)
	DPSDK_INT32					iRecordDuration;					// Video length(default 12*3600s)
	DPSDK_CHAR					szRecordSubType[DPSDK_TYPE_LEN];
	DPSDK_CHAR					szState[DPSDK_TYPE_LEN];
}DPSDK_PTZOPERATE_STARTAPPREMOTERECORD_PARAM;

// Turn off the manual video parameters
typedef struct
{
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];  // Channel ID
	DPSDK_INT32					iStreamType;						// Code stream type (code stream type:1-Main stream, 2-Auxiliary code stream)
	DPSDK_BOOL					bForce;							    // Is it forced to close
	DPSDK_BASE_PARAM			struBaseParam;
}DPSDK_PTZOPERATE_STOPREMOTERECORD_PARAM;

// Turn off the manual video parameters
typedef struct
{
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];  // Channel ID
	DPSDK_CHAR					szPaasId[DPSDK_ID_LEN];				// paas ID
	DPSDK_INT32					iStreamType;						// Code stream type (code stream type:1-Main stream, 2-Auxiliary code stream)
	DPSDK_BOOL					bForce;							    // Is it forced to close
}DPSDK_PTZOPERATE_STOPAPPREMOTERECORD_PARAM;

typedef struct 
{
	DPSDK_DOUBLE fCandidateBoxMidx;
	DPSDK_DOUBLE fCandidateBoxMidy;
	DPSDK_INT32 iCandidateBoxWidth;
	DPSDK_INT32 iCandidateBoxHeight;
	DPSDK_INT32 iWindowWidth;
	DPSDK_INT32 iWindowHeight;
	DPSDK_BOOL bZoomOut;
}DPSDK_3RD_DEVICE_MANU_TRACK_INFO;

// The parameter of ling gun ball
typedef struct 
{
	DPSDK_CHAR					      szDevId[DPSDK_DEVICE_ID_LEN];		    // Device id
	DPSDK_INT32					      iGroup;								// Operate group id(0,1)
	DPSDK_INT32					      eOprCmd;							    // Operate type,see DPSDK_SmartTrack_Oper_e
	DPSDK_SMARTTRACK_OPTPARAM	      OptParam;							    // Operate parameter
	DPSDK_CHAR                        szDeviceProtocolType[DPSDK_TYPE_LEN]; // Protocol type
	DPSDK_3RD_DEVICE_MANU_TRACK_INFO  struInfo;                             // 3rd device info
}DPSDK_SMARTTRACK_PARAM;

// The point information of PTZ
typedef struct
{
	DPSDK_INT32					iPointX;							// Horizontal coordinates:-8192 ~~ 8192 
	DPSDK_INT32					iPointY;							// Vertical coordinates:-8192 ~~ 8192 
	DPSDK_INT32					iPointZ;							// The value of variable:-4 ~~ 4 					
}DPSDK_PTZOPERATE_POSITIONINFO;

// The information of PTZ's visible range
typedef struct
{
	DPSDK_INT32					iAzimuth;							// The start of azimuth of visible range
	DPSDK_INT32					iDistance;							// The distance of visible range(radius)
	DPSDK_INT32					iAngle;								// The angle of visible range
}DPSDK_PTZOPERATE_CHANNELVIEWINFO;

// Point information
typedef struct
{
	DPSDK_INT32 iX;									// x coordinates
	DPSDK_INT32 iY;									// y coordinates
}DPSDK_POINT;

typedef struct
{
	DPSDK_CHAR szX[DPSDK_TZ_GPS_LEN];				// x coordinates
	DPSDK_CHAR szY[DPSDK_TZ_GPS_LEN];				// y coordinates
}DPSDK_POINT_EX;

// Capture pic parameters
typedef struct  
{
	DPSDK_POINT		ptStart;
	DPSDK_POINT		ptEnd;
	DPSDK_INT32		iWndWidth;
	DPSDK_INT32		iWndHeight;
	DPSDK_CHAR		szFilePath[DPSDK_FILE_PATH_LEN];	// Only support jpeg
	DPSDK_INT32		iSeq;
}DPSDK_CAPTUREPIC_PARAM;

typedef struct 
{
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
} DPSDK_LINKED_CHANNEL;

typedef struct 
{
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_INT32					iNum;								// The number of link video channel
	DPSDK_LINKED_CHANNEL		LinkChannel[DPSDK_LINKED_CHANNEL_SIZE];	// Video channel
} DPSDK_LINKED_CHANNELS_PARAM;

typedef struct 
{
	DPSDK_INT32 iNum;
	DPSDK_LINKED_CHANNELS_PARAM* pLinkedChannelList;
} DPSDK_LINKED_RESOURCE_PARAM;


// Query heat map parameter
typedef struct
{
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_INT32					iSessionId;							// The session Id of query
	DPSDK_CHAR					szBeginTime[DPSDK_PTZ_TIME_LEN];	// Start time(time stamp)
	DPSDK_CHAR					szEndTime[DPSDK_PTZ_TIME_LEN];		// End time(time stamp)
	DPSDK_CHAR					szPointCode[DPSDK_PRESETPOINT_CODE_LEN];	// Preset point coding
}DPSDK_PTZOPERATE_GETHEATMAP_PARAM;

// Heat Map Type
typedef enum
{
	EM_DPSDK_HEATMAP_UNKNOWN,									
	EM_DPSDK_HEATMAP_AVERAGESTAYTIME,							
	EM_DPSDK_HEATMAP_HUMANSTATISTICS,							
	EM_DPSDK_HEATMAP_HUMANTRACK,								
}EM_DPSDK_HEATMAP_TYPE;

//Query heat map Accurate Param
typedef struct
{
	DPSDK_PTZOPERATE_GETHEATMAP_PARAM   strCustomParam;  // Query heat map parameter
	EM_DPSDK_HEATMAP_TYPE               iQueryType;      // Query type
}DPSDK_PTZOPERATE_GETHEATMAP_ACCURATE_PARAM;
typedef struct
{
	DPSDK_LONG					lId;
	DPSDK_INT32					iPresetIndex;
	DPSDK_INT32					iIdleTime;
	DPSDK_CHAR					szBeginTime[DPSDK_PTZ_TIME_LEN];	// Start time(time stamp)
	DPSDK_CHAR					szEndTime[DPSDK_PTZ_TIME_LEN];		// End time(time stamp)
}DPSDK_PTZ_CURISEPRESET_PARAM;

typedef struct
{
	DPSDK_CHAR						szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_CHAR						szChannelSn[DPSDK_CHANNEL_ID_LEN];	// Channel SN
	DPSDK_INT32						iStatu;								//
	DPSDK_INT32						iParamNum;
	DPSDK_PTZ_CURISEPRESET_PARAM*	pCurisePresetList;
	DPSDK_BASE_PARAM				struBaseParam;
}DPSDK_PTZ_CHANNL_CURISEPRESET_PARAM;

typedef struct
{
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID		//0 is audio, 1 is light，1000000$0$0$0 is audio ,1000000$0$0$0 is light.
}DPSDK_AUDIOLIGHT_CHANNELID_PARAM;

//Audio light control parameters
typedef struct
{
	DPSDK_INT32					iCommand;							// Control commands: state control,1-Open,0-Shut down; 
	DPSDK_INT32					iChannelCount;						// count of channels
	DPSDK_AUDIOLIGHT_CHANNELID_PARAM* pChannelIds;
}DPSDK_AUDIOLIGHT_REGULATE_PARAM;

typedef struct
{
	DPSDK_INT32						iNum;
	DPSDK_AUDIOLIGHT_CHANNELID_PARAM* pChannelIds;
}DPSDK_CHANNEL_GETVOLUMES_PARAM;

//Channel Volumes parameters
typedef struct
{

	DPSDK_INT32*					pVolumes;						//Volumes:0-100
	DPSDK_INT32						iNum;
	DPSDK_CHAR						szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID	
}DPSDK_CHANNEL_VOLUMES_PARAM;

//Device Volumes parameters
typedef struct
{
	DPSDK_INT32						iChannelCount;						// count of channels
	DPSDK_CHANNEL_VOLUMES_PARAM*	pChannelVolumes;
}DPSDK_DEVICE_VOLUMES_REGULATE_PARAM;

typedef struct
{

	DPSDK_INT32						iRes;								//result:0-fail 1-success
	DPSDK_CHAR						szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID	
}DPSDK_CHANNEL_VOLUMES_RESULT;

typedef struct
{
	DPSDK_INT32						iChannelCount;						// count of channels
	DPSDK_CHANNEL_VOLUMES_RESULT*	pChannelVolumes;
}DPSDK_DEVICE_VOLUMES_REGULATE_RESULT;

// Get status information of focus
typedef struct
{
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_INT32					iStatus;							// Focus status：0-normal，1-Focusing
	DPSDK_FLOAT					fZoom;								// Multiple
	DPSDK_FLOAT					fFocus;								// Focal length
}DPSDK_FOCUSSTATUS_INFO;

// Get status information of focus
typedef struct
{
	DPSDK_INT32					iType;							// Lens type：0-unknown，1-Built-in zoom lens, 2-manual zoom lens, 3-external-in zoom lens
}DPSDK_FOCUSSLENS_INFO;

//M60 M30 M70Remote channel type
typedef enum
{
	REMOTE_TYPE_UNKNOW			= 0,	
	REMOTE_TYPE_LOCAL_CHAN		= 1,	// Local coded channel
	REMOTE_TYPE_REMOTE_CHAN		= 2,	// Remote channel
	REMOTE_TYPE_LOWER_CHAN		= 3,	// Cascaded channel
	REMOTE_TYPE_MATRIX_CHAN		= 4,	// Analog matrix channel
}DPSDK_CHANNEL_REMOTE_TYPE;

// Channel extent information
typedef struct
{
	DPSDK_INT32 iRoadway;											// Roadway 
	DPSDK_INT32 iRainBrushCapability;								// RainBrushCapability
	DPSDK_FLOAT fCartMaxSpeed;										// Max speed of cart
	DPSDK_FLOAT fCartMinSpeed;										// Min speed of cart
	DPSDK_FLOAT fDollyMaxSpeed;										// Max speed of dolly
	DPSDK_FLOAT fDollyMinSpeed;										// Min speed of dolly
	DPSDK_FLOAT fDirection;											// Direction
}DPSDK_CHANNEL_EXT_INFO;

// Coded channel information
typedef struct  
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_CHANNEL_EXT_INFO struChnExtInfo;							// Channel extent information

	DPSDK_INT32 iCameraType;										// Camera type See DPSDK_CAMERA_TYPE Definition
	DPSDK_CHAR szLatitude[DPSDK_GPS_LEN];							// Latitude
	DPSDK_CHAR szLongitude[DPSDK_GPS_LEN];							// Longitude
	DPSDK_CHAR szCameraFunction[DPSDK_CAMERA_FUNCTION_LEN];
	DPSDK_INT32 iCameraFunction;									// 0 No support function 1 Support fish eye 2 Support electric focusing
	DPSDK_CHAR szMulticastIP[DPSDK_IP_LEN];							// Multicast IP
	DPSDK_USHORT ushMulticastPort;									// Multicast port
	DPSDK_CHAR szNVR_IPCIP[DPSDK_IP_LEN];							// NVR Front end IPC IP
	DPSDK_INT32 iChannelRemoteType;									// Remote channel type See DPSDK_CHANNEL_REMOTE_TYPE Definition
	DPSDK_INT32 iFaceFunction;										// Face function, 0= not support, 1= snap, 2= identify
	DPSDK_INT32 iIntelliState;										// Intelligent status 0 off-ling,1 on-ling
	DPSDK_INT32 iTargetDetection;									// Intelligent status 0= not support
	DPSDK_INT32 iEncoderChannelType;								// 1=local channel，2=remote channel，default local

	// The type of unit in which the channel belongs
	DPSDK_INT32 iTrackID;											// Flow type
	DPSDK_INT32 iStreamType;										// Code stream type See DPSDK_STREAM_TYPE Definition
	DPSDK_CHAR szStreamType[DPSDK_STREAMTYPE_LEN];					// StreamType
	DPSDK_BOOL bZeroEncode;											// Does it support 0 Channel multi picture coding
	DPSDK_CHAR szKeyCode[DPSDK_ID_LEN];								// Key code
	DPSDK_CHAR szDB33Code[DPSDK_ID_LEN];							// DB code
	DPSDK_INT32 iPCFlag;											// 1=Area,2=In-Out,3=Out Door
	DPSDK_INT64 lCapability;											// Capacity
	DPSDK_INT32 iChannelStreamType;
																	//	   bit	Capacity	  code
																	//		0	Intelligent		1
																	//		1	fish eye		2
																	//		2	electric focusing	3
																	//		3	thermal imaging		4
																	//		4	heatmap				5
																	//		5	cross-line			6
																	//		6	In-ceiling			7
																	//		7	Face Detection		8
																	//		8	Target recognition	9
																	//		9	Object capture		10
																	// example:lCapability = 3,mean:Intelligent + fish eye
	DPSDK_INT32 iStat;												//状态 0 不启用 1 启用
	DPSDK_INT32 iParkingStatisticsMode;								//1 Available Parking Space Mode 2:License Plate Mode
}DPSDK_ENC_CHANNEL_INFO;

// Decoder video source
typedef enum
{
	DECODE_MODE_UNDEFINE,											// Undefined
	DECODE_MODE_ACTIVE,												// Active
	DECODE_MODE_PASSIVE,											// Passive
	DECODE_MODE_PUSH,												// Push flow
}DPSDK_DECODE_MODE;

// Decoding channel information
typedef struct  
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iMaxSpliteNum;										// Maximum division number equipment related
	
	// The type of unit in which the channel belongs
	DPSDK_INT32 iDecodeMode;										// Decoding mode See DPSDK_DECODE_MODE Definition
	DPSDK_BOOL  bConbineStatus;										// Does it support conbine
}DPSDK_DEC_CHANNEL_INFO;

// Alarm input channel information
typedef struct  
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iAlarmType;											// Alarm type
	DPSDK_INT32 iAlarmLevel;										// Alarm level
	DPSDK_CHAR szParentTargetSeq[DPSDK_SN_LEN];						// Parent target number, from 0 start
	DPSDK_CHAR szParentTargetName[DPSDK_NAME_LEN_EX];				// Parent target name
	DPSDK_CHAR szSubSystemSeq[DPSDK_SN_LEN];						// SubSystem Seq, from 0 start
}DPSDK_ALARMIN_CHANNEL_INFO;

// Alarm output channel information 
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iAlarmType;											// Alarm type
}DPSDK_ALARMOUT_CHANNEL_INFO;

// Large screen input channel data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iCameraType;										// Camera type See DPSDK_CAMERA_TYPEDefinition
	DPSDK_INT32 iChannelRemoteType;									// Remote channel type See DPSDK_CHANNEL_REMOTE_TYPEDefinition
}DPSDK_TVWALLIN_CHANNEL_INFO;

// Large screen output channel data
typedef struct  
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iDecodeMode;										// Decoding mode See DPSDK_DECODE_MODEDefinition
}DPSDK_TVWALLOUT_CHANNEL_INFO;

// Access data
typedef struct  
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;

	// Unit attributes of a channel
	DPSDK_INT32 iThirdControl;										// Whether third-party control is allowed 0 no 1 yes
	DPSDK_INT32 iFingerPrintAuth;
	DPSDK_INT32 iCardAuth;
	DPSDK_INT32 iFaceAuth;
	DPSDK_INT32 iUserIsolate;
	DPSDK_CHAR szUnlockModes[DPSDK_UNLOCKMODES_LEN];
}DPSDK_DOOR_CHANNEL_INFO;

// Gate Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
}DPSDK_GATE_CHANNEL_INFO;

// Floor data
typedef struct ElevatorFloorInfo
{
	DPSDK_CHAR szFloorSerialNum[DPSDK_ELEVATOR_FLOOR_NUM_MAX];		// the serial number of floor
	DPSDK_CHAR szFloorName[DPSDK_ELEVATOR_FLOOR_NUM_MAX];			// name of floor
}DPSDK_ELEVATOR_CHANNEL_FLOOR_INFO;

// Elevator date
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;

	DPSDK_INT32 iFloorNum;
	DPSDK_ELEVATOR_CHANNEL_FLOOR_INFO*	pElevatorFloorInfo;	//楼层信息
}DPSDK_ELEVATOR_CHANNEL_INFO;

// PE data
typedef struct  
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;

	// Unit attributes of a channel
	DPSDK_DOUBLE fGpsX;										// Longitude
	DPSDK_DOUBLE fGpsY;										// Latitude
	DPSDK_CHAR szMapID[DPSDK_ID_LEN];						// Map ID
	DPSDK_CHAR szDynCode[DPSDK_ID_LEN];					    // Dyn Code
	DPSDK_CHAR szDB33Code[DPSDK_ID_LEN];					// DB code
	DPSDK_INT32 iIntelliState;								// Intelligent status 0 off-ling,1 on-ling
	DPSDK_INT64 lCapability;									// Capacity
}DPSDK_PE_CHANNEL_INFO;

// Voice Channel Data
typedef struct  
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	
	// Channel Cell Attribute
	DPSDK_CHAR szVoiceIP[DPSDK_IP_LEN];								// Voice Service Address
	DPSDK_CHAR szClientIP[DPSDK_IP_LEN];							// Voice Client Address
	DPSDK_USHORT ushVoicePort;										// Voice Service Port
	DPSDK_USHORT ushStatusPort;										// Voice Status Port
}DPSDK_VOICE_CHANNEL_INFO;

// Channel gate data
typedef struct  
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_CHAR szSluiceType[DPSDK_TYPE_LEN];						// Channel gate type
}DPSDK_ROADGATE_CHANNEL_INFO;

// LED Channel data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iFreeParkingSpace;									// Residual parking space
	DPSDK_CHAR szLEDChnlDesc[DPSDK_URL_LEN];						// Description information
}DPSDK_LED_CHANNEL_INFO;

// Dispatcher channel data
typedef struct  
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_CHAR szCallNum[DPSDK_TYPE_LEN];							// Phone number
}DPSDK_DISPATCHER_CHANNEL_INFO;

// POS Channel data
typedef struct 
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_CHAR szLinkChnl[DPSDK_CHANNEL_ID_LEN];					// POS Channel binding video source
}DPSDK_POS_CHANNEL_INFO;

// Virtual Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_CHAR szVideoSource[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32 iDetectionRange;
	DPSDK_INT32 iDetectionAngle;
	DPSDK_INT32 iChannelStreamType;
}DPSDK_VIRTUAL_CHANNEL_INFO;

// CVI Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iEncoderChannelSeq;
	DPSDK_DOUBLE fGpsX;										// Longitude
	DPSDK_DOUBLE fGpsY;										// Latitude
	DPSDK_CHAR szMapID[DPSDK_ID_LEN];						// Map ID
	DPSDK_INT32 iAlarmType;
}DPSDK_CVI_CHANNEL_INFO;

// Audio Light Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iParkingStatisticsMode;						//1 Available Parking Space Mode 2:License Plate Mode
}DPSDK_PARKING_SPACE_CHANNEL_INFO;

// EAS Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
}DPSDK_EASCHANNEL_INFO;

// UVSS Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
}DPSDK_UVSSCHANNEL_INFO;

// Box Alarm box Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
}DPSDK_BOX_ALARMOUT_CHANNEL_INFO;

// IPSPeaker Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
}DPSDK_IPSPEAKERCHANNEL_INFO;

// Siren Out Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
}DPSDK_SIREN_OUT_CHANNEL_INFO;

// Audio Light Channel Data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_CHAR szParentTargetSeq[DPSDK_SN_LEN];						// Parent target number, from 0 start
}DPSDK_AUDIO_LIGHT_CHANNEL_INFO;

// CVI alarm Info
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iAlarmType;
}DPSDK_ALARMBOX_CHANNEL_INFO;

// Alarm box unit
typedef struct
{
	DPSDK_INT32 iChannelNum;
	DPSDK_ALARMBOX_CHANNEL_INFO* pAlarmBoxChnList;
}DPSDK_ALARMBOX_UNIT_INFO;

// SonarChannel data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
	DPSDK_CHAR strlinkChnl[DPSDK_CHANNEL_ID_LEN];						// Description information
}DPSDK_SONAR_CHANNEL_INFO;

// CommonChannel data
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
}DPSDK_COMMON_CHANNEL_INFO;

// LORA通道
typedef struct
{
	DPSDK_BASE_CHANNEL_INFO struChannelInfo;
}DPSDK_LORA_CHANNEL_INFO;

// Device data 
typedef struct
{
	DPSDK_DEV_INFO struDevInfo;										// Device data 
	DPSDK_INT32 isQueryChannel;										// More than 1000 channels, return isQueryChannel=1, do not return channel, further request to obtain channel paging interface
	// Coding channel
	DPSDK_INT32 iEncChnlNum;										// Number of coded channels 
	DPSDK_ENC_CHANNEL_INFO* pEncChnlInfoList;						// Code channel list 
	// Decoding channel
	DPSDK_INT32 iDecChnlNum;										// Decode channel number 
	DPSDK_DEC_CHANNEL_INFO* pDecChnlInfoList;						// Decode channel list 
	// Alarm input channel
	DPSDK_INT32 iAlarmInChnlNum;									// Number of alarm input 
	DPSDK_ALARMIN_CHANNEL_INFO* pAlarmInChnlInfoList;				// Alarm input list 
	// Alarm output channel
	DPSDK_INT32 iAlarmOutChnlNum;									// Alarm output number 
	DPSDK_ALARMOUT_CHANNEL_INFO* pAlarmOutChnlInfoList;				// Alarm output list 
	// Large screen input channel
	DPSDK_INT32 iTvWallInChnlNum;									// Large screen input channel number 
	DPSDK_TVWALLIN_CHANNEL_INFO* pTvWallInChnlInfoList;				// Large screen input channel list 

	DPSDK_INT32 iTvWallOutChnlNum;									// Large screen output channel number 
	DPSDK_TVWALLOUT_CHANNEL_INFO* pTvWallOutChnlInfoList;			// Large screen output channel list 
	// Entrance guard channel
	DPSDK_INT32 iDoorChnlNum;										// Number of access channels 
	DPSDK_DOOR_CHANNEL_INFO* pDoorChnlInfoList;						// List of access channels 
	
	// Gate Channel
	DPSDK_INT32 iGateChnlNum;										// Number of access channels 
	DPSDK_GATE_CHANNEL_INFO* pGateChnlInfoList;						// List of access channels 

	// PE
	DPSDK_INT32 iPEChnlNum;											// Number of pe channels
	DPSDK_PE_CHANNEL_INFO* pPEChnlInfoList;							// List of pe channels
	// Voice channel
	DPSDK_INT32 iVoiceChnlNum;										// Voice channel number 
	DPSDK_VOICE_CHANNEL_INFO* pVoiceChnlInfoList;					// Voice channel list 
	// Channel gate 
	DPSDK_INT32 iRoadGateChnlNum;									// Number of channel gates 
	DPSDK_ROADGATE_CHANNEL_INFO* pRoadGateChnlInfoList;				// List of channel gates 
	// LED channel
	DPSDK_INT32 iLEDChnlNum;										// LED Number of channels 
	DPSDK_LED_CHANNEL_INFO* pLEDChnlInfoList;						// LED Channel list 
	// Dispatcher channel
	DPSDK_INT32 iDispatcherChnlNum;									// Number of channels for the dispatcher 
	DPSDK_DISPATCHER_CHANNEL_INFO* pDispatcherChnlInfoList;			// Scheduler list 
	// POS channel
	DPSDK_INT32 iPosChnlNum;										// POS Number of channels 
	DPSDK_POS_CHANNEL_INFO* pPosChnlInfoList;						// POS Channel list 
	// Virtual channel
	DPSDK_INT32 iVirtualChnlNum;									// Number of virtual channels  
	DPSDK_VIRTUAL_CHANNEL_INFO* pVirtualChnlInfoList;				// Virtual channel list
	// CVI channel
	DPSDK_INT32 iCVIChnlNum;										// Number of CVI channels  
	DPSDK_CVI_CHANNEL_INFO* pCVIChnlInfoList;						// CVI channel list
	// Audio Light channel
	DPSDK_INT32 iALChnlNum;											// Number of Audio Light channels  
	DPSDK_AUDIO_LIGHT_CHANNEL_INFO* pALChnlInfoList;				// Audio Light channel list
	// Alarm Boxes
	DPSDK_ALARMBOX_UNIT_INFO pAlarmBoxUnit[4];						// Alarm box unit
	//Sonar channel
	DPSDK_INT32 iSonarChnlNum;										// Sonar Number of channels 
	DPSDK_SONAR_CHANNEL_INFO* pSonarChnlInfoList;					// Sonar Channel list 
	DPSDK_INT32 iLoraChnlNum;
	DPSDK_LORA_CHANNEL_INFO* pLoraChnlInfoList;						// Lora通道
	//Common channel
	DPSDK_INT32 iCommonChnlNum;										// Common Number of channels 
	DPSDK_COMMON_CHANNEL_INFO* pCommonChnlInfoList;					// Common Channel list 
	// Elevator channel
	DPSDK_INT32 iElevatorChnNum;									// Number of elevator channel
	DPSDK_ELEVATOR_CHANNEL_INFO* pElevatorChnInfoList;				// Elevator channel list

	// Parking Space channel
	DPSDK_INT32 iSpcaeChnlNum;										// Number of Parking Space channels  
	DPSDK_PARKING_SPACE_CHANNEL_INFO* pParkingSpaceChnlInfoList;	// Parking Space channel list
	// EAS channel
	DPSDK_INT32 iEASChnlNum;
	DPSDK_EASCHANNEL_INFO* pEASChnlInfoList;						// EAS channel list
	// IPSpeaker channel
	DPSDK_INT32 iIPSpeakerChnlNum;
	DPSDK_IPSPEAKERCHANNEL_INFO* pIPSpeakerChnlInfoList;			// IPSpeaker channel list
	// Siren out channel
	DPSDK_INT32 iSirenOutChnlNum;
	DPSDK_SIREN_OUT_CHANNEL_INFO* pSirenOutChnlInfoList; // Siren out channel list

	// UVSS channel
	DPSDK_INT32 iUVSSChnlNum;
	DPSDK_UVSSCHANNEL_INFO* pUVSSChnlInfoList; // UVSS channel list
	// Event detetor channel
	DPSDK_INT32 iDetetorChnlNum;									// Number of evnet detetor channels
	DPSDK_EVENT_DETETOR_CHANNEL_INFO* pDetetorChnlInfoList;			// Event detetor channel list
	// Box Alarm box channel
	DPSDK_INT32 iBoxAlarmOutChnlNum;
	DPSDK_BOX_ALARMOUT_CHANNEL_INFO* pBoxAlamOutList;	//Box Alarm Out list 
}DPSDK_DEV_ALL_INFO;

// Compression method
typedef enum
{
	COMPRESS_DISABLE			= 0,								// No use of compression
	COMPRESS_DEFAULT			= 1,								// Using the default compression method
}DPSDK_COMPRESS_TYPE;

typedef struct
{
	DPSDK_INT32 iProjectId;
	DPSDK_CHAR szConfig[DPSDK_CONFIG_PARAM_LEN];
	DPSDK_CHAR szImgUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szImgType[DPSDK_IMG_TYPE_LEN];
	DPSDK_CHAR szImgCategory[DPSDK_IMG_CATEGORY];
}DPSDK_NEW_LOGOS;

typedef struct
{
	DPSDK_CHAR szLogoPath[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szLoginBGPath[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szPlatformName[DPSDK_URL_LEN_EX];
	DPSDK_TIMET tUpdateTime;
	DPSDK_CHAR szID[DPSDK_ID_LEN];									// ID
	DPSDK_CHAR szBigPath[DPSDK_URL_LEN_EX];							// Picture of size 50*50 download path
	DPSDK_CHAR szSmallPath[DPSDK_URL_LEN_EX];							// Picture of size 30*30 download path
	DPSDK_CHAR szIconPath[DPSDK_URL_LEN_EX];							// Picture of icon download path
	DPSDK_CHAR szVersion[DPSDK_ID_LEN];
	DPSDK_INT32 iLogoType;
	DPSDK_CHAR szClientName[DPSDK_CLIENTTITLE_LEN];
	DPSDK_CHAR szClientSvgData[DPSDK_URL_LEN_EX];
	DPSDK_INT32 iFontSize;
	DPSDK_CHAR szFontColor[DPSDK_COLOR_LEN];
	DPSDK_BOOL bClientBold;
	DPSDK_BOOL bPortalFlag;
	DPSDK_INT32 iNewLogosCount;
	DPSDK_NEW_LOGOS* pNewLogos;
}DPSDK_LOGO_INFO;

typedef struct
{
	DPSDK_DEVICE_ID struDevId;								// Device id
	DPSDK_INT32 iFetchFlag;
	DPSDK_IP struDeviceIp;									// Device ip
	DPSDK_INT32 iDevicePort;								// Device port
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];					// Login name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];					// Device password (encrypt)
	DPSDK_INT32 iProtocolType;								// Protocol see DPSDK_DEVICE_PROTOCOL_TYPE
}DPSDK_QUERY_DEV_PARAM;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Query organization code
	DPSDK_INT32 iHasChild;											// Whether there are child nodes
}DPSDK_FISHEYE_DATA_PARAM;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Query organization code
	DPSDK_CHAR* pFileData;											// The data of file
}DPSDK_FISHEYE_DATA_INFO;

typedef struct
{
	DPSDK_UINT32 iFishDataCount;
	DPSDK_FISHEYE_DATA_INFO *pFishDataList;
}DPSDK_FISHEYE_DATA_RESULT;

// Organization device condition
typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_CHAR szFilter[DPSDK_FILTER_CODE_LEN];						// The filter condition which query results
	DPSDK_INT32 iIsHighRoad;										// is highroad, 0:not, 1:yes
	DPSDK_BOOL bContainVirtualDevice;								// Whether or not contain virtual device
	DPSDK_INT32 iCategoriesCount;									// The number of device categories which are need to query
	DPSDK_INT32* pCategoriesList;									// The device categories function which are need to query see DPSDK_DEV_UNIT_TYPE
	DPSDK_INT32 iDeviceIdNum;										// The number of device id which are need to query
	DPSDK_DEVICE_ID* pDeviceIdList;									// The device id list which are need to query
	DPSDK_INT32 iSourceTypeCount;									// The number of device source type which are need to query
	DPSDK_INT32* pSourceTypesList;									// Source Type: 1 = platefrom, 3 = Third party
}DPSDK_QUERY_DEV_INFO;

typedef struct DPSDK_DEVICE_TYPE_DATA
{
	DPSDK_INT32 iTypeId;
	DPSDK_CHAR szTypeCode[DPSDK_ID_LEN];
	DPSDK_CHAR szTypeName[DPSDK_NAME_LEN];
	DPSDK_INT32 iDeviceType;
}DPSDK_DEVICE_TYPE_DATA;

typedef struct DPSDK_DEVICE_TYPE_LIST
{
	DPSDK_INT32 iCategoryId;
	DPSDK_CHAR	szCategoryName[DPSDK_NAME_LEN];
	DPSDK_INT32 iDeviceTypeNum;
	DPSDK_DEVICE_TYPE_DATA* pDeviceTypes;
}DPSDK_DEVICE_TYPE_LIST;

typedef struct DPSDK_DEVICE_TYPE_INFO
{
	DPSDK_INT32 iDevTypeNum;
	DPSDK_DEVICE_TYPE_LIST* pDeviceTypeList;
}DPSDK_DEVICE_TYPE_INFO;

// Device list
typedef struct  DPSDK_DEV_ALL_INFO_LIST
{
	DPSDK_INT32 iDevNum;											// Number of devices
	DPSDK_DEV_ALL_INFO* pDevAllInfoList;							// Device list data
}DPSDK_DEV_ALL_INFO_LIST;


typedef struct
{
	DPSDK_CHAR	szSaasCode[DPSDK_COMMON_SEARCH_SAAS_CODE_LEN];		//saasCode
	DPSDK_CHAR	szOrgCode[DPSDK_COMMON_SEARCH_SAAS_CODE_LEN];
	DPSDK_CHAR	szCustomCode[DPSDK_COMMON_SEARCH_CUSTOM_CODE_LEN];
	DPSDK_INT32 iNodeType;											//node type 1:org;2:device;3:channel
	DPSDK_CHAR	szNodeName[DPSDK_COMMON_SEARCH_NODE_NAME_LEN];
	DPSDK_CHAR	szParentSaaSCode[DPSDK_COMMON_SEARCH_SAAS_CODE_LEN];
	DPSDK_INT32 iParentNodeType;
	DPSDK_CHAR	szFullPath[DPSDK_COMMON_SEARCH_FULL_PATH_LEN];
	DPSDK_INT32 iChannelSeq;		
	DPSDK_INT32 iDeviceType;										// Device type
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iUnitType;											// Unit type
	DPSDK_INT32 iChannelType;										// Channel type
	DPSDK_INT32 iCameraType;										// Camera type
	DPSDK_CHAR	szCameraFunction[DPSDK_CAMERA_FUNCTION_LEN];
	DPSDK_DOUBLE fGpsX;												// Longitude
	DPSDK_DOUBLE fGpsY;												// Latitude
	DPSDK_INT32 iMapID;												// Map
	DPSDK_INT32 iIntelliState;										// Intelligent status 0 off-ling,1 on-ling
}DPSDK_GET_SEARCHTREE_RESULT;

typedef struct
{
	DPSDK_INT32						iTotalCount;
	DPSDK_INT32						iNextPage;
	DPSDK_GET_SEARCHTREE_RESULT*	pResult;
}DPSDK_GET_SEARCHTREE;

typedef struct
{
	DPSDK_CHAR						szKeyWord[DPSDK_COMMON_SEARCH_KEY_LEN];
	DPSDK_INT32						iPage;
	DPSDK_INT32						iPageSize;
	DPSDK_CHAR						szOrderType[DPSDK_COMMON_SEARCH_ORDER_TYPR_LEN];
	DPSDK_CHAR						szDirection[DPSDK_COMMON_SEARCH_DIRECTION_LEN];
	DPSDK_CHAR						szRights[DPSDK_COMMON_SEARCH_RIGHTS_LEN];
	DPSDK_CHAR						szResultType[DPSDK_COMMON_SEARCH_RIGHTS_LEN];
	DPSDK_INT32						iOrgType;
	DPSDK_CHAR						szUnitType[DPSDK_COMMON_SEARCH_UNIT_TYPE_LEN];
}DPSDK_GET_SEARCHTREE_CONDITION;

// Node code
typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
}DPSDK_ORG_CODE;

// The basic information of TVWALL 
typedef struct
{
	DPSDK_CHAR szTVWallName[DPSDK_NAME_LEN_EX];						// TVWALL name
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_CHAR szTVWallDesc[DPSDK_MEMO_LEN];						// Describe
	DPSDK_INT32 iTVWallId;											// TVWALL ID
	DPSDK_INT32 iState;												// Enable status：0 unable,1 enable
	DPSDK_UINT32 uiVersion;											// TVWALL version
	DPSDK_UINT32 uiSustainTime;										// Duration(s)
	DPSDK_INT32 iEditFlag;
	DPSDK_INT32	iWallMode;											// Wall Mode:1 Overlay mode, 2 Cycle mode
}DPSDK_TVWALL_BASE_INFO;

// The list of TVWALL
typedef struct
{
	DPSDK_BASE_PARAM struBaseParam;
	DPSDK_UINT32 uiTotal;											// The number of TVWALL information
	DPSDK_TVWALL_BASE_INFO struTVWallBaseInfo[1];					// The list of TVWALL information
}DPSDK_TVWALL_LIST;

// Screen position of TV wall
typedef struct
{
	DPSDK_FLOAT fLeft;											// The distance to the left of the screen, the percentage
	DPSDK_FLOAT fTop;											// The margin on the screen, the percentage
	DPSDK_FLOAT fWidth;											// Screen width, percentage
	DPSDK_FLOAT fHeight;										// Screen height, percentage
}DPSDK_TVWALL_SCREEN_POS;

//Common screen info under the splicing screen
typedef struct
{
	DPSDK_INT32	iId;												// Screen ID
	DPSDK_INT32	iChannelNo;											// Channel sequence number
	DPSDK_TVWALL_SCREEN_POS struScreenPos;							// Screen position
	DPSDK_INT32	iScreenSeq;											// Screen serial number, logical screen valid
}DPSDK_COMBINED_SCREEN_INFO;

#define DPSDK_MAX_COMBINED_SCREEN_NUM		128
#define DPSDK_MAX_SPILIT_CAPACITY_NUM		64
#define DPSDK_MAX_SCREEN_DECODER_NUM	    128
//A list of decoded channels for screen binding
typedef struct
{
	DPSDK_CHAR szDeviceId[DPSDK_DEVICE_ID_LEN];						// Device for decoding channel ID
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Decoding channel ID
	DPSDK_INT32	iChannelNo;											// Channel number, corresponding XMLIn (SEQChannel number-1To show whether the screen is fused)
	DPSDK_INT32	iUnit;												// Subordinate unit
	DPSDK_INT32	iDecoderType;										// Decoder type, reference DPSDK_TVWALL_DEVICE_TYPE
	DPSDK_BOOL	bIsChildrenDecoder;									// Splice+The decoder wall scheme is used.True:The video output channel bound by this screen is a splice+Decoder The
	DPSDK_INT32	iScreenId;											// Screen ID（WebEnd configuration ID)
	DPSDK_CHAR szScreenName[DPSDK_NAME_LEN];						// Screen name
	DPSDK_TVWALL_SCREEN_POS struScreenPos;							// Screen position
	DPSDK_BOOL bIsCombinedScreen;									// Is it a splicing screen?XMLIn Type is 1 or 3 as it is a combination screen)
	DPSDK_BOOL bIsScreenAlarmWall;									// Is it an alarm linkage screen
	DPSDK_INT32 iCombinedScreenNum;									// The number of ordinary screens contained in the splicing screen
	DPSDK_COMBINED_SCREEN_INFO szCombinedScreen[DPSDK_MAX_COMBINED_SCREEN_NUM];					// Common screen info contained in the splicing screen
}DPSDK_SCREEN_DECODER_INFO;

// The list of decode channel binding to screen
typedef struct
{
	DPSDK_INT32 iScreenDecoderNum;									// Number of decoding channel
	DPSDK_SCREEN_DECODER_INFO struScreenDecoder[DPSDK_MAX_SCREEN_DECODER_NUM];		// List of decoding channel
}DPSDK_SCREEN_DECODER_LIST;


// TV Wall Info
typedef struct
{
	DPSDK_BASE_PARAM struBaseParam;
	DPSDK_TVWALL_BASE_INFO struBaseInfo;							// TV wall info
	DPSDK_SCREEN_DECODER_LIST struScreenDecoderList;				// List of decoding channel bonded with screen
}DPSDK_TVWALL_INFO;

// TV Wall Task Info
typedef struct
{
	DPSDK_INT32 iTVWallId;											// TV Wall ID
	DPSDK_INT32 iTaskId;											// Task ID
	DPSDK_CHAR szTaskName[DPSDK_NAME_LEN];							// Task name
	DPSDK_CHAR szTaskDesc[DPSDK_MEMO_LEN];							// Task description
}DPSDK_TVWALL_TASK_BASE_INFO;

// TV Wall Task List
typedef struct
{
	DPSDK_UINT32 uiTotal;											// Number of TV wall task
	DPSDK_TVWALL_TASK_BASE_INFO struTVWallTask[1];					// List of TV wall task
}DPSDK_TVWALL_TASK_LIST;

// Video Source Info
typedef struct
{
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];					// Channel no.
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Device ID
	DPSDK_INT32	iChnlNo;											// Channel S./N.
	DPSDK_INT32	iSubStream;											// For stream type, please refer to DPSDK_STREAM_TYPE definition.
	DPSDK_INT32	iTimeSpan;											// Dwell time
	DPSDK_INT32	iPrePoint;											// Preset point S./N.
	DPSDK_INT32	iProvider;											// Manuafacturer
	DPSDK_CHAR szOsdText[DPSDK_MEMO_LEN];							// OSD info
	DPSDK_BOOL bEnableOsd;											// OSD enable
	DPSDK_INT32 iPatrolMode;										// Tour mode: tour=0; non-tour onwall =1; tour preview=2;
	DPSDK_INT32 iFishFitMode;										// Fisheye mounting mode: unknown=-1;wall=0; ceiling=1;floor =2；
	DPSDK_INT32 iFishShowMode;										// Fisheye display mode: unknown=-1; panoramic=0; dual panoramic=1; single screen PTZ=2; 4-split PTZ=3; output +3 modes=4; original mode=5
	DPSDK_CHAR szDepartmentCode[DPSDK_ORG_CODE_LEN];				// Channel department ID
	DPSDK_TIMET tBeginTime;											// Video start playback time
	DPSDK_TIMET tEndTime;											// Video stop playback time

	// It is used to save task.
	DPSDK_INT32 iTrackId;											// 501PS packet,601 original frame,701 Dahua frame, 801 Dahua standard frame, 901 TS packet, 101 (below 300) RTP standard strema
	DPSDK_INT32 iConnType;											// 0: TCP; 1: UDP; 2: multicast; 3: domain name; 4: auto register; 5: ONVIF; 6: GB28181; 7: HTTP webpage
	DPSDK_INT32	nPlanType;											// Plan type (0 - real play, 1 - playback)
}DPSDK_TVWALL_VIDEO_SOURCE_INFO;

// TV wall sub-window info
typedef struct
{
	DPSDK_INT32 iWndID;												// Window ID
	DPSDK_FLOAT fLeft;												// Window position left
	DPSDK_FLOAT fTop;												// Top
	DPSDK_FLOAT fWidth;												// Width
	DPSDK_FLOAT fHeight;											// Height
	DPSDK_INT32 iZorder;											// z order (omit it in case of split)
	DPSDK_CHAR szName[DPSDK_NAME_LEN];								// Window title (split into "") 
	DPSDK_INT32 isAlarm;											// Alarm on wall=1; client on wall=0
	DPSDK_INT32 isHighLight;										// Highlight=1; non-highlight=0; no processing =-1
	DPSDK_INT32 isOpenAudio;										// Audio enabled=1; audio Not enabled; no processing=-1

	DPSDK_UINT32 uiVideoSourceNum;									// Video source list length
	DPSDK_TVWALL_VIDEO_SOURCE_INFO* pVideoSourceList;				// Video source list 
}DPSDK_TVWALL_SUBWND_INFO;

// TV wall window info
typedef struct
{
	DPSDK_INT32 iWndID;												// Window ID
	DPSDK_FLOAT fLeft;												// Window position left
	DPSDK_FLOAT fTop;												// Top
	DPSDK_FLOAT fWidth;												// Width
	DPSDK_FLOAT fHeight;											// Height
	DPSDK_INT32 iZorder;											// z order (omit it in case of split)
	DPSDK_CHAR szName[DPSDK_NAME_LEN];								// Window title (split into "")
	DPSDK_INT32 isAlarm;											// Alarm on wall=1; client on wall=0
	DPSDK_INT32 isHighLight;										// Highlight=1; non-highlight=0; no processing =-1
	DPSDK_INT32 isOpenAudio;										// Audio enabled=1; audio Not enabled; no processing=-1

	DPSDK_UINT32 uiVideoSourceNum;									// Video source list length
	DPSDK_TVWALL_VIDEO_SOURCE_INFO* pVideoSourceList;				// Video source list

	DPSDK_INT32 iScreenMode;										// Split=1; windowing=2
	DPSDK_INT32 iSubWinNum;											// Number of sub-window
	DPSDK_TVWALL_SUBWND_INFO* pSubWndList;							// Window operation info
}DPSDK_TVWALL_WND_INFO;

// TV wall task screen operation info
typedef struct
{
	DPSDK_INT32 iScreenID;											// Screen ID
	DPSDK_INT32 iSplitNum;											// Screen split/windowing number
	DPSDK_INT32 iScreenMode;										// Split=1; windowing=2
	DPSDK_UINT32 uiTotal;											// Window list number
	DPSDK_TVWALL_WND_INFO* pWndList;								// Window list

	// It will be used to save task
	DPSDK_CHAR szDecodeId[DPSDK_DEVICE_ID_LEN];						// Decoding device ID
	DPSDK_INT32 iTvIdx;												// Channel no.. -1 represents splicing window
	DPSDK_INT32 iVisitorMode;										// Direct connection (1), pull stream (2), push stream to decoder (3), please refer to DPSDK_DECODER_MODE definition
	DPSDK_FLOAT fLeft;												// Screen position, left
	DPSDK_FLOAT fTop;												// Screen position, top
	DPSDK_FLOAT fWidth;												// Screen position, width
	DPSDK_FLOAT fHeight;											// Screen position, height
	DPSDK_CHAR szScreenName[DPSDK_NAME_LEN];						// Screen name
}DPSDK_TVWALL_TASK_SCREEN_OPER_INFO;

// TV wall task screen operation info list
typedef struct
{
	DPSDK_UINT32 uiTotal;											// TV wall task screen operation info number
	DPSDK_TVWALL_TASK_SCREEN_OPER_INFO* pScreenOperList;			// TV wall task screen operation info list
}DPSDK_TVWALL_TASK_SCREEN_OPER_LIST;

// Device info required by video source when decoder is in the decoding mode of direct connection
typedef struct
{
	DPSDK_CHAR szID[DPSDK_CHANNEL_ID_LEN];							// Channel ID
	DPSDK_CHAR szIP[DPSDK_IP_LEN];									// Device IP (unicast) or multicast IP (multicast)
	DPSDK_INT32 iPort;												// Port(unicast) or multicast port(multicast)
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// Username
	DPSDK_CHAR szPassword[DPSDK_PWD_LEN];							// Password
	DPSDK_INT32 iNo;												// Channel no.
	DPSDK_INT32 iChannelNum;										// Total number of channel
	DPSDK_INT32 iType;												// Device type
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
}DPSDK_TVWALL_TASK_CHANNEL_EXT_INFO;

//Device info list required by video source when decoder is in the decoding mode of direct connection
typedef struct
{
	DPSDK_UINT32 uiTotal;											// Device info number required by video source when decoder is in the decoding mode of direct connection
	DPSDK_TVWALL_TASK_CHANNEL_EXT_INFO* pChannelExtList;			// Device info list required by video source when decoder is in the decoding mode of direct connection
}DPSDK_TVWALL_TASK_CHANNEL_EXT_LIST;


typedef enum
{
	TVWALL_PROJ_TIMING			= 0,								//Timing plan
	TVWALL_PROJ_RELATIVE_TIME	= 1,								//Tour plan
}DPSDK_TVWALL_PROJECT_TYPE;

typedef struct
{
	DPSDK_INT32				iTaskId;								// Task ID
	DPSDK_TIMET				tBeginTime;								// Start time
	DPSDK_TIMET				tEndTime;								// End time
	DPSDK_INT32				iSpan;									// Dwell time
}DPSDK_TVWALL_PROJECT_TASK_INFO;

typedef struct
{
	DPSDK_INT32 iPlanId;									//Plan id
	DPSDK_CHAR szProjName[DPSDK_NAME_LEN];					//Plan name
	DPSDK_INT32 iType;										//Plan type
	DPSDK_INT32 iStat;										//Plan stat
	DPSDK_INT32 iTaskNum;									//Task number
	DPSDK_TVWALL_PROJECT_TASK_INFO* pTaskInfoList;			//Task info
}DPSDK_TVWALL_PROJECT_INFO;

typedef struct
{
	DPSDK_UINT32 uiCount;									// Plan number
	DPSDK_TVWALL_PROJECT_INFO* pProjList;					// Plan list
}DPSDK_TVWALL_PROJECT_LIST;

typedef struct
{
	DPSDK_INT32 iTVWallID;
	DPSDK_INT32 iTaskID;
	DPSDK_BASE_PARAM struBaseParam;
}DPSDK_TVWALL_TASK_BASE_PARAM;

// TV wall task info
typedef struct
{
	DPSDK_UINT32 uirecordType;                                      // Record type(2 - device record, 3 - plate type)
	DPSDK_UINT32 uiplanType;                                        // Plan type (0 - real play, 1 - playback)
	DPSDK_TVWALL_TASK_BASE_INFO struBaseInfo;						// TV wall task info
	DPSDK_TVWALL_TASK_SCREEN_OPER_LIST struScreenOperList;			// TV wall task screen operation info list
	DPSDK_TVWALL_TASK_CHANNEL_EXT_LIST struChannelExtList;			// Device info list required by video source when decoder is in the decoding mode of direct connection
	DPSDK_BASE_PARAM struBaseParam;
}DPSDK_TVWALL_TASK_INFO;

typedef struct
{
	DPSDK_INT32 iTime;
}DPSDK_TVWALL_PRINT_DECODER_PARAM;

// TV wall task info
typedef struct
{
	DPSDK_INT32 iTVWallTaskNum;										// TV wall task number
	DPSDK_TVWALL_TASK_INFO* pTVWallTaskList;						// TV wall task list
	DPSDK_TVWALL_PROJECT_LIST struProjectList;						// TV wall plan list
}DPSDK_TVWALL_TASK_INFO_LIST;

typedef struct
{
	DPSDK_INT32 iTVWallID;
	DPSDK_BASE_PARAM struBaseParam;
}DPSDK_GET_TVWALL_TASK_LIST_PARAM;

typedef struct
{
	DPSDK_INT32 iTVWallId;											// TV Wall ID
	DPSDK_INT32 iTaskId;											// Task ID
	DPSDK_CHAR szTaskName[DPSDK_NAME_LEN];							// Task name
	DPSDK_CHAR szTaskDesc[DPSDK_MEMO_LEN];  
	DPSDK_TVWALL_TASK_INFO* struTVWALLTaskInfo;                      // TV wall task info
}DPSDK_TVWALL_TASK_BASE_INFO_EX;

// TV Wall Task List
typedef struct
{
	DPSDK_UINT32 uiTotal;
	DPSDK_TVWALL_TASK_BASE_INFO_EX *struTVWallTaskEx;					// List of TV wall task
}DPSDK_TVWALL_TASK_LIST_EX;


// On-going TV wall task info
typedef struct
{
	DPSDK_INT32 iTVWallId;											// TV wall ID
	DPSDK_INT32 iTaskId;											// Task ID
	DPSDK_CHAR szTaskName[DPSDK_NAME_LEN];							// Task name
	DPSDK_INT32 iPlanId;											// Plan ID
	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN];							// Plan name
	DPSDK_INT32 iDataType;											// Data type: 0=task, 1=plan 
}DPSDK_CURRENT_TVWALL_TASK_INFO;

// On-going TV wall task list
typedef struct
{
	DPSDK_UINT32 uiTotal;											// TV wall task number
	DPSDK_CURRENT_TVWALL_TASK_INFO struTVWallTask[1];				// TV wall task list
}DPSDK_CURRENT_TVWALL_TASK_LIST;

// TV wall control command
typedef enum
{
	TVWALL_PLAN_TASK = 0,						// Task on wall/task switch 
	TVWALL_ONESCREEN_SHOW = 1,					// Bond video source
	TVWALL_ONESCREEN_CLOSE = 2,					// Cancel video source
	TVWALL_SCREEN_SPLIT = 3,					// Split
	TVWALL_WINDOW_OPEN = 4,						// Windowing
	TVWALL_WINDOW_CLOSE = 5,					// Close window
	TVWALL_WINDOW_MOVING = 6,					// Window movement
	TVWALL_WINDOW_ZCONTROL = 7,					// Top
	TVWALL_POWER_CTRL = 8,						// Screen switch

	TVWALL_ONESCREEN_CLOSE_ALL = 9,				// smartpss use: close single screen (all windows of single screen)
	TVWALL_CLOSE_PROJECT,						//Disable plan
	TVWALL_ONESCREEN_CLEAR = 12,				// Clear single screen; only need corresponding _tvIndex, _screenId, _tvType and _tvWallDBId
	TVWALL_SCREEN_ADDFRAME = 13,				// Highlight window; only need corresponding _tvIndex, _screenId, _subTvIndex, _tvType and _tvWallDBId, Use splitNum here to represent highlight (1) or non-highlight (0); reuse position if it needs RGBA color info
	TVWALL_SPLITWIN_MAX = 14,					// Zoom in split single screen
	TVWALL_TOUR_PAUSE = 15,						// Pause on-wall channel tour. If _screenId is -1, it is valid to the entire wall;if _subTvIndex is -1, it is valid to the entire screen (but _screenId shall be a valid value）
	TVWALL_TOUR_RESUME = 16,					// Resume on-wall channel tour, same as 15
	TVWALL_SINGLEWINDOW_CHANGE_SOURCE = 17,		// Single-window video source is switched to previous on-wall, _screenId and _subTvIndex shall be valid
	TVWALL_SINGLEWINDOW_SOUND_SWITCH = 18,		// Single-window audio switch control; only need corresponding _tvIndex, _screenId, _subTvIndex, _tvType and _tvWallDBId; use splitNum to represent enable (1) or disable (0)	
	TVWALL_OPENWINDOW_SPLIT = 22,				// Windowing split
}DPSDK_TVWALL_CONTROL_TYPE;

// On-wall control operation
typedef struct
{
	DPSDK_INT32	iControlType;										// Control command. Please refer to DPSDK_TVWALL_CONTROL_TYPE definition
	DPSDK_CHAR szMatrixId[DPSDK_DEVICE_ID_LEN];						// Decoder and matrix ID
	DPSDK_INT32	iTvIndex;											// Screen no.. Ordinary screen is decoding channel no., and splicing screen is screen ID
	DPSDK_INT32 iSubTvIndex;										// Sub-screen no. (valid to splicing screen)
	DPSDK_INT32	iTvType;											// Screen type: 0-non-splicing screen,1-splicing screen
	DPSDK_INT32	iSplitNum;											// Screen split or window number
	DPSDK_TVWALL_SCREEN_POS struScreenPos;							// Screen position
	DPSDK_INT32	iTvWallDBId;										// TV wall config proposal DBId
	DPSDK_INT32	iTvWallVersion;										// TV wall version no.
	DPSDK_INT32	iScreenId;											// Screen ID applies to single screen operation in real-time mode; task mode is invalid	
	DPSDK_INT32	iZoder;												// z order, -1 bottom,0 top
	DPSDK_INT32	iSubWindNo;											// Selected split screen no. in window
	DPSDK_INT32 iType;                                              // Video category, 2 indicates device video, 3 indicates center video
	DPSDK_CHAR  szBeginTime[DPSDK_TIME_STRING_LEN_EX];              // Begintime, Format:YYYY-MM-DD-HH-mm-ss.
	DPSDK_CHAR  szEndTime[DPSDK_TIME_STRING_LEN_EX];              // Endtime, Format:YYYY-MM-DD-HH-mm-ss.
	DPSDK_BASE_PARAM struBaseParam;
}DPSDK_TVWALL_CONTROL_INFO;

// Screen switch control
typedef struct
{
	DPSDK_CHAR szMatrixId[DPSDK_DEVICE_ID_LEN];						// Decoder and matrix ID
	DPSDK_INT32	iTvWallId;											// TV wall ID
	DPSDK_INT32	iScreenId;											// Screen ID
	DPSDK_BOOL bPowerOn;											// Enable or not
}DPSDK_TVWALL_POWER_CONTROL_INFO;

// Screen frame
typedef struct
{
	DPSDK_CHAR szMatrixId[DPSDK_DEVICE_ID_LEN];						// Decoder and matrix ID
	DPSDK_INT32	iTvWallId;											// TV wall ID
	DPSDK_INT32	iScreenId;											// Screen ID
	DPSDK_INT32 iSubTvId;											// Window ID
	DPSDK_INT32	iTvIndex;											// In case of splicing screen, it is consistent with screenId; in case of non-splicing screen, it is channel no..
	DPSDK_INT32	iTvType;											// Screen type: 0-non-splicing screen, 1-splicing screen
	DPSDK_BOOL bAddFrame;											// Add frame or not, false: not add, true: add
}DPSDK_TVWALL_SCREEN_ADD_FRAME;

//Fisheye real-time on-wall
typedef struct
{
	DPSDK_CHAR szMatrixId[DPSDK_DEVICE_ID_LEN];						// Decoder and matrix ID
	DPSDK_INT32	iTvWallId;											// TV wall ID
	DPSDK_INT32	iScreenId;											// Screen ID
	DPSDK_INT32 iSubTvId;											// Window ID
	DPSDK_INT32	iTvIndex;											// In case of splicing screen, it is consistent with screenId; in case of non-splicing screen, it is channel no..
	DPSDK_INT32	iTvType;											// Screen type: 0-non-splicing screen, 1-splicing screen
	DPSDK_INT32 iOriginX;
	DPSDK_INT32 iOriginY;
	DPSDK_INT32 iRadius;
	DPSDK_INT32 iLensDirection;
	DPSDK_INT32	iMount;												//Mounting mode
	DPSDK_INT32	iView;												//Viewing mode
	DPSDK_INT32 iEnableAutoContrast;
	DPSDK_INT32 iAlphaHistogram;
	DPSDK_INT32 iAlphaGray;
	DPSDK_INT32 iCaptureSize_width;
	DPSDK_INT32 iCaptureSize_height;
	DPSDK_INT32 iMainStreamSize_width;
	DPSDK_INT32 iMainStreamSize_height;
	DPSDK_INT32 iModeInitParameters_circularOffset;
	DPSDK_INT32 iModeInitParameters_panoramaOffset;
	DPSDK_INT32 iModeInitParameters_useRegionParameters;
	DPSDK_INT32 iModeInitParameters_regionParameters_x;
	DPSDK_INT32 iModeInitParameters_regionParameters_y;
	DPSDK_INT32 iModeInitParameters_regionParameters_hAngle;
	DPSDK_INT32 iModeInitParameters_regionParameters_vAngle;
	DPSDK_INT32 iModeInitParameters_regionParameters_available;
	DPSDK_INT32 iEPtz_optWayType;
	DPSDK_INT32 iEPtz_optWinNum;
	DPSDK_INT32 iEPtz_optWayData;
}DPSDK_TVWALL_FISH_EYE_TO_WALL;

//Window info
typedef struct
{
	DPSDK_TVWALL_SCREEN_POS struWndRect;							//When tvwall_control_e is DTVWALL_WINDOW_OPEN, TVWALL_WINDOW_MOVING is valid
	DPSDK_INT32 iWindowId;											//Window ID
	DPSDK_INT32 iSpliteNum;											//Split number. When tvwall_control_e is TVWALL_SCREEN_SPLIT, it is valid.
	DPSDK_INT32 iOrder;												//Window Z order
}DPSDK_TVWALL_WINDOW_INFO;

// Windowing
typedef struct
{
	DPSDK_INT32	iTvWallId;											// TV wall ID
	DPSDK_INT32	iScreenId;											// Screen ID
	DPSDK_INT32	iTvIndex;											// Physical channel no., which is the same as screen ID in case of splicing screen. 
	DPSDK_CHAR szMatrixId[DPSDK_DEVICE_ID_LEN];						// Decoder and matrix ID
	DPSDK_INT32	iTvType;											// 0-non-splicing screen, 1-splicing screen 
	DPSDK_TVWALL_WINDOW_INFO struWndInfo[1];						// Window list
}DPSDK_TVWALL_OPEN_WINDOW;

//Screen windowing or split capability set
typedef struct
{
	DPSDK_INT32 iScreenId;											// Screen ID
	DPSDK_INT32 iMaxFreeWindows;									// Max. supported number of window, eg:36 
	DPSDK_CHAR szSplitCaps[DPSDK_TVWALL_SPLIT_CAP_LEN];				// Supported window layout, eg:1,4,6,8,9,16,25,36 
}DPSDK_TVWALL_SCREEN_CAPS;

//Screen windowing or split capability set list
typedef struct
{
	DPSDK_INT32	iTvWallId;											// TV wall ID
	DPSDK_UINT32 uiTotal;											// Number of returned capability set 
	DPSDK_TVWALL_SCREEN_CAPS struScreenCapsList[1];					// Capability set list
}DPSDK_TVWALL_SCREEN_CAPS_LIST;

//Screen windowing or split capability set list
typedef struct
{
	DPSDK_INT32	iTvWallId;											// TV wall ID
	DPSDK_UINT32 uiTotal;											// Number of returned capability set 
	DPSDK_TVWALL_SCREEN_CAPS* pScreenCapsList;						// Capability set list
}DPSDK_TVWALL_SCREEN_CAPS_NOTIFY;

// Screen type
typedef enum
{
	TVWALL_BIG_SCREEN = 1,											// TV wall
	TVWALL_MONITOR_SCREEN = 2,										// Monitor
	TVWALL_WINDOW_SCREEN = 3,										// Window
}DPSDK_TVWALL_SCREEN_TYPE;

//Device code
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
}DPSDK_DEVICE_CODE;

typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
	//DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];				// Device code
	DPSDK_INT32 iDeviceNum;											// device quantity
	DPSDK_DEVICE_CODE* pDeviceCodeList;								// device code list
	DPSDK_TIMET tBeginTime;											// Start time
	DPSDK_TIMET tEndTime;											// End time
}DPSDK_GET_VTALK_LOG_COUNT_PARAM;

// Delete user notice
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];								// User ID
}DPSDK_USERDELETE_NOTIFY;

// PTZ locking status change notice
typedef struct
{
	DPSDK_INT32			iLockStatus;								// Locking status, 0=unlock, 1=lock
	DPSDK_CHAR			szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR			szLockUserName[DPSDK_NAME_LEN];				// Name of the user locking PTZ 
	DPSDK_CHAR			szLockUserLevel[DPSDK_USER_LEVEL_LEN];		// Level of the user locking PTZ
	DPSDK_CHAR			szLowerDomain[DPSDK_IP_LEN];				// Lower Domain IP
	DPSDK_CHAR			szUserCode[DPSDK_USER_ID_LEN];
	DPSDK_BOOL			bCascadeUser;
}DPSDK_LOCKSTATUS_CHANGED_NOTIFY;

// TV wall notice  <add/modify>
typedef struct  
{
	DPSDK_UINT32 uiTvWallId;										// TV wall ID
	DPSDK_CHAR szTvWallName[DPSDK_NAME_LEN_EX];						// TV wall name
	DPSDK_CHAR szOwnerCode[DPSDK_TVWALL_OWNERCODE_LEN];				// TV wall code
	DPSDK_INT32 iStates;											// TV wall status, 0=disable, 1=enable
	DPSDK_INT32 iEditFlag;											// Edit flag，1、all 2、some of them cannot be modified, that is, they already have windows
																	// 3、Has been equipped with wall, channel cannot be modified,but can be added
	DPSDK_INT32	iWallMode;											// Wall Mode:1 Overlay mode, 2 Cycle mode
	DPSDK_SCREEN_DECODER_LIST struScreenDecoderList;
	DPSDK_CHAR szTvWallXml[1];										// TV wall XML
}DPSDK_TVWALL_NOTIFY;

typedef enum
{
	DPSDK_CALLBACK_DISPLAY = 0,						//Video display call back
	DPSDK_CALLBACK_DRAW,							//Video draw call back
	DPSDK_CALLBACK_DEMUXDEC,						//Video demux decode call back
	DPSDK_CALLBACK_IVSDATA,							//Video Ivs data call back
	DPSDK_CALLBACK_FISHINFO,						//Video Fish eye info call back
	DPSDK_CALLBACK_DECODE,							//Video decode call back
	DPSDK_CALLBACK_VISIBLEDEC,						//Video visible dec call back
}DPSDK_CALLBACK_TYPE;

//Decoding type
typedef enum
{
	DPSDK_DECODE_SW = 0,							//CPU decoding
	DPSDK_DECODE_HW = 1,							//GPU decoding
	DPSDK_DECODE_HW_FAST = 2,						//GPU fast decoding
}DPSDK_DECODE_TYPE;

// User online status
typedef enum
{
	USER_STSTUS_UNDEFINE = 0,						//Undefined
	USER_STATUS_ONLINE = 1,							//Online
	USER_STATUS_OFFLINE = 2,						//Offline
}DPSDK_USER_ONLINESTATUS_TYPE;

#define DPSDK_MAX_SERVER_ABILITY_NUM	64			// Max. number of service capability set

// Service capability
typedef enum
{
	SERVER_ABILITY_NULL = 0,						// 
	SERVER_ABILITY_VIDEO	= 1,					// Video
	SERVER_ABILITY_SYNOPSIS = 2,					// Cloud Synopsis
	SERVER_ABILITY_VEHICLE	= 3,					// Vehicle
	SERVER_ABILITY_FACE		= 4,					// Face
}DPSDK_SERVER_ABILITY;

typedef enum
{
	DEVICE_MODEL_UNKNOW = 0,						// Unknown
	DEVICE_MODEL_IPC_123 = 1,						//
	DEVICE_MODEL_IPC_245 = 2,						//
	DEVICE_MODEL_IPC_256 = 3,						// 
}DPSDK_DEVICE_MODEL;

typedef enum
{
	DEVICE_MANFAC_UNKNOW = 0,						// Unknown
	DEVICE_MANFAC_DAHUA = 1,						// Dahua
	DEVICE_MANFAC_HIKVISION = 2,					// HIKVISION
	DEVICE_MANFAC_UNIVIEW = 3,						// UNIVIEW
	DEVICE_MANFAC_JIUZHOU = 4,						// JIUZHOU
}DPSDK_DEVICE_MANFAC;

typedef struct
{
	DPSDK_CHAR szPlatformName[DPSDK_PLATFORM_NAME_LEN];			// Platform name
	DPSDK_CHAR szPlatformVersion[DPSDK_PLATFORM_VERSION_LEN];	// Platform version
	DPSDK_CHAR szCopyRight[DPSDK_COPY_RIGHT_LEN];				// Copyright
	DPSDK_CHAR szPatchVersion[DPSDK_PATCH_VERSION_LEN];			// PatchVersion
	DPSDK_CHAR szSecurityVersion[DPSDK_SECURITY_VERSION_LEN];	// PatchVersion
	DPSDK_CHAR szStorageMode[DPSDK_IN32_LEN];					// StorageMode
}DPSDK_PLATFORM_VERSION_INFO;

//User login result
typedef struct
{
	DPSDK_INT32 iUnlockRemainTime;					// Remaining time of unlocking
	DPSDK_UINT32 iSvrAbilityNum;					// Number of service capability set
	DPSDK_INT32 iServerAbility[DPSDK_MAX_SERVER_ABILITY_NUM];// Service capability set
	DPSDK_CHAR szSipNum[DPSDK_ID_LEN];				// User telephone number
	DPSDK_CHAR szSipPwd[DPSDK_PWD_LEN];				// User telephone password
	DPSDK_INT32 iIsReused;							// Is reused, 0-No, 1-Yes
	DPSDK_INT32 iUserLevel;							// user level
	bool		bLoginIpChanged;
	DPSDK_CHAR  szLastLoginIP[DPSDK_IP_LEN];
	DPSDK_CHAR szClientUpdateInfo[DPSDK_URL_LEN];
}DPSDK_LOGIN_RESULT;

// User login data
typedef struct
{
	DPSDK_LOGIN_PARAM struLoginParam;				// User login info
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];			// User ID
	DPSDK_USHORT ushHttpPort;						// HTTP port
	DPSDK_LOGIN_RESULT struLoginRes;				// Login return result
	DPSDK_CHAR szLastLoginIP[DPSDK_IP_LEN];						// Last login client IP
	DPSDK_CHAR szLastLoginTime[DPSDK_TIME_STRING_LEN_EX];		// Last login time
	bool		bPwdExpire;
	DPSDK_INT32	nPwdExpireLastDays;	
	DPSDK_CHAR szRoleId[DPSDK_USER_ID_LEN];			// role ID//过期天数倒计时
	DPSDK_INT32 iUserLevel;
}DPSDK_USER_LOGIN_DATA;

// User login data
typedef struct
{
	DPSDK_BOOL bSSLEnable;								// SSL enable
	DPSDK_CHAR szCertificatePath[DPSDK_FILE_PATH_LEN];	// Certificate path
	DPSDK_BOOL bRTSPSEnable;							// RTSPS enable
	DPSDK_INT32 iUnSSLPort;								//un SSL port
}DPSDK_MQ_SSL_INFO;

// User MQ data
typedef struct
{
	DPSDK_CHAR szMQServerURL[DPSDK_URL_LEN];					// MQ server URL
	DPSDK_CHAR szPicServerURL[DPSDK_URL_LEN];					// Pic server URL
	DPSDK_INT64 iConnectTime;
	DPSDK_INT64 iDisconnectTime;
	DPSDK_BOOL bConnect;
}DPSDK_USER_MQ_DATA;

// User login data
typedef struct
{
	DPSDK_INT32 iLogoutDelayTime;						// Logout device time after close video stream
	DPSDK_INT32 iNetworkTimeout;						// The time of network time out
}DPSDK_DEVICE_SDK_CONFIG;

typedef enum
{
	CALL_TYPE_SINGLE_CALL,								// Single call
	CALL_TYPE_GROUP_CALL,								// Group call
	CALL_TYPE_VT_CALL,									// Video intercom
}DPSDK_CALL_TYPE;

// Call service status
typedef enum
{
	CALL_STATUS_PREPARED,								//Prepare
	CALL_STATUS_REQTOSCS,								//Request SCS
	CALL_STATUS_CALLING,								//Calling
	CALL_STATUS_RECVING,								//Receiving
	CALL_STATUS_CEASED,									//Call release
}DPSDK_CALL_STATUS;

// Call request parameter
typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];					//Group ID
	DPSDK_INT32 iCallType;								//Call type. Refer to DPSDK_CALL_TYPE definition.

	DPSDK_REALPLAY_PARAM struRealParam;					// Video parameter
}DPSDK_START_CALL_PARAM;

typedef struct
{
	DPSDK_CHAR szTransferNum[DPSDK_ID_LEN];				// Transfer number
	DPSDK_INT32 iMaxConnectTime;						// keep connect time
}DPSDK_START_VTCALL_RES;

// Register intercom call request parameter
typedef struct
{
	DPSDK_CHAR szCallNum[DPSDK_ID_LEN];					//当前用户向scs注册用的sip号码，用的用户管理中的联系电话
}DPSDK_REGISTER_VTCALL_PARAM;

// Video intercom call request parameter
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_ID_LEN];					//User ID
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];					//Group ID，广播时使用
	DPSDK_INT32 iCallType;								//Call type. Refer to DPSDK_CALL_TYPE definition.
	DPSDK_INT32 iAudioType;								//Audio type. Refer to DPSDK_AUDIO_TYPE definition.
	DPSDK_INT32 iTalkType;								//Talk Tyoe 1:SIP 2:POC
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback structure
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure
	DPSDK_BOOL	bIsBroadCastModule;					//是否是广播模式
	DPSDK_BOOL	bIsUseGroupList;					//是否手动传广播列表,否的话，就用广播分组ID进行广播
	DPSDK_CHAR	szBroadCastParam[DPSDK_IN512_LEN*3*10];					//如果是手动传广播列表，那么这个参数就是广播列表拼起来的字符串，否则就是广播分组id
}DPSDK_START_VTCALL_PARAM;

// Call request parameter
typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];					//Group ID，广播时使用
	DPSDK_INT32 iCallType;								//Call type. Refer to DPSDK_CALL_TYPE definition.
	DPSDK_CHAR szCallerId[DPSDK_ID_LEN];
	DPSDK_CHAR szRtpServIP[DPSDK_IP_LEN];
	DPSDK_CHAR szSendChnlID[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szRecvChnlID[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szHostID[DPSDK_ID_LEN];
	DPSDK_INT32	iRtpPort;
	DPSDK_INT32	iAudioType;
	DPSDK_INT32	iAudioBit;
	DPSDK_INT32	iSampleRate;
	DPSDK_INT32	iCallId;
	DPSDK_INT32	iDlgId;
	DPSDK_INT32	iTid;

	DPSDK_REALPLAY_PARAM struRealParam;					// Video parameter
}DPSDK_INVITE_CALL_PARAM;

// Video intercom call request parameter
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_ID_LEN];					//User ID
	DPSDK_INT32 iCallType;								//Call type. Refer to DPSDK_CALL_TYPE definition.
	DPSDK_INT32 iTalkType;
	DPSDK_CHAR szRtpServIP[DPSDK_IP_LEN];
	DPSDK_INT32 iRtpAPort;
	DPSDK_INT32 iRtpVPort;
	DPSDK_INT32 iUdtAPort;								//rtsp audio port
	DPSDK_INT32 iAudioType;
	DPSDK_INT32 iAudioBit;
	DPSDK_INT32 iSampleRate;
	DPSDK_INT32 iCallId;
	DPSDK_INT32 iDlgId;
	DPSDK_INT32 iTid;
	DPSDK_BOOL	bUseRudp;
	DPSDK_MEDIA_CALLBACK	struMediaCallBack;			// Video callback structure
	DPSDK_DISPATCHMAINTHREAD_MEDIA_CALLBACK	struDispatchMainThreadCallBack;			// Dispatch main thread callback structure
}DPSDK_INVITE_VTCALL_PARAM;

typedef struct
{
	DPSDK_CHAR szVthCallingLongNumber[DPSDK_VTHCALL_NUMBER_LEN];
}DPSDK_VTHCALL_NUM_INFO;

typedef struct
{
	DPSDK_CHAR szVtoDeviceCode[DPSDK_DEVICE_CODE_LEN];
	DPSDK_CHAR szDoorOpenPass[DPSDK_PWD_LEN];
	DPSDK_INT32 iNum;
	DPSDK_VTHCALL_NUM_INFO* pVthCallNumList; 
}DPSDK_CONFIG_DOOR_PSS_INFO;

// Refuse video intercom request parameter
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_ID_LEN];				//User ID
	DPSDK_INT32 iCallId;								
	DPSDK_INT32 iDlgId;	
	DPSDK_INT32 iTid;
	DPSDK_INT32 iTalkType;
	DPSDK_BOOL bHasDevRight;
}DPSDK_VTCALL_REJECT_PARAM;

typedef struct
{
	DPSDK_INT32 iStatus;			//0:not enabled, 1:domestic, 2:overseas			
}DPSDK_VTCALL_REGION_INFO;

typedef struct
{
	DPSDK_INT32 iStatus;			//0:close, 1:open			
}DPSDK_VTCALL_STAGE_ENABLE_INFO;

// Cancel video intercom request parameter
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_ID_LEN];				//User ID
	DPSDK_INT32 iCallId;
	DPSDK_INT32 iDlgId;
	DPSDK_INT32	iTalkType;
}DPSDK_VTCALL_CANCEL_PARAM;

// Video intercom info release request parameter
typedef struct
{
	DPSDK_CHAR szMsgId[DPSDK_ID_LEN];					//User ID
	DPSDK_INT32 iReceiverNum;							//Info receiver quantity
	DPSDK_ID* pReceiverList;							//Info receiver list
}DPSDK_VTCALL_PUBLISH_PARAM;

typedef struct
{
	DPSDK_INT32 iMaxConnectTime;
	DPSDK_INT32 iMaxRingTime;
}DPSDK_VTCALL_TIME_PARAM;

typedef struct  
{
	DPSDK_CHAR szURL[DPSDK_URL_LEN];                        // RTSP url
}DPSDK_GET_URL_INFO;

typedef struct
{
	DPSDK_INT32	iSourceType;								//Record source
	DPSDK_INT32 iOwnerId;									//Operator ID
	DPSDK_CHAR	szCameraId[DPSDK_CHANNEL_ID_LEN];			//Camera ID
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN];			//Start time of locked record
	DPSDK_CHAR	szStopTime[DPSDK_TIME_STRING_LEN];			//End time of locked record
	DPSDK_CHAR	szOperTime[DPSDK_TIME_STRING_LEN];			//Operating time
	DPSDK_CHAR	szOwnerIp[DPSDK_IP_LEN];					//Operator Ip
	DPSDK_CHAR	szOwnerName[DPSDK_NAME_LEN_MAX];				//Operator name
	DPSDK_CHAR	szReason[DPSDK_MEMO_LEN];					//Operating cause
	DPSDK_CHAR	szDBId[DPSDK_DB_ID_LEN];					//DB ID
}DPSDK_RECORD_LOCK_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szDBId[DPSDK_DB_ID_LEN];
} DPSDK_DB_ID;

typedef struct  
{
	DPSDK_INT32		iCount;
	DPSDK_DB_ID*	pDBIds;
}DPSDK_RECORD_UNLOCK_NOTIFY;

typedef struct
{
	DPSDK_UINT32	uTagId;
	DPSDK_TIMET		tTagTime;
	DPSDK_UINT32	uOwnerId;
	DPSDK_TIMET		tOwnerTime;
	DPSDK_INT32		iRecordSource;
	DPSDK_CHAR		szCameraId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR		szSubject[DPSDK_SUBJECT_LEN];
	DPSDK_CHAR		szContent[DPSDK_MEMO_LEN];
	DPSDK_CHAR		szURL[DPSDK_URL_LEN];
}DPSDK_ADD_RECORD_TAG_NOTIFY;

typedef struct
{
	DPSDK_INT32		iCount;
	DPSDK_UINT32*	pDBIds;
}DPSDK_DELETE_RECORD_TAG_NOTIFY;

typedef struct  
{
	DPSDK_UINT64	uiDownloadSize;
	DPSDK_UINT64	uiTotalSize;
}DPSDK_DOWNLOAD_PROGRESS_IFNO;

typedef struct  
{
	DPSDK_CHAR		szFilePath[DPSDK_FILE_PATH_LEN];
	DPSDK_UINT64	uiFileSize;
}DPSDK_DOWNLOAD_CUT_FILE_INFO;

typedef struct  
{
	DPSDK_INT32		iEventType;
	DPSDK_INT32		iResult;
	DPSDK_INT32		iDownloadID;
	DPSDK_CHAR		szChannelID[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR		szDownloadPath[DPSDK_FILE_PATH_LEN];
	DPSDK_BOOL		bRtspDown;
	DPSDK_DOWNLOAD_PROGRESS_IFNO	struProgress;
	DPSDK_DOWNLOAD_CUT_FILE_INFO	struCutFile;
	DPSDK_TIMET		tBeginTime;
	DPSDK_TIMET		tEndTime;
	DPSDK_BOOL		bWaterMarkEnable;
}DPSDK_DOWNLOAD_NOTIFY;

typedef struct
{
	DPSDK_INT32		iCount;
	DPSDK_UINT32*	pTimeTemplateId;
}DPSDK_DELETE_TIMETEMPLATE_NOTIFY;

typedef struct
{
	DPSDK_INT32		iCount;											// Record count
	DPSDK_UINT32*	pPlanId;										// Record ID
}DPSDK_DELETE_STORAGEPLAN_NOTIFY;

typedef struct 
{
	DPSDK_CHAR		szChannelID[DPSDK_CHANNEL_ID_LEN];				// Channel ID			
}DPSDK_ALARM_PLAN_NOTIFY;

typedef struct
{
	DPSDK_INT32 iBufLen;
	DPSDK_CHAR* pData;
}DPSDK_JSON_DATA_NOTIFY;

typedef struct
{
	DPSDK_INT32 iTVWallId;											// TV wall ID
	DPSDK_INT32 iStatus;											// TV wall status: 0.not enable; 1. enabled
}DPSDK_TVWALL_STATUS_NOTIFY;


// SCS status notice
typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];			// Server Code
	DPSDK_INT32 iStatus;									// Service status
	DPSDK_CHAR szServerIP[DPSDK_SERVER_CODE_LEN];			// Server IP(center or distributed)
	DPSDK_BOOL bCenterServer;								// Server is center or distributed. 0=distributed, 1=center
}DPSDK_SCS_STATUS_NOTIFY; 

// SCS info notice
typedef struct
{
	DPSDK_CHAR*	pJsonData;									// Received json data
	DPSDK_INT32 iDataLen;									// Data length
}DPSDK_SCS_MESSAGE_NOTIFY;

// Intercom call invitation notice
typedef struct
{
	DPSDK_INT32 iAudioType;									//Audio type. Refer to DPSDK_AUDIO_TYPE definition.
	DPSDK_INT32 iTalkBit;									//Digit. Refer to DPSDK_TALK_BIT definition.
	DPSDK_INT32 iSampleRate;								//Sampling rate. Refer to DPSDK_TALK_SAMPLE_RATE definition.
	DPSDK_INT32	iTalkType;									//POC or SC
	DPSDK_CHAR	szRtpServIP[DPSDK_IP_LEN];
	DPSDK_INT32	iRtpPort;									// Port
	DPSDK_INT32	iCallType;									// Call type. Refer to DPSDK_CALL_TYPE definition.
	DPSDK_CHAR	szGroupId[DPSDK_USER_ID_LEN];				// Group ID
	DPSDK_CHAR	szCallerID[DPSDK_USER_ID_LEN];				// Caller ID
	DPSDK_CHAR	szRecvChnlID[DPSDK_CHANNEL_ID_LEN];			// Receiving Channel ID
	DPSDK_CHAR	szSendChnlID[DPSDK_CHANNEL_ID_LEN];			// Sending Channel ID
	DPSDK_CHAR	szUserAgent[DPSDK_LEN_64];					// user agent
	DPSDK_INT32	iCallId;
	DPSDK_INT32	iDlgId;
	DPSDK_INT32 iTId;
}DPSDK_CALL_INVITE_NOTIFY;

// Video intercom call invitation notice
typedef struct
{
	DPSDK_INT32 iAudioType;									//Audio type. Refer to DPSDK_AUDIO_TYPE definition.
	DPSDK_INT32 iTalkBit;									//Digit. Refer to DPSDK_TALK_BIT definition.
	DPSDK_INT32 iSampleRate;								//Sampling rate. Refer to DPSDK_TALK_SAMPLE_RATE definition.
	DPSDK_INT32	iTalkType;									//POC or SC
	DPSDK_CHAR	szRtpServIP[DPSDK_IP_LEN];
	DPSDK_INT32	iRtpAPort;									// Audio port
	DPSDK_INT32	iRtpVPort;									// Video port
	DPSDK_INT32	iUdtAPort;									// Udt Audio port
	DPSDK_INT32	iCallType;									// Call type. Refer to DPSDK_CALL_TYPE definition.
	DPSDK_CHAR	szUserId[DPSDK_USER_ID_LEN];				// Caller ID
	DPSDK_CHAR	szUserAgent[DPSDK_LEN_64];					// user agent
	DPSDK_CHAR	szCallerID[DPSDK_USER_ID_LEN];				// Caller ID
	DPSDK_CHAR	szFromCallerID[DPSDK_USER_ID_LEN];				// From Caller ID
	DPSDK_CHAR	szCallStartTime[DPSDK_LEN_64];				// CallStartTime
	DPSDK_INT32	iCallId;
	DPSDK_INT32	iDlgId;
	DPSDK_INT32 iTId;
	DPSDK_BOOL	bUseRudp;									//is use rudp
}DPSDK_VTCALL_INVITE_NOTIFY;

// Video intercom call invitation notice
typedef struct
{
	DPSDK_CHAR szCallerId[DPSDK_ID_LEN];				//Group call initiator
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];					//Group ID
	DPSDK_INT32 iTransId;
	DPSDK_INT32 iTalkType;
}DPSDK_VTCALL_BYE_NOTIFY;

// Video intercom ringing notice
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];				// Device ID or channel ID
	DPSDK_INT32	iCallId;
	DPSDK_INT32	iDlgId;
	DPSDK_INT32	iTId;
	DPSDK_INT32	iTalkType;
	DPSDK_CHAR szCallInId[DPSDK_USER_ID_LEN];				// call in id
	DPSDK_CHAR szFromCallId[DPSDK_USER_ID_LEN];				// from call id
}DPSDK_VTCALL_RING_NOTIFY;

// Active caller's call cancellation notice
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];				// Device ID or channel ID
	DPSDK_CHAR szCallerId[DPSDK_ID_LEN];				//Caller id
	DPSDK_INT32	iCallId;
	DPSDK_INT32	iDlgId;
	DPSDK_BOOL	bPicked;								//answer by other
	DPSDK_INT32	iTalkType;
}DPSDK_VTCALL_CANCEL_NOTIFY;

// Video intercom busy notice
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];				// Device ID or channel ID
	DPSDK_INT32	iCallId;
	DPSDK_INT32	iDlgId;
	DPSDK_INT32	iTId;
	DPSDK_INT32 iTalkType;
}DPSDK_VTCALL_BUSY_NOTIFY;

typedef struct
{
	DPSDK_BOOL				bIsAccUser;								// true: associated user, false: not assoiated user
	DPSDK_CHAR				szTopic[DPSDK_ID_LEN];					// Mq topic
}DPSDK_MQ_TOPIC_INFO;

typedef struct
{
	DPSDK_CHAR				szOrgCode[DPSDK_ORG_CODE_LEN];
}DPSKD_ORG_CODE;

//Data PassThrough
typedef enum 
{
	METHOD_TYPE_GET    =  0,								
	METHOD_TYPE_POST   =  1,							
	METHOD_TYPE_PUT    =  2,									
	METHOD_TYPE_DELETE =  3,
}DPSDK_HTTPMETHOD_TYPE;

typedef struct 
{
	DPSDK_CHAR szHttpHeadKey[128];        
	DPSDK_CHAR szHttpHeadValue[1024];     
}DPSDK_HTTP_HEAD_PARAM; 

typedef struct 
{
	DPSDK_INT32			   nParamCount; 
	DPSDK_HTTP_HEAD_PARAM* pParamList;  
}DPSDK_HTTP_HEAD_PARAM_LIST;


// User encrypted question
typedef struct
{
	DPSDK_INT32 iQuestionId;										// Question ID
	DPSDK_CHAR szDesc[DPSDK_MEMO_LEN];								// The detail describe of question
}DPSDK_USER_QUESTION_INFO;

// The list of user encrypted question
typedef struct
{
	DPSDK_INT32 iQuestionNum;										// The number of user encrypted question
	DPSDK_USER_QUESTION_INFO struQuestionList[1];					// The list of user encrypted question
}DPSDK_USER_QUESTION_LIST;

// The answer of user encrypted question
typedef struct
{
	DPSDK_INT32 iQuestionId;										// QuestionID
	DPSDK_CHAR szAnswer[DPSDK_MEMO_LEN];							// The answer of question
}DPSDK_USER_QUESTION_ANSWER_INFO;

typedef struct 
{
	DPSDK_INT32 iQuestionNum;									// The number of user encrypted question
	DPSDK_USER_QUESTION_ANSWER_INFO* pAnswerList;				// The list of answer
}DPSDK_USER_CHANGE_QUESTIONANSWER;

// The list user encrypted question
typedef struct
{
	DPSDK_INT32 iQuestionNum;										// The number of user encrypted question
	DPSDK_USER_QUESTION_ANSWER_INFO struAnswerList[1];				// The list of answer
}DPSDK_USER_QUESTION_ANSWER_LIST;

// Query user basic information parameter
typedef struct
{
	DPSDK_INT32 iGroupIdNum;										// The number of group id
	DPSDK_USER_ID szGroupIdList[DPSDK_MAX_GROUP_ID_NUM];			// The list of group id
}DPSDK_QUERY_USER_BASE_INFO;

// Add user notice
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];								// User ID
	DPSDK_CHAR	szUserName[DPSDK_NAME_LEN];								// Username
	DPSDK_CHAR	szRoleID[DPSDK_USER_ID_LEN];							// Role ID
}DPSDK_USERADD_NOTIFY;

// update user notice
typedef struct
{
	DPSDK_CHAR  szUserId[DPSDK_USER_ID_LEN];							// User ID
	DPSDK_CHAR	szUserName[DPSDK_NAME_LEN];								// Username
	DPSDK_CHAR	szPersonId[DPSDK_USER_ID_LEN];							// Person ID
}DPSDK_USERUPDATE_NOTIFY;

// The basic information of user
typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_USER_ID_LEN];						// Group id
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login name
	DPSDK_BOOL bIsOnline;											// Is it on-line
}DPSDK_USER_BASE_INFO;

// User detail 
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id
	DPSDK_CHAR szPersonId[DPSDK_USER_ID_LEN];						// PersonId
	DPSDK_INT32 iRoleId;											// role id
	DPSDK_CHAR szDefaultOrgCode[DPSDK_ORG_CODE_LEN];                // Default Org Code
	DPSDK_CHAR szOwnerCode[DPSDK_ORG_CODE_LEN];                     // ower Org Code
	DPSDK_BOOL bIsInitialPassword;                                  // is Initial Password false no true yes
	DPSDK_BOOL bForceModifyPWD;										// if not force modify pwd 
	DPSDK_INT32 iExpirationDays;									// expiration days
}DPSDK_USER_DETAIL;

// The list of user basic information
typedef struct
{
	DPSDK_INT32 iUserBaseInfoNum;									// The number of user basic information
	DPSDK_USER_BASE_INFO* pUserBaseInfo;
}DPSDK_USER_BASE_INFO_LIST;

typedef struct
{
	DPSDK_CHAR szDeviceID[DPSDK_DEVICE_ID_LEN];						// Device ID
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// Device login user
	DPSDK_CHAR szUserPwd[DPSDK_PWD_LEN];							// Device login password
	DPSDK_CHAR szIP[DPSDK_IP_LEN];									// Device additionIP
	DPSDK_USHORT ushPort;											// Device add port
	DPSDK_CHAR szDevIP[DPSDK_IP_LEN];								// Device real ip
	DPSDK_USHORT ushDevPort;										// Device real port
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_CHAR szChannelName[DPSDK_DEVICE_NAME_LEN];			// Device name
	DPSDK_INT32 iChannelType;										// Channel type
	DPSDK_INT32 iChannelNum;
}DPSDK_TVWALL_CHANNEL_INFO;

typedef struct
{
	DPSDK_INT32 iChannelNum;
	DPSDK_TVWALL_CHANNEL_INFO* pChannelInfoList;
}DPSDK_CHANNEL_INFO_LIST;

typedef struct  
{
	DPSDK_CHAR			szToken[DPSDK_TOKEN_LEN];
	DPSDK_CHAR			szUserId[DPSDK_USER_ID_LEN];
	DPSDK_INT32			iDuration;
}DPSDK_TOKEN_INFO;

typedef enum
{
	DPSDK_STREAM_TYPE_UNKNOW = 0,			//未知
	DPSDK_STREAM_TYPE_DAHUA = 1,			//大华流
	DPSDK_STREAM_TYPE_HIK = 2,			//海康流
	DPSDK_STREAM_TYPE_H3C = 3,			//华三流
	DPSDK_STREAM_TYPE_HANBANG = 4,		//汉邦私有流
}DPSDK_STREAM_MANUFACTURE;

typedef struct
{
	DPSDK_INT32			iStreamManuFacture;       // stream manufacture，see DPSDK_STREAM_MANUFACTURE
}DPSDK_STREAM_INFO;

typedef struct
{				
	DPSDK_CHAR		szConnectIp[DPSDK_IP_LEN];				
	DPSDK_INT32		iConnectPort;
	DPSDK_INT32		iUserErrorCode;
	DPSDK_INT64		iRangeStartTime;
	DPSDK_INT64		iRangeEndTime;
	DPSDK_CHAR		szURL[DPSDK_URL_LEN];				// RTSP URL
	DPSDK_CHAR		szEncryptedLevel[2];			// 码流加密等级	
}DPSDK_RTSPCONNECT_INFO;
// OSD信息
typedef struct{
	int	x;							// 旋转点像素x位置
	int	y;							// 旋转点像素y位置
	unsigned int	r;				// osd叠加颜色r，范围0-255
	unsigned int	g;				// osd叠加颜色g，范围0-255
	unsigned int	b;				// osd叠加颜色b，范围0-255
	unsigned int	alpha;			// osd叠加透明度，范围0-255
	DPSDK_CHAR		displaystr[DPSDK_CHANNEL_WATER_INFO_LEN];	// osd数据，使用utf-8编码
	//unsigned int	fontX;			// 字体宽度, 使用大华字体时无效
	unsigned int	fontY;			// 字体高度, 最大512
	unsigned int	rotateAngle;	// 旋转角度，范围0-359度
} DPSDK_CHANNEL_WATER_INFO_ITEM;

// OSD信息
typedef struct{
	DPSDK_CHANNEL_WATER_INFO_ITEM item[32];
	DPSDK_CHAR dahuafontpath[DPSDK_DAHUAFONT_PATH_LEN]; //大华字体路径
	DPSDK_INT32 ncount;
} DPSDK_CHANNEL_WATER_INFO;

//opengl绘制
typedef struct
{
	DPSDK_INT32					x;
	DPSDK_INT32					y;
}DPSDK_RENDER_POS;

// 绘制类型
typedef enum
{
	DRAW_POINT = 0,				//点
	DRAW_LINE = 1,				//线段
	DRAW_Arrow_Single = 2,		//单箭头
	DRAW_Arrow_Double,			//双箭头
	DRAW_ARC,					//圆弧
	DRAW_Ellipse,				//椭圆
	DRAW_Polygon,				//多边形
}DPSDK_RENDER_DREW_TYPE_e;

typedef struct Render_Size
{
	DPSDK_INT32 iWidth;			//渲染窗口宽度
	DPSDK_INT32 iHeight;		//渲染窗口高度
} DPSDK_RENDER_SIZE;

typedef struct Render_DrawText_Item
{
	DPSDK_INT32					 x;		// 旋转点像素x位置
	DPSDK_INT32					 y;		// 旋转点像素y位置		
	DPSDK_FLOAT			 rotateAngle;	//旋转角度，范围0-359度
	DPSDK_UINT32		 uFontSize;	    //字体大小(非GDI方式绘字必填),取值范围(0,255]
	DPSDK_UINT32		 uFontWidth;    //字体平均宽度(非GDI方式暂不支持)
	DPSDK_UINT32		 uFontHeight;   //行高(非GDI方式表示字体上沿到行上边界的间距)
	DPSDK_UINT32		 uFontWeight;   //字体字重(GDI方式绘字用到,非GDI该参数无效)
	DPSDK_INT32			 color[4];		//字体颜色
	DPSDK_CHAR			 displaystr[DPSDK_CHANNEL_WATER_INFO_LEN];	//文字数据，使用utf-8编码		
} DPSDK_RENDER_DRAWTEXT_ITEM;

typedef struct Render_DrawText_Info
{
	DPSDK_RENDER_DRAWTEXT_ITEM* infoItems;
	DPSDK_INT32			  nCount;
}DPSDK_RENDER_DRAWTEXT_INFO;

typedef struct Render_Config_Info
{
	DPSDK_INT32			iLineType;				//线样式：实线，虚线
	DPSDK_UINT32		uiSize;					//大小，比如点的大小或者线的宽度，单位为像素，取值范围(0,255]
	DPSDK_UINT32		uRadius;				//圆的半径
	DPSDK_FLOAT			rotateAngle;			//旋转角度，范围0-359度
	DPSDK_INT32			stLineColor[4];			//线段颜色
	DPSDK_INT32			stFillingColor[4];		//填充色	
}DPSDK_RENDER_CONFIG_INFO;

typedef struct Render_Graphics_Item
{
	DPSDK_RENDER_DREW_TYPE_e		eDrawType;		//绘制类型
	DPSDK_RENDER_CONFIG_INFO		baseInfo;		//图元属性
	DPSDK_RENDER_POS				posItem[DPSDK_OPENGLRENDER_POS_NUM];	//坐标集合
	DPSDK_INT32						nPosCount;		//坐标集合数量

}DPSDK_RENDER_GRAPHICS_ITEM;

typedef struct Render_Graphics_Info
{
	DPSDK_RENDER_GRAPHICS_ITEM* infoItems;
	DPSDK_INT32				    nCount;
}DPSDK_RENDER_DRAWGRAPHICS_INFO;

typedef enum
{
	SERVER_DSS9100,				// 9100
	SERVER_DSS8,				// series 8
	SERVER_DSS8MGW,				// series 8 mgw
}DPSDK_MTS_TYPE;

// Call log ID
typedef struct
{
	DPSDK_CHAR szCallLogId[DPSDK_ID_LEN];					// Call log ID
}DPSDK_CALLLOG_ID;

typedef struct
{
	DPSDK_INT32 iCallLogNum;								// Call log quantity
	DPSDK_CALLLOG_ID struCallLogList[1];					// Call log ID list
}DPSDK_CALLLOG_ID_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Major key ID
	DPSDK_CHAR szCallNum[DPSDK_PHONE_LEN];					// Call number
	DPSDK_CHAR szCallerNum[DPSDK_PHONE_LEN];				// Caller number
	DPSDK_CHAR szCalledNum[DPSDK_PHONE_LEN];				// Called number
	DPSDK_CHAR szAddress[DPSDK_MEMO_LEN];					// Address
	DPSDK_CHAR szFormatCallTime[DPSDK_MEMO_LEN];			// Call date (Yesterday, Today ...)
	DPSDK_CHAR szFormatTalkTime[DPSDK_MEMO_LEN];			// Call duration (00:15)
	DPSDK_INT32 iTalkTime;									// Call duration	
	DPSDK_INT32 iCallType;									// Call type: (0: outbound, 1: inbound)
	DPSDK_INT32 iEndState;									// Final status (0-not received, 1-received)
	DPSDK_TIMET tCallTime;									// Call time (timestamp)
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			// The name of device
}DPSDK_CALLLOG_INFO;

//Get scene parameter
typedef struct
{
	DPSDK_INT32	iTvWallId;											// TV wall ID
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Device code
	DPSDK_BASE_PARAM struBaseParam;
}DPSDK_TVWALL_SCENE_PARAM;

//Get scene info
typedef struct
{
	DPSDK_INT32	iTvWallId;											// TV wall ID
	DPSDK_CHAR szTvWallName[DPSDK_NAME_LEN];						// TV wall name
	DPSDK_BOOL bRun;												// true=run,false=not run
	DPSDK_TVWALL_TASK_SCREEN_OPER_LIST struScreenOperList;			// TV wall task screen operation info list
	DPSDK_TVWALL_TASK_CHANNEL_EXT_LIST struChannelExtList;			// Device info list required by video source when decoder is in the decoding mode of direct connection
}DPSDK_TVWALL_SCENE_INFO;

// The list of channel id
typedef struct
{
	DPSDK_CHANNEL_ID szChnlID;
	DPSDK_INT32 iChnlInfoIndex;
}DPSDK_TVWALL_CHANNEL_ID;

typedef struct
{
	DPSDK_INT32 iSeq;												// Screen sequence
	DPSDK_INT32 iScreenID;											// Screen ID
	DPSDK_CHAR szDecodeId[DPSDK_DEVICE_ID_LEN];						// Decode ID
	DPSDK_INT32 iChnlIDNum;											// The number of channel
	DPSDK_TVWALL_CHANNEL_ID* pChnlIDList;							// The list of channel
}DPSDK_TREE_TVWALL_SCREEN_INFO;

// The list of channel id
typedef struct
{
	DPSDK_BOOL  bIsCurItem;											// Select current item or not
	DPSDK_INT32 iScreenInfoNum;
	DPSDK_TREE_TVWALL_SCREEN_INFO *pScreenInfoList;
	DPSDK_TREE_TVWALL_SCREEN_INFO szCurScreenInfo;
}DPSDK_TREE_TVVWALL_INFO;

// TV wall screen info
typedef struct
{
	DPSDK_INT32 iScreenId;											// Screen ID
	DPSDK_INT32 iParentId;											// Parent screen ID
	DPSDK_CHAR szScreenName[DPSDK_NAME_LEN];						// Screen name
	DPSDK_INT32 iScreenType;										// For screen type, refer to DPSDK_TVWALL_SCREEN_TYPE definition
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_CHAR szDeviceId[DPSDK_DEVICE_ID_LEN];						// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel code
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_FLOAT fTop;												// Screen top margin (pixel)
	DPSDK_FLOAT fLeft;												// Screen left margin (pixel)
	DPSDK_FLOAT fWidth;												// Screen width (pixel)
	DPSDK_FLOAT fHeight;											// Screen height (pixel)
	DPSDK_BOOL bMergeedBigScreen;									// Is it splicing screen
	DPSDK_BOOL bNewScreen;											// Modify or not
	DPSDK_FLOAT fPerviewTop;										// Screen top margin
	DPSDK_FLOAT fPerviewLeft;										// Screen left margin
	DPSDK_FLOAT fPerviewWidth;										// Screen width
	DPSDK_FLOAT fPerviewHeight;										// Screen height
}DPSDK_TVWALL_SCREEN_INFO;

// TV wall splicing screen info
typedef struct
{
	DPSDK_TVWALL_SCREEN_INFO struScreenInfo;						// Screen info
	DPSDK_INT32 iScreenNum;											// Sub-screen number
	DPSDK_INT32 iMaxScreenNum;										// Max. sub-screen number
	DPSDK_TVWALL_SCREEN_INFO* pScreenList;							// Sub-screen list
}DPSDK_TVWALL_BIG_SCREEN_INFO;

// Parameter Configure information
typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_IN64_LEN];					// Person Id
	DPSDK_CHAR szPersonName[DPSDK_IN64_LEN];				// Person Name
	DPSDK_CHAR szPersonCode[DPSDK_IN64_LEN];				// Person Code
	DPSDK_CHAR szPersonPaperNumber[DPSDK_IN64_LEN];			// Person Paper Number
}DPSDK_SERVER_PERSON_INFO;

// Parameter Configure information
typedef struct
{
	DPSDK_INT32 iId;												// Parameter Configure id
	DPSDK_CHAR szConfigParam1[DPSDK_CONFIG_PARAM_LEN];				// Parameter 1
	DPSDK_CHAR szConfigParam2[DPSDK_CONFIG_PARAM_LEN];				// Parameter 2
	DPSDK_CHAR szConfigParam3[DPSDK_CONFIG_PARAM_LEN];				// Parameter 3
}DPSDK_SERVER_CONFIG_INFO; 

// All Configure information
typedef struct
{
	DPSDK_INT32 iPWDConfig;											// Password Configure
}DPSDK_ALL_SERVER_CONFIG_INFO; 

// water mark config information
typedef struct  
{
	DPSDK_CHAR		szConfigType[DPSDK_CONFIG_PARAM_LEN];			// Config Type
	DPSDK_CHAR		szConfigName[DPSDK_CONFIG_PARAM_LEN];			// Config Name
	DPSDK_CHAR		szConfigSeq[DPSDK_CONFIG_PARAM_LEN];			// Config Sequence
	DPSDK_CHAR		szConfigPar1[DPSDK_CONFIG_PARAM_LEN];			// Config Paramer1
	DPSDK_CHAR		szConfigPar2[DPSDK_CONFIG_PARAM_LEN];			// Config Paramer2
	DPSDK_CHAR		szConfigPar3[DPSDK_CONFIG_PARAM_LEN];			// Config Paramer3
}DPSDK_WATERMARK_INFO;

// water mark config list information
typedef struct  
{
	DPSDK_UINT32			uiTotal;						// The total number of result
	DPSDK_WATERMARK_INFO	struWaterMarkInfo[1];			// Water Mark information
}DPSDK_WATERMARK_INFO_LIST;

// server time
typedef struct
{
	DPSDK_TIMET tServerTime;					// server time
	DPSDK_TIMET tOffsetTime;					// offset time
}DPSDK_SERVER_TIME;

// Sync server time
typedef struct
{
	DPSDK_CHAR szDateTime[DPSDK_TIME_STRING_LEN_EX];		//device date time
	DPSDK_CHAR szTimeZone[DPSDK_TYPE_LEN];					//offset time
}DPSDK_SYNCSERVER_TIME;

// Temperature data
typedef struct
{
	DPSDK_FLOAT fTemperatureValue;					//Temperature value
	DPSDK_INT32 iTemperatureType;					//Temperature type
}DPSDK_TEMPERATURE_INFO;

// Menu right list
typedef struct
{
	DPSDK_UINT32 uiTotal;							// Total obtained result
	DPSDK_MENU_RIGHT struMenuRight[1];				// Menu right list
}DPSDK_MENU_RIGHT_LIST;

typedef struct  
{
	DPSDK_INT32 iKeyLen;
	DPSDK_CHAR szKeyValue[DPSDK_ID_LEN_EX];						// Key
	DPSDK_CHAR szAlgorithm[DPSDK_ID_LEN];						// Algorithm
	DPSDK_TIMET tCreateData;									// Create data
}DPSDK_MEDIA_KEY_INFO; 

typedef struct  
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
}DPSDK_QUERY_MEDIA_KEY_PARAM;

typedef struct  
{
	DPSDK_INT32 iKeyNum;
	DPSDK_MEDIA_KEY_INFO* pKeyList;
}DPSDK_MEDIA_KEY_LIST;

typedef struct  
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_MEDIA_KEY_INFO struKey;
}DPSDK_MEDIA_KEY_NOTIFY; 

typedef struct
{
	DPSDK_INT32 iWindowId;											//Window ID
	DPSDK_INT32 iPlanId;											// Plan ID
	DPSDK_CHAR  szWindowName[DPSDK_NAME_LEN];						// Window name
	DPSDK_INT32	iScreenId;										    // Screen ID
	DPSDK_INT32	iWindowType;										// Window Type
	DPSDK_INT32	iSIndex;										    // sIndex
	DPSDK_INT32	iZIndex;											// zIndex
	DPSDK_FLOAT fLeft;												// The distance to the left of the screen, the percentage
	DPSDK_FLOAT fTop;												// The margin on the screen, the percentage
	DPSDK_FLOAT fWidth;												// Screen width, percentage
	DPSDK_FLOAT fHeight;											// Screen height, percentage
}DPSDK_TVWALL_WINDOW_DATA;

typedef struct
{
	DPSDK_INT32 iSustainedTime;										// Sustained Time
	DPSDK_INT32 iTvWallId;											// TV wall ID
	DPSDK_INT32 iWindowNum;											// TV wall Windows num
	DPSDK_TVWALL_WINDOW_DATA* pWindowList;							// TV wall Window List
}DPSDK_TVWALL_CONFIG_WINDOWS_INFO;

typedef struct
{
	DPSDK_INT32 iSustainedTime;										// Sustained Time
	DPSDK_INT32 iWindowNum;											// TV wall Windows num
	DPSDK_TVWALL_WINDOW_DATA* pWindowList;							// TV wall Window List
}DPSDK_TVWALL_WINDOWS_LIST;

typedef struct
{
	DPSDK_INT32 iWindowId;											//Window ID
	DPSDK_CHAR  szWindowName[DPSDK_NAME_LEN];						// Window name
	DPSDK_INT32 iChannelIdNum;										// Channel ID number
	DPSDK_CHANNEL_ID* pChannelIdList;								// Channel ID list
}DPSDK_TVWALL_WINDOW;

typedef struct
{
	DPSDK_INT32 iNum;											// num
	DPSDK_TVWALL_WINDOW* pWindowList;							// TV wall Window List
	DPSDK_INT32 iAlarmSourceNameNum;							// The number of alarm source name 
	DPSDK_CHANNEL_NAME* pAlarmSourceNameList;					// Alarm source name list
}DPSDK_CONFIG_TVWALL_WINDOWS_RESULT;

// TV wall config info
typedef struct
{
	DPSDK_INT32 iTvWallId;											// TV wall ID
	DPSDK_CHAR szTvWallName[DPSDK_NAME_LEN];						// TV wall name
	DPSDK_CHAR szTvWallDesc[DPSDK_USER_REMARK_LEN];					// TV wall description
	DPSDK_FLOAT fWidth;												// TV wall width(step 1)
	DPSDK_FLOAT fHeight;											// TV wall height (step 1)
	DPSDK_FLOAT fPerviewWidth;										// TV wall width (step 2)
	DPSDK_FLOAT fPerviewHeight;										// TV wall height (step 2)

	DPSDK_INT32 iWallScreenNum;										// Number of ordinary screen
	DPSDK_INT32 iMaxScreenNum;										// Max. number of ordinary screen
	DPSDK_TVWALL_SCREEN_INFO* pWallScreenList;						// List of ordinary screen (except splicing screen)

	DPSDK_INT32 iBigScreenNum;										// Number of splicing screen
	DPSDK_INT32 iMaxBigScreenNum;									// Max. number of splicing screen
	DPSDK_TVWALL_BIG_SCREEN_INFO* pBigScreenList;					// List of splicing screen
}DPSDK_TVWALL_CONFIG_INFO;

typedef struct
{
	DPSDK_INT32 iAlarmSourceNameNum;							// The number of alarm source name 
	DPSDK_CHANNEL_NAME* pAlarmSourceNameList;					// Alarm source name list
}DPSDK_DELETE_TVWALL_RESULT;

//Device code list
typedef struct
{
	DPSDK_INT32 iDevNum;									// Device quantity
	DPSDK_DEVICE_CODE struDevCodeList[1];					// Device code list
}DPSDK_DEVICE_CODE_LIST;

typedef struct
{
	DPSDK_INT32 iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32 iPageSize;									// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32 iDeviceNum;									// Call device quantity
	DPSDK_DEVICE_CODE* pDeviceCodeList;						// Call device code list
	DPSDK_TIMET tCallStartTime;								// Call period start time
	DPSDK_TIMET tCallEndTime;								// Call period end time
	DPSDK_TIMET	tSplitTime;
	DPSDK_CHAR	szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32	iCurrentPage;
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];				// cancel Sequence
}DPSDK_CALLLOG_PARAM;

// Export system log parameter
typedef struct
{
	DPSDK_INT32 iDeviceNum;											// device quantity
	DPSDK_DEVICE_CODE* pDeviceCodeList;								// device code list
	DPSDK_CHAR  szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
	DPSDK_INT32 iExportType;										// Export type see DPSDK_EXPORT_LOG_TYPE
	DPSDK_TIMET tBeginTime;											// Start time
	DPSDK_TIMET tEndTime;											// End time
	DPSDK_CHAR* pLocal;												// International
	DPSDK_INT32 iDataType;									// Data Type, 0:Record, 1: Record + pic
	DPSDK_INT32 iExportStartNo;
	DPSDK_INT32 iExportNumber;
	DPSDK_INT32 iDisplayTimezoneOffset;								// Display Server Timezone Offset
	
	DPSDK_CHAR szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_INT32 iExportRange;								// export range：0=all，1=selected record，2=custom	
	DPSDK_INT32 iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;
	DPSDK_CHAR szCredence[DPSDK_TOKEN_LEN];
}DPSDK_EXPORT_CALL_LOG_PARAM;

// Call parameter
typedef struct
{
	DPSDK_INT32 iUseNum;									// User quantity
	DPSDK_USER_ID* pUseIdList;								// User ID list
	DPSDK_INT32 iDeviceNum;									//Call device quantity
	DPSDK_DEVICE_CODE* pDeviceCodeList;						// Call device code list
}DPSDK_CALLNUMBER_PARAM;

// User call info
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];					// User ID
	DPSDK_CHAR szCallNumber[DPSDK_PHONE_LEN];				// Call number
}DPSDK_USER_CALLNUMBER_INFO;

// Device call info
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szCallNumber[DPSDK_PHONE_LEN];				// Call number
}DPSDK_DEV_CALLNUMBER_INFO;

// Obtain call number
typedef struct
{
	DPSDK_INT32 iUserNum;									// User quantity
	DPSDK_USER_CALLNUMBER_INFO* pUserCallNumList;			// User call info list
	DPSDK_INT32 iDevNum;									// Device quantity
	DPSDK_DEV_CALLNUMBER_INFO* pDevCallNumList;				// Device call info list
}DPSDK_GET_CALLNUMBER_NUMBER;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iNum;										// Record quantity
	DPSDK_CALLLOG_INFO* pCallLogList;						// Call log list
}DPSDK_CALLLOG_LIST;

typedef struct
{
	DPSDK_CHAR szDevGroupId[DPSDK_ID_LEN];					//  Device group ID
}DPSDK_DEV_GROUP_ID;

typedef struct
{
	DPSDK_INT32 iDevGroupNum;								// Device group quantity
	DPSDK_DEV_GROUP_ID struDevGroupIdList[1];				//  Device group ID list
}DPSDK_DEV_GROUP_ID_LIST;

typedef struct
{
	DPSDK_CHAR szDevGroupName[DPSDK_NAME_LEN];				//  Device group name
	DPSDK_INT32 iDevNum;									// Device quantity
	DPSDK_DEVICE_CODE* pDevCodeList;						// Device code list
}DPSDK_DEV_GROUP;

typedef struct
{
	DPSDK_CHAR szDevCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szDevName[DPSDK_DEVICE_NAME_LEN];			// Device name
	DPSDK_CHAR szCallNum[DPSDK_PHONE_LEN];					// Call number
	DPSDK_INT32 iDevType;									// Device type
	DPSDK_INT32 iDevCategory;								// Device Category type
}DPSDK_DEV_MEM_INFO;

typedef struct
{
	DPSDK_CHAR szRoomCode[DPSDK_DEVICE_CODE_LEN];			// room code
	DPSDK_CHAR szRoomName[DPSDK_DEVICE_NAME_LEN];			// room name
	DPSDK_CHAR szSipID[DPSDK_PHONE_LEN];					// Call number
	DPSDK_INT32 iPersonNum;									// App person quantity
	DPSDK_BOOL bHasVTH;										// has VTH
}DPSDK_CALLGROUP_ROOM_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Major key ID
	DPSDK_CHAR szDevGroupName[DPSDK_NAME_LEN];				// Device group name
	DPSDK_BOOL bEditable;									// editable
	DPSDK_INT32 iDeviceNum;									// Device quantity
	DPSDK_DEV_MEM_INFO* pDevMemList;						// Device info list
	DPSDK_INT32 iRoomNum;									// Room quantity
	DPSDK_CALLGROUP_ROOM_INFO* pRoomList;					// Room info list
}DPSDK_DEV_GROUP_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iNum;										// Record quantity
	DPSDK_DEV_GROUP_INFO* pDevGroupList;					// Device group info list
}DPSDK_DEV_GROUP_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Major key ID
	DPSDK_CHAR szDevGroupName[DPSDK_NAME_LEN];				// Device group name
	DPSDK_BOOL bEditable;									// Whether or not editable
}DPSDK_DEV_GROUP_SIMPLE_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNum;										// Record quantity
	DPSDK_DEV_GROUP_SIMPLE_INFO* pCallGroupList;			// Call group info list
}DPSDK_CALL_GROUP_SIMPLE_LIST;

typedef struct
{
	DPSDK_CHAR szSipID[DPSDK_ID_LEN];							// Major key ID
	DPSDK_CHAR szRoomName[DPSDK_ROOMNAME_LEN];				// Device group name
}DPSDK_CALL_GROUP_ROOM_INFO;

typedef struct
{
	DPSDK_INT32 iNum;										// Record quantity
	DPSDK_CALL_GROUP_ROOM_INFO* pRoomList;					// Room list
}DPSDK_CALL_GROUP_ROOM_LIST;

typedef struct
{
	DPSDK_CHAR szGroupRelationId[DPSDK_ID_LEN];				// Group relation ID
}DPSDK_GROUP_RELATION_ID;

typedef struct
{
	DPSDK_CHAR szDevGroupId[DPSDK_ID_LEN];					// Device group major key ID
}DPSDK_DEVGROUP_ID;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];						// Group major key ID
}DPSDK_MANAGER_GROUP_ID;

typedef struct
{
	DPSDK_CHAR szManagerGroupName[DPSDK_NAME_LEN];			// Management group name
	DPSDK_CHAR szManagerGroupId[DPSDK_ID_LEN];				// Management group major key ID
	DPSDK_INT32 iManagerGroupSort;							// Management group sequence
	DPSDK_INT32 iGroupType;									// Group type
}DPSDK_GROUP_RELATION_MEM;

typedef struct
{
	DPSDK_CHAR szRelationName[DPSDK_NAME_LEN];				// Group relation name
	DPSDK_INT32 iDevGroupNum;								// Device group quantity
	DPSDK_DEVGROUP_ID* pDevGroupIdList;						// Device major key ID list
	DPSDK_INT32	iManagerGroupNum;							// Management group quantity
	DPSDK_GROUP_RELATION_MEM* pManagerGroupList;			// Management group list
}DPSDK_GROUP_RELATION;

typedef struct
{
	DPSDK_INT32 iNum;										//  Group relation quantity
	DPSDK_GROUP_RELATION_ID struGroupRelationList[1];		//  Group relation ID list
}DPSDK_GROUP_RELATION_ID_LIST;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];						// Group major key ID
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];					// Group name
	DPSDK_INT32 iGroupType;									// Group type
	DPSDK_INT32 iGroupSort;									// Group sequence
}DPSDK_DEVICE_GROUP_MEM;

typedef struct
{
	DPSDK_CHAR szRelationName[DPSDK_NAME_LEN];				// Group relation name
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Major key ID
	DPSDK_INT32	iManagerGroupNum;							// Management group quantity
	DPSDK_GROUP_RELATION_MEM* pManagerGroupList;			//Management group list
	DPSDK_INT32 iNum;										// Device group quantity
	DPSDK_DEVICE_GROUP_MEM* pDeviceGroupList;				// Device group info list
}DPSDK_RELATION_GROUP_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iRelationGroupNum;							// Record quantity
	DPSDK_RELATION_GROUP_INFO* pRelationGroupList;			// Related group list
}DPSDK_RELATION_GROUP_LIST;

typedef struct
{
	DPSDK_CHAR szSubject[DPSDK_MEMO_LEN];					// Sending subject
	DPSDK_CHAR szContent[DPSDK_CONTENT_LEN_2048];			// Sending content
	DPSDK_INT32 iInfoType;									// Sending info type
	DPSDK_CHAR szRichTextContent[DPSDK_MESSAGERICHCONTENT_LEN];	// Sending content(rich text)
	DPSDK_BOOL bTimingSend;									// Whether or not timing send
	DPSDK_TIMET tSendTime;									// Send time
	DPSDK_BOOL bSendNow;									// Whether or not send now
	DPSDK_INT32 iRoomNum;									// Room quantity
	DPSDK_DEVICE_CODE* pRoomCodeList;						// Room code list
	DPSDK_INT32 iVthDevNum;									// VTH device quantity
	DPSDK_DEVICE_CODE* pVthDevCodeList;						// VTH device code list
}DPSDK_ADD_PUBLISH_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Major key ID
	DPSDK_CHAR szSubject[DPSDK_MEMO_LEN];					// Sending subject
	DPSDK_CHAR szContent[DPSDK_CONTENT_LEN_2048];			// Sending content
	DPSDK_CHAR szRichTextContent[DPSDK_MESSAGERICHCONTENT_LEN];	// Sending content(rich text)
	DPSDK_BOOL bTimingSend;									// Whether or not timing send
	DPSDK_TIMET tSendTime;									// Send time
	DPSDK_BOOL bSendNow;									// Whether or not send now
	DPSDK_INT32 iRoomNum;									// Room quantity
	DPSDK_DEVICE_CODE* pRoomCodeList;						// Room code list
}DPSDK_MODIFY_PUBLISH_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Record ID
	DPSDK_CHAR szInfoId[DPSDK_ID_LEN];						// Info ID
	DPSDK_CHAR szRoomNum[DPSDK_ID_LEN];						// Room no.
	DPSDK_CHAR szReason[DPSDK_MEMO_LEN];					// Reason for sending failure
	DPSDK_INT32 iStatus;									// Status
	DPSDK_TIMET tUpdateTime;								// Update time
}DPSDK_FAIL_PUBLISH_INFO;

typedef struct
{
	DPSDK_CHAR szReason[DPSDK_MEMO_LEN];					// Reason for sending failure
	DPSDK_CHAR szVthDevCode[DPSDK_DEVICE_CODE_LEN];			//  VTH device code
	DPSDK_INT32 iStatus;									// Status
}DPSDK_VTHDEV_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Major key ID
	DPSDK_INT32	iProgress;							        // progress
	DPSDK_INT32	iSuccessCount;							    // success Count
	DPSDK_INT32	iFailCount;							        // fail Count
	DPSDK_CHAR szIssuerId[DPSDK_ID_LEN];					// Issuer ID
	DPSDK_CHAR szContent[DPSDK_CONTENT_LEN];				// Sending content
	DPSDK_CHAR szSubject[DPSDK_MEMO_LEN];					// Sending subject
	DPSDK_CHAR szInfoTypeName[DPSDK_NAME_LEN];				// Info category name
	DPSDK_INT32 iStatus;									// Status
	DPSDK_INT32 iInfoType;									// Info type: notice/announcement
	DPSDK_INT32 iSendStatus;								// Sending status details
	DPSDK_TIMET tCreatTime;									// Creation time
	DPSDK_INT32 ivthDevNum;									// VTH device quantity
	DPSDK_VTHDEV_INFO* pVthDevInfoList;						// VTH device info list
}DPSDK_PUBLISH_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Major key ID
	DPSDK_CHAR szSubject[DPSDK_MEMO_LEN];					// Sending subject
	DPSDK_CHAR szContent[DPSDK_MESSAGERICHCONTENT_LEN];		// Sending content
	DPSDK_BOOL bTimingSend;									// Whether or not timing send
	DPSDK_TIMET tSendTime;									// Send time
	DPSDK_INT32 iRoomNum;									// Room quantity
	DPSDK_DEVICE_CODE* pRoomCodeList;						// Room code list
}DPSDK_PUBLISH_DETAIL_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Major key ID
	DPSDK_INT32	iSuccessCount;							    // success Count
	DPSDK_INT32	iFailCount;							        // fail Count
	DPSDK_CHAR szSubject[DPSDK_MEMO_LEN];					// Sending subject
	DPSDK_INT32 iSendStatus;								// Sending status details
	DPSDK_TIMET tSendTime;									// Send time
}DPSDK_PUBLISH_LIST_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iNum;										// Record quantity
	DPSDK_PUBLISH_LIST_INFO* pPublishInfoList;				// Issued info list
}DPSDK_PUBLISH_INFO_LIST;

typedef struct
{
	DPSDK_CHAR szReason[DPSDK_MEMO_LEN];					// Reason for sending failure
	DPSDK_CHAR szName[DPSDK_NAME_LEN];						// Detail Name
}DPSDK_PUBLISH_FAIL_INFO;

typedef struct
{
	DPSDK_INT32 iNum;										// datail quantity
	DPSDK_PUBLISH_FAIL_INFO* pFailInfoList;					// fail info list
}DPSDK_PUBLISH_FAIL_LIST;

typedef struct
{
	DPSDK_INT32 iState;										// Send state
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN_EX];				// Keyword
	DPSDK_PAGE_INFO struPageInfo;							// Page info
}DPSDK_QUERY_PUBLISHINFOLIST_PARAM;

typedef struct
{
	DPSDK_CHAR szPublishInfoId[DPSDK_ID_LEN];				//  Issued info ID
}DPSDK_PUBLISH_INFO_ID;

typedef struct
{
	DPSDK_INT32 iNum;										// Issued info quantity
	DPSDK_PUBLISH_INFO_ID struPublishInfoList[1];			// Issued info ID list
}DPSDK_PUBLISH_INFO_ID_LIST;

typedef struct
{
	DPSDK_CHAR szDevCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Major key ID
	DPSDK_CHAR szName[DPSDK_NAME_LEN];						// Device/user name
	DPSDK_INT64 iSort;										// Sequence
	DPSDK_CHAR szCallNum[DPSDK_PHONE_LEN];					// Call number
	DPSDK_INT32 iManagerType;								// Manager type (PC/mobile phone/management device)
}DPSDK_MANAGER_GROUP_MEM;

typedef struct  
{
	DPSDK_CHAR szOldMgrGroupId[DPSDK_ID_LEN];				// Original management group ID
	DPSDK_CHAR szNewMgrGroupId[DPSDK_ID_LEN];				// New management group ID
	DPSDK_INT32 iUserNum;									// User quantity
	DPSDK_PERSON_ID* pUserIdList;							// User ID list
	DPSDK_INT32 iDevNum;									// Device quantity
	DPSDK_DEVICE_CODE* pDevCodeList;						// Device code list
}DPSDK_MANAGER_GROUP_INFO;

typedef struct
{
	DPSDK_CHAR szManagerGroupId[DPSDK_ID_LEN];				// Management group ID
}DPSDK_MANAGE_GROUP_ID;

typedef struct
{
	DPSDK_INT32 iNum;										// Management group quantity
	DPSDK_MANAGE_GROUP_ID struMagerGroupList[1];			// Management group ID list
}DPSDK_MANAGE_GROUP_ID_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Major key ID
	DPSDK_CHAR szManagerGroupName[DPSDK_NAME_LEN];			// Management group name
	DPSDK_INT32 iDevNum;									// Device quantity
	DPSDK_MANAGER_GROUP_MEM* pDevInfoList;					// Device info list
	DPSDK_INT32 iUserNum;									// User quantity
	DPSDK_MANAGER_GROUP_MEM* pUserInfoList;					// User info list
}DPSDK_GET_MANAGER_GROUP_INFO;

typedef struct
{
	DPSDK_CHAR szManagerGroupName[DPSDK_NAME_LEN];			// Management group name
	DPSDK_INT32 iDevNum;									// Device quantity
	DPSDK_MANAGER_GROUP_MEM* pDevInfoList;					// Device info list
	DPSDK_INT32 iUserNum;									// User quantity
	DPSDK_MANAGER_GROUP_MEM* pUserInfoList;					// User info list
}DPSDK_ADD_MANAGER_GROUP_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iNum;										// Record quantity
	DPSDK_GET_MANAGER_GROUP_INFO* pManagerGroupList;		// Management group info list
}DPSDK_MANAGER_GROUP_INFO_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_GENERAL_ID_LIST struIdList;
}DPSDK_MANAGER_GROUP_ADD_RESULT;


// VTH device code
typedef struct
{
	DPSDK_CHAR szVthDevCode[DPSDK_DEVICE_CODE_LEN];			// VTH device code
	DPSDK_CHAR szNickName[DPSDK_NAME_LEN];					// 
	DPSDK_CHAR szPersonID[DPSDK_PERSON_ID_LEN];             // Person Id
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN];					// First name
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN];					// Last name
	DPSDK_INT32 iNickNameNum;
	DPSDK_NAME* pNickNameList;
}DPSDK_VTH_DEV_INFO;

// VTH device code
typedef struct
{
	DPSDK_INT32 iVthDevNum;									// VTH device quantity
	DPSDK_VTH_DEV_INFO* pVthDevInfo;						// VTH device info
}DPSDK_VTH_DEV_LIST;

typedef struct
{
	DPSDK_CHAR szVtoDeviceCode[DPSDK_DEVICE_CODE_LEN];		// VTO device code
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN_EX];				// Key word
	DPSDK_CHAR szStatusStr[DPSDK_TYPE_LEN];					// Status:0-Failed, 1-Success, 2-Not issued, 3-Being issued, blank means all, separated by commas, optional
}DPSDK_ISSUE_PASSWORD_PARAM;

typedef struct
{
	DPSDK_CHAR szVtoDeviceCode[DPSDK_DEVICE_CODE_LEN];		// VTO device code
	DPSDK_CHAR szVthDeviceCode[DPSDK_DEVICE_CODE_LEN];		// VTH device code
	DPSDK_CHAR szVthDeviceName[DPSDK_DEVICE_NAME_LEN];		// VTH device name
	DPSDK_CHAR szVthSipId[DPSDK_ID_LEN];					// VTH sip ID
	DPSDK_INT32 iStatus;									// Status:0-Failed, 1-Success, 2-Not issued, 3-Being issued
	DPSDK_CHAR szFailedReason[DPSDK_KEYWORD_LEN_EX];		// Failed resons
	DPSDK_BOOL bAllowRetry;									// Allow resend password:0=No,1=Yes
}DPSDK_ISSUE_PASSWORD_INFO;

typedef struct
{
	DPSDK_INT32 iIssuePwdNum;
	DPSDK_ISSUE_PASSWORD_INFO* pIssuePwdList;
}DPSDK_ISSUE_PASSWORD_LIST;

typedef struct
{
	DPSDK_INT32 iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32 iPageSize;									// Number of records on every page. Min. 1, max. 256. It is 32 by default if not filled in.
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN_EX];				// Key word, Optional
	DPSDK_CHAR szVtoDeviceCode[DPSDK_DEVICE_CODE_LEN];		// VTO device code
	DPSDK_CHAR szVthDeviceCode[DPSDK_DEVICE_CODE_LEN];		// VTH device code, Optional
	DPSDK_CHAR szStatusStr[DPSDK_TYPE_LEN];					// Status:0-Failed, 1-Success, 2-Not issued, 3-Being issued,4-begin delete, 5-delete failed, blank means all, separated by commas, optional
}DPSDK_ISSUE_CONTACT_PARAM;

typedef struct
{
	DPSDK_CHAR szVthDeviceCode[DPSDK_DEVICE_CODE_LEN];		// VTH device code
	DPSDK_CHAR szVthDeviceName[DPSDK_DEVICE_NAME_LEN];		// VTH device name
	DPSDK_CHAR szRoomNum[DPSDK_ID_LEN];						// Room no.
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN];					// First name
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN];					// Last name
	DPSDK_INT32 iNickNameNum;
	DPSDK_NAME* pNickNameList;								// Nick name list
	DPSDK_CHAR szContactName[DPSDK_NAME_LEN];				// Contact name
	DPSDK_INT32 iStatus;									// Status:0-Failed, 1-Success, 2-Not issued, 3-Being issued
	DPSDK_CHAR szFailedReason[DPSDK_KEYWORD_LEN_EX];		// Failed resons
}DPSDK_ISSUE_CONTACT_INFO;

typedef struct
{
	//DPSDK_INT32 iNextPage;									 //Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;								 //Total records
	DPSDK_INT32 iIssueContactNum;
	DPSDK_ISSUE_CONTACT_INFO* pIssueContactList;
}DPSDK_ISSUE_CONTACT_LIST;

typedef struct
{
	DPSDK_CHAR szVthDeviceCode[DPSDK_DEVICE_CODE_LEN];		// VTH device code
	DPSDK_INT32 iStatus;									// Status:0-Failed, 1-Success, 2-Not issued, 3-Being issued
	DPSDK_CHAR szFailedReason[DPSDK_DELETE_REASON];			// Issue failed reasons;
}DPSDK_VTALK_ISSUE_RESULTS;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_INT32 iType;										// Type, 1-address book, 2-private password
	DPSDK_CHAR  szVtoDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code for request media key
	DPSDK_VTALK_ISSUE_RESULTS* pIssueList;
}DPSDK_VTALK_ISSUE_COMPLETED_RESULT;


typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];			// Device code for request media key
	DPSDK_CHAR szSipId[DPSDK_MEMO_LEN];						// SIP ID
	DPSDK_INT32 iStatus;									// Status:0-Offline, 1-Online
}DPSDK_VTALK_SIP_STATUS_INFO;

typedef struct
{
	DPSDK_INT32 iSipNum;									// SIP number
	DPSDK_VTALK_SIP_STATUS_INFO* pSipList;					// SIP status list
}DPSDK_VTALK_SIP_STATUS_LIST;

// Sip ID
typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Sip id
}DPSDK_SIP_ID;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];			// Device code for request media key
	DPSDK_INT32 iNum;
	DPSDK_SIP_ID *pSipIdList;								// SIP ID List
	DPSDK_INT32 iStatus;									// Status:0-Offline, 1-Online
}DPSDK_VTALK_DEV_SIP_STATUS_INFO;

// Room list
typedef struct
{
	DPSDK_INT32 iSipNum;									// sip quantity
	DPSDK_SIP_ID* pRoomSipList;								// Room sip list
}DPSDK_SIP_ID_LIST;

typedef struct
{
	DPSDK_CHAR szRoomCode[DPSDK_DEVICE_CODE_LEN];			// Room id
	DPSDK_CHAR szSipID[DPSDK_ID_LEN];						// Vttalk SIP-ID
	DPSDK_CHAR szRoomName[DPSDK_NAME_LEN_MAX];				// Room name
	DPSDK_INT32 iPersonNum;									// App person number
	DPSDK_BOOL bHasVTH;										// Have VTH
	DPSDK_CHAR szMainVTHDeviceCode[DPSDK_DEVICE_CODE_LEN];	// Main VTH  Device Code
	DPSDK_CHAR szBindConfirmVtoCode[DPSDK_DEVICE_CODE_LEN];	// Bind Confirm Vto Device Code
}DPSDK_ROOM_BASIC_INFO;

typedef struct
{
	DPSDK_INT32 iRoomNum;									// Room number
	DPSDK_ROOM_BASIC_INFO* pRoomList;						// Room list
}DPSDK_ROOM_BASIC_INFO_LIST;

// The answer of user encrypted question
typedef struct
{
	DPSDK_INT32 iUnlockRemainTime;
	DPSDK_INT32 iUnlockRemainTimes;
	DPSDK_CHAR szRandomKey[128];
}DPSDK_USER_QUESTION_UNLOCKTIME;

typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];						// user name
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];			// E-Mail address
	DPSDK_BOOL bMailServiceReady;								// mail server is config
	DPSDK_INT32 iRetrieveWays;
	DPSDK_INT32* pRetrieveWays;									// Retrieve Ways,1=question，2=mail
}DPSDK_USER_FORGOTPWDGUIDE_INFO;

typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];						// user name
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];			// E-Mail address
}DPSDK_USER_GETVERTIFYCODE_INFO;

typedef struct  
{
	DPSDK_CHAR	szVerifyCode[DPSDK_VERTIFYCODE_LEN];			// Vertify Code
	DPSDK_USER_GETVERTIFYCODE_INFO*	pVertifyCodeInfo;								
}DPSDK_USER_CHECKVERTIFYCODE_INFO;

typedef struct
{
	DPSDK_CHAR szNewPassword[DPSDK_PWD_LEN];					//new password
	DPSDK_CHAR szVerifyCode[DPSDK_VERTIFYCODE_LEN];			    //Vertify Code
	DPSDK_USER_GETVERTIFYCODE_INFO*	pVertifyCodeInfo;
}DPSDK_USER_UPDATEPWDBYMAIL_INFO;

typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// user name
	DPSDK_CHAR szOldPassword[DPSDK_PWD_LEN];					// old password
	DPSDK_CHAR szNewPassword[DPSDK_PWD_LEN];					// new password
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];			// email
	DPSDK_INT32 iQuestionNum;									// The number of user encrypted question
	DPSDK_USER_QUESTION_ANSWER_INFO* pAnswerList;				// The list of answer
}DPSDK_USER_INITIALIZE_ACCOUNT;

typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name;
	DPSDK_CHAR szOldPassword[DPSDK_PWD_LEN];						// Old password
	DPSDK_CHAR szNewPassword[DPSDK_PWD_LEN];						// Old password
	DPSDK_CHAR szVerification[DPSDK_USER_REMARK_LEN];
}DPSDK_ACCOUNT_CHANGE_USER_PASSWORD;

//POCTalk
typedef struct
{	
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];								// Group Id
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];							// Group name
	DPSDK_USER_ID_LIST struUserIdList;								// User Id List
}DPSDK_GTALK_INFO;

typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_ID_LEN];								// User Id
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User Name
	DPSDK_INT32 iUserType;											// User Type 1:Administrator User 2:MPT User
	DPSDK_CHAR szPOCId[DPSDK_ID_LEN];								// POC Id
	DPSDK_INT32 iPOCStatus;								
}DPSDK_GTALK_USER_INFO;	

typedef struct
{
	DPSDK_GENERAL_ID_LIST struGroupList;
}DPSDK_DEL_POCTALK_GROUP_NOTIFY;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];								// Group Id
	DPSDK_INT32 iGroupStatus;										
}DPSDK_POCTALK_GROUP_STATUS_NOTIFY;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];								// Group Id
	DPSDK_CHAR szTalkingUserId[DPSDK_ID_LEN];						// Talking User Id
	DPSDK_INT32 iTalkStatus;										
}DPSDK_POCTALK_GROUP_TALK_STATUS_NOTIFY;

typedef struct
{
	DPSDK_CHAR szPOCId[DPSDK_ID_LEN];								// POC Id
	DPSDK_CHAR szPOCPassword[DPSDK_PWD_LEN];						// POC Password
	DPSDK_INT32 iTalkCapability;						//POC Talk Capability 0:no 1:yes			
}DPSDK_POCTALK_GROUP_CHANGE_USER_TALK_CAPABILITY_NOTIFY;

typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_ID_LEN];								// User Id
	DPSDK_CHAR szPOCId[DPSDK_ID_LEN];								// POC Id
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];								// Group Id
	DPSDK_INT32 iPOCStatus;										
}DPSDK_POCTALK_USER_POC_STATUS_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szUserName[DPSDK_NAME_LEN_EX];						// User name
	DPSDK_INT32 iFeatureAnalyseMode;								// Feature analzye mode 1:device 2:platform						
}DPSDK_ACUPICK_ANALYZE_MODE_NOTIFY;


typedef struct
{
	DPSDK_INT32	iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32	iPageSize;									// Number of records on every page. 
}DPSDK_GET_GROUPS_INFO;

typedef struct
{
	DPSDK_INT32			iUserInfoNum;									
	DPSDK_GTALK_USER_INFO*	pUserInfo;	
}DPSDK_GTALK_USERINFO_LIST;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];								// Group Id
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];							// Group Name
	DPSDK_CHAR szTalkingUserId[DPSDK_ID_LEN];						// Talking UUser Id
	DPSDK_BOOL bDefaultGroup;										// Is Default Group 0:No 1:Yes
	DPSDK_INT32 iGroupStatus;										// Group status 0:Normal 1:Notification (Members call the administrator when there is no online administrator in the group)
	DPSDK_GTALK_USERINFO_LIST struUserInfoList;						// User Infos
}DPSDK_GET_GTALK_GROUP_INFO;

typedef struct
{
	DPSDK_GET_GTALK_GROUP_INFO struGroupInfo;						// poc talk group info
}DPSDK_ADD_POCTALK_GROUP_NOTIFY;

typedef struct
{
	DPSDK_GET_GTALK_GROUP_INFO struGroupInfo;						// poc talk group info
}DPSDK_MODIFY_POCTALK_GROUP_NOTIFY;

typedef struct
{
	DPSDK_INT32	iTotalCount;								// Total records
	DPSDK_INT32	iNum;	
	DPSDK_GET_GTALK_GROUP_INFO* pUserGroupList;
}DPSDK_GTALK_USER_GROUP_LIST;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];			// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			// Device name
	DPSDK_INT32 iDeviceType;								// Device type
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];						// Vttalk SIP-ID
}DPSDK_VTALK_DEVICE_INFO;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Person ID
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN_MAX];			// Person name
	DPSDK_BOOL bHouseHold;									// Is household
	DPSDK_CHAR szFaceUrl[DPSDK_URL_LEN_EX];					// face url
}DPSDK_VTALK_PERSON_INFO;

typedef struct
{
	DPSDK_INT32 iDeviceNum;									// Device number
	DPSDK_VTALK_DEVICE_INFO* pDeviceList;					// Device list
	DPSDK_INT32 iPersonNum;									// Person number
	DPSDK_VTALK_PERSON_INFO* pPersonList;					// Person list
}DPSDK_VTALK_ROOM_DETAIL;

typedef struct
{
	DPSDK_CHAR szCommunityName[DPSDK_NAME_LEN];				// Community Name
	DPSDK_CHAR szNotes[DPSDK_NOTE_LEN];						// Notes for QR Code
	DPSDK_CHAR szQRCode[DPSDK_QR_CODE_LEN];					// QR Code
}DPSDK_VTALK_QRCODE_INFO;

typedef struct
{
	DPSDK_INT32	iQRCodePicLen;								
	DPSDK_CHAR*	pQRCodePicData;									//二维码图片
	DPSDK_CHAR	szRecipient[DPSDK_ALARM_EMAILRECEIVER_LEN];		//收件人邮箱地址
	DPSDK_INT32	iCodeType;
}DPSDK_VTALK_SENDEMAIL_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_DEVICE_CODE* pDevCodeList;
	DPSDK_TIMET	tStartTime;									// Timestamp start time
	DPSDK_TIMET	tEndTime;									// Timestamp end time
}DPSDK_VTALK_SIP_COUNT_CALLLOGS;

typedef struct
{
	DPSDK_CHAR szVtoDeviceCode[DPSDK_DEVICE_CODE_LEN];		// VTO device code
	DPSDK_INT32 iVthDeviceNum;
	DPSDK_DEVICE_CODE* pVthDeviceCodeList;
	DPSDK_CHAR	szPassWord[DPSDK_PWD_LEN];					// password
}DPSDK_ISSUE_PRIVATE_PASSWORD_INFO;

typedef struct
{
	//DPSDK_CHAR	szPublicKey[DPSDK_PUBLIC_KEY_LEN];			// Public key
	DPSDK_INT32 iIssuePwdNum;
	DPSDK_ISSUE_PRIVATE_PASSWORD_INFO* pIssuePwdList;
}DPSDK_BATCH_ISSUE_PASSWORD_LIST;

// 	Issue contacts to VTO
typedef struct
{
	DPSDK_INT32 iIssueMode;									// 1-issue all,2-issue selected,defaule issue select
	DPSDK_CHAR szVtoDevCode[DPSDK_DEVICE_CODE_LEN];			// VTO device code
	DPSDK_INT32 iVthDevNum;									// VTH device quantity
	DPSDK_VTH_DEV_INFO* pVthDevInfo;						// VTH device info
}DPSDK_VTO_DEV_PARAM;

//Import video intercom device parameter
typedef struct  
{
	DPSDK_INT32 iMode;										// Import mode: 0- ordinary import,with prompt of the repeatedly imported device; 1-forced import"
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];			// Server Code 
	DPSDK_INT32 iFileLen;									// File length
	DPSDK_CHAR* pDeviceFile;								// AES encryption file
}DPSDK_VIDEOINTERCOM_PARAM;

//Import video intercom device result
typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];				// Session ID
	DPSDK_INT32 iSuccessCount;								// Successful quantity
	DPSDK_INT32 iFailCount;									// Failed quantity
	DPSDK_INT32 iAddCount;									// Add quantity
	DPSDK_INT32 iUpdateCount;								// Update quantity
}DPSDK_IMPORT_RESULT;

typedef struct 
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
}DPSDK_CHANNLE_ID;

typedef struct
{
	DPSDK_INT32 iTotalCount;		// Total count
	DPSDK_INT32 iMatchCount;		// Match count
}DPSDK_EXPRESS_RECORDS_COUNT_INFO;

typedef struct  
{
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
}DPSDK_EXPORT_FILE_INFO;

typedef struct
{
	DPSDK_INT32				iCarBrand;										// Car brand
	DPSDK_INT32				iCarColor;										// Car color
	DPSDK_CHAR				szPlateNo[DPSDK_PLATE_NUMBER_LEN];				// Plate number
	DPSDK_INT32				iPlateColor;									// Plate color
	DPSDK_INT32				iCarType;										// Car type
	DPSDK_CHANNEL_ID*		pChannelIdList;
	DPSDK_INT32             iChannelIdNum;
	DPSDK_CHAR				szStartDate[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_CHAR				szEndDate[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_TIMET				tStartTime;
	DPSDK_TIMET				tEndTime;
	DPSDK_INT32				iMinSpeed;										// Min speed of car
	DPSDK_INT32				iMaxSpeed;										// Max speed of car
}DPSDK_CAR_CAPTURE_RECORD_COUNT_PARAM;

typedef struct
{
	DPSDK_CHAR				szID[DPSDK_ID_LEN];								// Section ID
	DPSDK_CHAR				szSectionName[DPSDK_NAME_LEN];					// Section name
}DPSDK_ITC_SECTION_INFO;

typedef struct
{
	DPSDK_UINT32			uiTotal;										// Section number
	DPSDK_ITC_SECTION_INFO* pSectionList;									// Section list
}DPSDK_ITC_SECTION_LIST;

typedef struct
{
	DPSDK_CHAR				szCarNum[DPSDK_ID_LEN];							// Car number
	DPSDK_INT32				iCarColor;	
}DPSDK_CAR_CTRL_PARAM;

typedef struct
{
	DPSDK_INT32				iAreasIdNum;											// Zone number
	DPSDK_ID*				pAreasIdList;										// Zone ID list
	DPSDK_INT32				iPlateColorNum;
	DPSDK_INT32*			pPlateColorList;
	DPSDK_INT32				iPeccancyTypeNum;
	DPSDK_INT32*			pPeccancyTypeList;
	DPSDK_CHAR				szPlateNo[DPSDK_PLATE_NUMBER_LEN];				// Plate number
	DPSDK_CHAR				szStartDate[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_CHAR				szEndDate[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_TIMET				tStartTime;
	DPSDK_TIMET				tEndTime;
	DPSDK_INT32				iMinSpeed;										// Min speed of car
	DPSDK_INT32				iMaxSpeed;										// Max speed of car
}DPSDK_RANGE_SPEED_ROCORD_COUNT_PARAM;

typedef struct
{
	DPSDK_CHAR				szPlateNo[DPSDK_PLATE_NUMBER_LEN];				// Plate number
	DPSDK_CHANNEL_ID*       pChannelIdList;
	DPSDK_INT32             iChannelIdNum;
	DPSDK_CHAR				szStartDate[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_CHAR				szEndDate[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_TIMET				tStartTime;
	DPSDK_TIMET				tEndTime;
	DPSDK_INT32				iMinSpeed;										// Min speed of car
	DPSDK_INT32				iMaxSpeed;										// Max speed of car
}DPSDK_SURVEY_ALARM_RECORD_COUNT_PARAM;

typedef struct
{
	DPSDK_CHAR				szPlateNo[DPSDK_PLATE_NUMBER_LEN];				// Plate number
	DPSDK_INT32				iPeccancyType;
	DPSDK_CHAR				szStartDate[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_CHAR				szEndDate[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_TIMET				tStartTime;
	DPSDK_TIMET				tEndTime;
}DPSDK_PECCANCY_ROCORD_COUNT_PARAM;

// Rectangular frame
typedef struct
{
	DPSDK_INT32			iLeftTopX;		// X-Pixel at the upper left corner
	DPSDK_INT32			iLeftTopY;		// Y-Pixel at the upper left corner
	DPSDK_INT32			iRightBottomX;	// X-Pixel at the lower right corner
	DPSDK_INT32			iRightBottomY;	// Y-Pixel at the lower right corner
}DPSDK_VIDEO_RECT;

typedef enum
{
	RECORD_ORIGINAL = 0,		// Original stream
	RECORD_AVI,					// AVI
	RECORD_ASF,					// ASF
	RECORD_ORIGINAL_SEGMENT,	// Recording the original video stream over a period of time
	RECORD_RESIZE_AVI,			// Recording and transcription resolution AVI，using resolutionScale to set width and height
	RECORD_MP4,					// MP4
	RECORD_RESIZE_MP4,			// Recording and transcription resolution MP4，using resolutionScale to set width and height
	RECORD_MP4_NOSEEK,			// Recording without rewriting MP4
	RECORD_RESIZE_MP4_NOSEEK,	// Recording and transcription resolution without rewriting MP4，using resolutionScale to set width and height
	RECORD_TS,					// TS
}DPSDK_MANUAL_RECORD_TYPE;


typedef enum
{
	MOUSE_LEFTBUTTON_CLICK = 0,		// left button click. iParam1 is defined x coordinate; iParam2 is defined y coordinate 
	MOUSE_LEFTBUTTON_RELEASE,		// left button release. iParam1 is defined x coordinate; iParam2 is defined y coordinate 
	MOUSE_MOVE,						// move. iParam1 is defined left coordinate; iParam2 is defined top coordinate. iParam3 is defined right coordinate; iParam4 is defined bottom coordinate
	MOUSE_WHEEL,					// wheel. iParam1 is defined delta;
	MOUSE_MOVE_LEFTBUTTON_CLICK,	// move with click. iParam1 is defined left coordinate; iParam2 is defined top coordinate. iParam3 is defined right coordinate; iParam4 is defined bottom coordinate
	MOUSE_LEFTBUTTON_DOUBLE_CLICK,	// left button double click. iParam1 is defined x coordinate; iParam2 is defined y coordinate 
}DPSDK_WINDOW_MOUSE_TPYE;

// Window Mouse Event
typedef struct
{
	DPSDK_INT32			iType;		// Mouse Event Type. Refer to DPSDK_WINDOW_MOUSE_TPYE definition.
	DPSDK_INT32			iParam1;	// Param 1
	DPSDK_INT32			iParam2;	// Param 2
	DPSDK_INT32			iParam3;	// Param 3
	DPSDK_INT32			iParam4;	// Param 4
}DPSDK_WINDOW_MOUSE_EVENT;

// Draw Config
typedef struct
{
	DPSDK_CHAR			szInstantPlaybackText[DPSDK_LEN_64];// Instant playback text
	DPSDK_CHAR			szLocalRecordText[DPSDK_LEN_64];	// Local record text
	DPSDK_CHAR			szRemoteRecordText[DPSDK_LEN_64];	// Remote record text
	DPSDK_CHAR			szPeopleNumText[DPSDK_LEN_64];		// Crowd density people num text
	DPSDK_CHAR			szPeopleTotalText[DPSDK_LEN_64];	// Crowd density people total text
	DPSDK_CHAR			szIvsdrawText[DPSDK_IVS_TEXT_LEN];	// IVS draw text
	DPSDK_CHAR			szCarTotalText[DPSDK_LEN_64];		// Car total text
	DPSDK_CHAR			szCarStatisticalTotalText[DPSDK_LEN_64]; // Car statistical total text
	DPSDK_CHAR			szDeviceRecordText[DPSDK_LEN_64];		// Device record text
	DPSDK_CHAR			szDeviceLocalRecordText[DPSDK_LEN_64];	// Device & local record text
	DPSDK_CHAR			szTalkingText[DPSDK_LEN_64];	// talking
	DPSDK_CHAR			szTemperMaxText[DPSDK_LEN_64];	// Highest temperature
	DPSDK_CHAR			szTemperMinText[DPSDK_LEN_64];	// Lowest temperature
	DPSDK_CHAR			szTemperAverText[DPSDK_LEN_64];	// Aver temperature
	DPSDK_INT32			ivsDrawLanguageType;			//ivs draw language type
}DPSDK_DRAW_CONFIG;

// Draw Pos Style
typedef struct
{
	DPSDK_INT32			iOverlapPattern;	// POS style
	DPSDK_INT32			iFontSize;			// Font size
	
	// Color
	DPSDK_INT32			iRed;
	DPSDK_INT32			iGreen;
	DPSDK_INT32			iBlue;

	// Position
	DPSDK_INT32			iLeft;
	DPSDK_INT32			iTop;
	DPSDK_INT32			iRight;
	DPSDK_INT32			iBottom;

	DPSDK_INT32			iBGMargin;			// background margin
	DPSDK_INT32			iBGTransparency;	// background transparency
}DPSDK_POS_STYLE;

typedef enum 
{
	DRAW_SELECTFRAME_FILLNONE = 0, //绘制矩形中间不填充
	DRAW_SELECTFRAME_FILL,	       //矩形中间填充颜色
}DPSDK_SelectFrame_Type;

typedef enum
{
	RULE_POINT	= 0,
	RULE_LINE,
	RULE_RECTANGLE,
	RULE_POLYGON,
}DPSDK_RULE_TYPE;

typedef struct
{
	DPSDK_INT32 iRuleType;				// DPSDK_RULE_TYPE
	DPSDK_INT32 iPointNum;
	DPSDK_POINT* pPointList;
}DPSDK_RULE_INFO;

// Video analysis
typedef enum
{
	VIDEO_ANALYSIS_START = 0,										//Start analysis
	VIDEO_ANALYSIS_STOP,											//Stop analysis
	VIDEO_ANALYSIS_CURVE_TYPE,										//Change overlay curve type
	VIDEO_ANALYSIS_EXPORT_REPORT,									//Export analysis report
}DPSDK_VIDEO_ANALYSIS_OPERATE_TYPE;

typedef struct
{
	DPSDK_INT32	iOperateType;										// Operate type see DPSDK_VIDEO_ANALYSIS_OPERATE_TYPE
	HCWND		pHWnd;												// Window handle
	DPSDK_CHAR	szParam[DPSDK_FILE_PATH_LEN];						// Function param
}DPSDK_VIDEO_ANALYSIS_PARAM;

typedef struct
{
	DPSDK_CHAR		szKey[DPSDK_MAX_URL_HEADER_KEY_LEN];		// header key
	DPSDK_INT32		iKeyLength;									// length of key
	DPSDK_CHAR		szValue[DPSDK_MAX_URL_HEADER_VALUE_LEN];	// header value
	DPSDK_INT32		iValueLength;								// length of value

}DPSDK_REQUEST_HEADER;

typedef DPSDK_REQUEST_HEADER DPSDK_RESPONSE_HEADER ;

//common request
typedef struct
{
	DPSDK_CHAR*					pBuf;									// data pointer
	DPSDK_LONG					lSize;									// data size
	DPSDK_CHAR					szMethod[DPSDK__URL_METHOD_LEN];		// method
	DPSDK_CHAR					szUrl[DPSDK_MAX_URL_STR_LEN];			// request url
	DPSDK_UINT32				uiHeaderListSize;						// number of header list
	DPSDK_REQUEST_HEADER*		pHeaderList;							// list of header	
	DPSDK_INT32					iReqTimeOut;							// request time out
}DPSDK_GENERALTRANSPORT_REQUEST;

//common response
typedef struct
{
	DPSDK_CHAR					szCode[DPSDK_MAX_URL_CODE_LEN];			// response code
	DPSDK_CHAR*					pBuf;									// data pointer
	DPSDK_LONG					lSize;									// data size
	DPSDK_UINT32				uiHeaderListSize;						// number of header list
	DPSDK_RESPONSE_HEADER*		pHeaderList;							// list of header

}DPSDK_GENERALTRANSPORT_RESPONSE;

//plugin info
typedef struct
{
	DPSDK_CHAR					szType[DPSDK_PLUGIN_TYPE_LEN];			//plugin type
	DPSDK_CHAR					szDownloadUrl[DPSDK_MAX_URL_STR_LEN];	// download url
	DPSDK_CHAR					szVersion[DPSDK_IN32_LEN];				// plugin version
}DPSDK_CLIENT_PLUGIN_INFO;

//plugin list
typedef struct
{
	DPSDK_CLIENT_PLUGIN_INFO*	pPluginList;								//plugin list
	DPSDK_INT32					iCount;										// list size
}DPSDK_PLUGIN_LIST;

//update version info
typedef struct
{
	DPSDK_CHAR					szUpdateInfo[DPSDK_MAX_URL_STR_LEN];	// update info
	DPSDK_CHAR					szUpdateUrl[DPSDK_MAX_URL_STR_LEN];		// update url
	DPSDK_CHAR					szLastVersion[DPSDK_IN32_LEN];			// last version
}DPSDK_CLIENT_VERSION_INFO;

// ICC-N: rcs token update info
typedef struct  
{
	DPSDK_BOOL					bStatus;
	DPSDK_CHAR					szToken[DPSDK_TOKEN_LENGTH];
	DPSDK_CHAR					szIP[DPSDK_IP_LEN];
	DPSDK_UINT32				uiPort;
	DPSDK_CHAR					szUserName[DPSDK_NAME_LEN];
	DPSDK_CHAR					szProtocol[DPSDK_PROTOCOL_LENGTH];
}DPSDK_RCSTOKEN_INFO;

typedef struct  
{
	DPSDK_BOOL					bStatus;
	DPSDK_CHAR					szToken[DPSDK_TOKEN_LENGTH];
	DPSDK_CHAR					szIP[DPSDK_IP_LEN];
	DPSDK_UINT32				uiPort;
	DPSDK_CHAR					szExtIP[DPSDK_IP_LEN];
	DPSDK_UINT32				uiExtPort;
	DPSDK_CHAR					szUserName[DPSDK_NAME_LEN];
	DPSDK_CHAR					szProtocol[DPSDK_PROTOCOL_LENGTH];
}DPSDK_RCSTOKEN_INFO_2;

// org code
typedef struct
{
	DPSDK_CHAR szId[DPSDK_ORG_CODE_LEN];													// org id
}DPSDK_ORG_ID;

typedef struct
{
	DPSDK_UINT32		uObjectSize;													//	size of truct
	DPSDK_CHAR	szResourceId[DPSDK_CHANNEL_ID_LEN];								//	channel code
	DPSDK_CHAR	szResourceName[DPSDK_CHANNEL_ID_LEN];								//	channel name
	DPSDK_CHAR	szOrgName[DPSDK_NAME_LEN_EX];											//	Organization name
	DPSDK_CHAR	szOrgCode[DPSDK_ORG_CODE_LEN];											//	Organization code
	DPSDK_INT32	iType;																	//
	DPSDK_CHAR	szDeviceName[DPSDK_NAME_LEN_EX];										//	device name
	DPSDK_INT32	iResourceType;															//
}DPSDK_WINGCARD_BINDINGRESOURCE_COMPATIBLE;

typedef DPSDK_WINGCARD_BINDINGRESOURCE_COMPATIBLE DPSDK_BINDINGRESOURCE;

typedef struct
{
	DPSDK_CHAR					szPersonName[DPSDK_NAME_LEN_EX];					//	persion name
	DPSDK_CHAR					szPersonCode[DPSDK_ID_LEN];							//	persion id
	DPSDK_CHAR					szCardNumber[DPSDK_ID_LEN];							//	card number 
	DPSDK_CHAR					szDepartmentName[DPSDK_NAME_LEN];					//  Department name
	DPSDK_CHAR					szFaceUrl[DPSDK_MAX_URL_HEADER_VALUE_LEN];			//  face url
}DPSDK_REMOTECHECK_SWINGCARD_PERSON_INFO;

typedef struct
{
	DPSDK_UINT32				uObjectSize;													//	size of truct
	DPSDK_INT64					iId;															//	record id
	DPSDK_CHAR					szPersonCode[DPSDK_ID_LEN];										//	persion id
	DPSDK_CHAR					szPersonName[DPSDK_NAME_LEN_EX];								//	persion name
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];							//	Channel ID
	DPSDK_CHAR					szChannelName[DPSDK_CHANNEL_NAME_LEN];							//	Channel name
	DPSDK_INT32					iChannelNum;													//	channel number
	DPSDK_CHAR					szDeviceId[DPSDK_DEVICE_ID_LEN];							//	Device ID
	DPSDK_CHAR					szDeviceName[DPSDK_DEVICE_NAME_LEN];						//	Device name
	DPSDK_INT32					iEnterOrExit;													//	1:enter 2:out 3:enter or out
	DPSDK_LONG					iSwingTime;														//	swing time
	DPSDK_INT32					iOpenType;														//	open type
	DPSDK_CHAR					szCardNumber[DPSDK_ID_LEN];										//	card number 
	DPSDK_INT32					iOpenResult;													//	open door result 
	DPSDK_INT32					iSourceNumber;													//	pBindingSource count
	DPSDK_BINDINGRESOURCE*		pBindingSource;													//	binding source
	DPSDK_INT32					iRemoteCheckPopup;												//  remote poup if enable 
	DPSDK_INT32					iRemoteCheckSound;												//  remote sound check if enable
	DPSDK_REMOTECHECK_SWINGCARD_PERSON_INFO* pPersonGroup;										//  person group
	DPSDK_INT32					iPersonNums;													//	person nums
	DPSDK_CHAR					szOrgName[DPSDK_ORG_NAME_LEN];									//  org name
}DPSDK_REMOTECHECK_SWINGCARD_NOTIFY_COMPATIBLE;

typedef struct
{
	DPSDK_UINT32				uObjectSize;													//	size of truct
	DPSDK_INT64					iId;															//	record card id
	DPSDK_INT32					iResult;														//	open door result 
}DPSDK_REMOTECHECK_SWINGCARD_RESULT_NOTIFY;

typedef struct  
{
	DPSDK_DOUBLE	fBeginTime;							// Start time
	DPSDK_DOUBLE	fEndTime;							// End time
	DPSDK_PLAYBACK_SPEED	iSpeed;						// Playback speed
}DPSDK_PLAYBACK_SEEK_PARAM_Ex;

typedef struct
{
	DPSDK_CHAR								szChannelCode[DPSDK_NAME_LEN_EX];
}DPSDK_VIDEO_COMPRESS_DEVICE;

typedef struct
{
	DPSDK_CHAR								szDeviceCode[DPSDK_NAME_LEN_EX];
	DPSDK_INT32								iDeviceNums;
	DPSDK_VIDEO_COMPRESS_DEVICE*			pDeviceList;
}DPSDK_VIDEO_COMPRESS_INFO;

typedef struct 
{
	DPSDK_CHAR								szLocalIP[DPSDK_IP_LEN];
}DPSDK_LOCAL_IP_INFO;

typedef struct
{
	DPSDK_CHAR								szProductVersion[DPSDK_URL_LENGTH_EX];		//Product Version
	DPSDK_CHAR								szPlatformVersion[DPSDK_URL_LENGTH_EX];		//Platform Version
}DPSDK_GET_PRODUCT_INFO;

typedef struct
{
	DPSDK_CHAR								szProductName[DPSDK_IN128_LEN];		//Platform Name
	DPSDK_CHAR								szTimeZone[DPSDK_IN64_LEN];			//TimeZone
	DPSDK_CHAR								szTimeDiff[DPSDK_IN64_LEN];			//TimeDiff
	DPSDK_CHAR								szOversea[DPSDK_IN32_LEN];			//isOverSea
}DPSDK_GET_OVERSEA_PLATFORMINFO;

typedef struct
{
	DPSDK_INT32		iTimeOutReqOrgOrDevice;		//org or device request out of time
	DPSDK_INT32		iTimeOutReqByLayered;		//org or device request by layered out of time
	DPSDK_INT32		iTimeOutPlayUrlReq;			//reques play url out of time
	DPSDK_INT32		iTimeOutRealRtsp;			//real rtsp request out of time
	DPSDK_INT32		iTimeOutPlayBackRtsp;		//play back rtsp request out of time
	DPSDK_INT32		iTimeOutTalkRtsp;			//talk rtsp request out of time
	DPSDK_INT32		iTimeOutCommon;				//common request  out of time
	DPSDK_INT32		iTimeOutLongCommon;			//common long request  out of time
	DPSDK_INT32		iTimeOutExportAlarm;		//export alarm out of time
	DPSDK_INT32		iTimeOutQueryAlarm;			//query alarm out of time
	DPSDK_INT32		iTimeOutQueryRecord;		//query record out of time
	DPSDK_INT32		iTimeOutVtCall;				//vt call out of time
	DPSDK_INT32		iRtspThreadWaitTime;		//rtsp thread start wait time
	DPSDK_INT32		iTimeOutGeneralJson;		//general json out of time
	DPSDK_INT32		iTimeDownloadNoStream;		//Dload no stream
}DPSDK_TIMEOUTREQ_CONFIG;

typedef struct  
{
	union
	{
		DPSDK_DOWNLOAD_BY_TIME_PARAM stuTimeParam;
		DPSDK_DOWNLOAD_BY_FILE_PARAM stuFileParam;
	};
	DPSDK_INT32						iDownloadMode;						// 0：按时间下载 1：按文件下载
	DPSDK_CHAR						szURL[DPSDK_URL_LEN];				// RTSP URL
	DPSDK_UINT64					uTotalSize;
}DPSDK_DOWNLOAD_BY_RTSPURL_PARAM;

// OSD信息
typedef struct{
	int	x;							// 旋转点像素x位置
	int	y;							// 旋转点像素y位置
	unsigned int	r;				// osd叠加颜色r，范围0-255
	unsigned int	g;				// osd叠加颜色g，范围0-255
	unsigned int	b;				// osd叠加颜色b，范围0-255
	unsigned int	alpha;			// osd叠加透明度，范围0-255
	char			szOsdData[512];	// osd数据，使用utf-8编码
	unsigned int	fontX;			// 字体宽度, 使用大华字体时无效
	unsigned int	fontY;			// 字体高度, 最大512
	unsigned int	rotateAngle;	// 旋转角度，范围0-359度
	char			reserved[16];	// 保留字段
} OSD_INFO_VAX_PARAM;

// OSD列表
typedef struct{
	bool			bDahuaFont;		// 是否是大华字体
	char			fontPath[256];	// 字体文件位置
	unsigned int	osdCount;		// OSD叠加数量，最多32个
	OSD_INFO_VAX_PARAM	osdList[32];	// OSD列表
	char			reserved[64];	// 保留字段
}YUV_OSD_INFO_EX_PARAM;

typedef struct {
	DPSDK_UINT32	iFontSize;		//字体大小(非GDI方式绘字必填),取值范围(0,255]
	DPSDK_UINT32	iFontWidth;		//字体平均宽度(非GDI方式暂不支持)
	DPSDK_UINT32	iFontHeight;	//行高(非GDI方式表示字体上沿到行上边界的间距)
	DPSDK_UINT32	iFontWeight;	//字体字重(GDI方式绘字用到,非GDI该参数无效)
	DPSDK_UINT32	iRotateAngle;	//字体方向，单位为角度制
	//要绘制的osd的左上角顶点位置,基于8192坐标系
	DPSDK_INT32		x;
	DPSDK_INT32		y;
	DPSDK_INT32		z;				//仅3D情形下使用
	DPSDK_UINT32	r;				//osd叠加颜色r，范围0-255
	DPSDK_UINT32	g;				//osd叠加颜色g，范围0-255
	DPSDK_UINT32	b;				//osd叠加颜色b，范围0-255
	DPSDK_UINT32	iAlpha;			//osd叠加透明度，范围0-255
	DPSDK_CHAR		szOsdData[DPSDK_CHANNEL_WATER_INFO_LEN];	// osd数据，使用utf-8编码，字符串必须以'\0'为结尾
	DPSDK_CHAR		szReserved[20];						// 保留字段
}DPSDK_RENDER_OSD_DATA_INFO;

typedef struct {
	DPSDK_RENDER_OSD_DATA_INFO osdList[32];
	DPSDK_CHAR		szFontPath[DPSDK_DAHUAFONT_PATH_LEN];//自定义字体类型下的字体文件路径
	DPSDK_UINT32	iCount;
	DPSDK_USHORT	iHorizontalSpacing;					//铺满模式横向间距，字符串外围框的间距
	DPSDK_USHORT	iVerticalSpacing;					//铺满模式纵向间距
	DPSDK_BOOL		bScreenFilled;						//是否为铺满模式,铺满模式由播放库计算osd坐标，上层不用传
	DPSDK_CHAR		szReserved[15];						// 保留字段
}DPSDK_RENDER_OSD_INFO_EX;

typedef enum 
{
	DPSDK_DATA_RECORD_ORIGINAL = 0,     // 录制原始视频流
	DPSDK_DATA_RECORD_AVI,              // 录制AVI
	DPSDK_DATA_RECORD_ASF,              // 录制ASF  
	DPSDK_DATA_RECORD_ORIGINAL_SEGMENT, // 录制分段的原始视频流（废弃，分段下载请使用startDataRecordEx接口）
	DPSDK_DATA_RECORD_RESIZE_AVI,       // 录制转变分辨率的AVI，使用resolutionScale设置宽高
	DPSDK_DATA_RECORD_MP4,              // 录制MP4
	DPSDK_DATA_RECORD_RESIZE_MP4,       // 录制转变分辨率的MP4，使用resolutionScale设置宽高
	DPSDK_DATA_RECORD_MP4_NOSEEK,       // 录制不回写MP4 
	DPSDK_DATA_RECORD_RESIZE_MP4_NOSEEK,// 录制转变分辨率的不回写MP4，使用resolutionScale设置宽高
	DPSDK_DATA_RECORD_TS,               // 录制TS
	DPSDK_DATA_RECORD_PS,               // 标准PS封装
	DPSDK_DATA_RECORD_RESIZE_DAV,       // 录制DAV(需要重新编解码) 
	DPSDK_DATA_RECORD_DAV,               // 录制DAV(不需要重新编解码)
	DPSDK_DATA_RECORD_AAC,              // 录制AAC(纯音频场景)
	DPSDK_DATA_RECORD_WAV,              // 录制WAV(纯音频场景)
	DPSDK_DATA_RECORD_FLV,              // 录制FLV
}DPSDK_FILE_TYPE;

//对象信息
typedef struct 
{
	DPSDK_INT32	 iX;
	DPSDK_INT32	 iY;
	DPSDK_INT32	 iWidth;
	DPSDK_INT32  iHeight;
	DPSDK_INT32	 iClassID;
	DPSDK_INT32	 iObjID;
	DPSDK_INT32	 iOperatorType;
	DPSDK_INT32	 iObjType;
	DPSDK_INT32	 iDstObjectType;
}DPSDK_IVSOBJECTINFO;

typedef struct
{
	DPSDK_INT32 iObjectNum;
	DPSDK_IVSOBJECTINFO* pObjectInfo;
}DPSDK_IVSOBJECTLIST;

//配置跟踪方式
typedef enum
{
	DPSDK_IVS_CONFIG_TRACK_ALL,						//所有跟踪目标
	DPSDK_IVS_CONFIG_TRACK_BY_ID,						//目标名称，objID+objClass必填
	DPSDK_IVS_CONFIG_TRACK_BY_TYPE,					//目标类型
	DPSDK_IVS_CONFIG_TRACK_BY_ALGORITHMID,			//算法方案ID
}DPSDK_IVS_CONFIG_TRACK_FLAG;

//线条属性，可同时配置
typedef enum
{
	DPSDK_IVS_LINE_COLOR = 1 << 0,				//颜色
	DPSDK_IVS_LINE_WIDTH = 1 << 1,				//线宽
	DPSDK_IVS_LINE_STYLE = 1 << 2,				//线型
	DPSDK_IVS_LINE_BOXSTYLE = 1 << 3,				//跟踪框样式
	DPSDK_IVS_LINE_BOXTAIL = 1 << 4,				//跟踪框尾巴样式
	DPSDK_IVS_LINE_HIDETAIL = 1 << 5,				//隐藏尾巴
}DPSDK_IVS_LINE_ATTRIBUTE_FLAG;

typedef struct 
{
	DPSDK_INT32 iAttrFlag;					//DPSDK_IVS_LINE_ATTRIBUTE_FLAG
	DPSDK_INT32 iTrackFlag;				//DPSDK_IVS_CONFIG_TRACK_FLAG
	DPSDK_INT32 iBoxTail;					// 0-line  1-box
}DPSDK_OBJTRAJECTORYDISPLAY_REQ;

typedef struct
{
	DPSDK_CHAR*					pPicturePath;
	HCWND						pHWnd;
	DPSDK_UCHAR*				pPicData;
	DPSDK_INT32					iPicDataLen;
	DPSDK_UCHAR*				pEventData;
	DPSDK_INT32					iDataLen;
	DPSDK_INT32					iWidth;
	DPSDK_INT32					iHeight;
}DPSDK_DRAW_IVS_PICTURE_PARAM;

typedef struct
{
	DPSDK_CHAR				szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_CHAR				szPOSChnlId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32				iPOSDataLen;
	DPSDK_CHAR				*pPOSData;
	DPSDK_TIMET				lPostTime;
}DPSDK_POS_DATA_NOTIFY;

typedef struct
{
	DPSDK_INT32 iEventType;
	DPSDK_CHAR szPosId[DPSDK_IN64_LEN];
	DPSDK_INT32 iEventTime;
	DPSDK_CHAR	szEmployeeID[DPSDK_IN128_LEN];
	DPSDK_INT32	iProductPosition;
	DPSDK_CHAR szProductId[DPSDK_IN128_LEN];
	DPSDK_CHAR szProductBarCode[DPSDK_IN128_LEN];
	DPSDK_CHAR szProductName[DPSDK_IN128_LEN];
	DPSDK_CHAR szProductPrice[DPSDK_IN64_LEN];
	DPSDK_CHAR szProductDiscount[DPSDK_IN64_LEN];
	DPSDK_CHAR szProductQuantity[DPSDK_IN64_LEN];
	DPSDK_CHAR szProductAmount[DPSDK_IN64_LEN];
	DPSDK_CHAR szReceiptAmount[DPSDK_IN64_LEN];
	DPSDK_CHAR szReceiptDiscount[DPSDK_IN64_LEN];
	DPSDK_CHAR szReceiptPayment[DPSDK_IN64_LEN];
	DPSDK_CHAR szReceiptRefund[DPSDK_IN64_LEN];
	DPSDK_CHAR szReceiptChange[DPSDK_IN64_LEN];
	DPSDK_CHAR szCardNumber[DPSDK_IN128_LEN];
	DPSDK_CHAR szFinaliseExchangeAmount[DPSDK_IN64_LEN];
	DPSDK_CHAR szOldPrice[DPSDK_IN64_LEN];
	DPSDK_CHAR szOldValue[DPSDK_IN64_LEN];
	DPSDK_CHAR szOriginalReceipt[DPSDK_IN128_LEN];
	DPSDK_CHAR szRequestDiscount[DPSDK_IN64_LEN];
	DPSDK_CHAR szRequestedDecrease[DPSDK_IN64_LEN];
	DPSDK_CHAR szRequestedIncrease[DPSDK_IN64_LEN];
	DPSDK_CHAR szRequestedOldPrice[DPSDK_IN64_LEN];
	DPSDK_CHAR szRequestedNewPrice[DPSDK_IN64_LEN];
	DPSDK_CHAR szReturnedQuantity[DPSDK_IN64_LEN];
	DPSDK_CHAR szSelectDiscount[DPSDK_IN64_LEN];
	DPSDK_CHAR szWriteOffAmount[DPSDK_IN64_LEN];
	DPSDK_CHAR szRepaymentAmount[DPSDK_IN64_LEN];
	DPSDK_CHAR szTotalSales[DPSDK_IN64_LEN];
	DPSDK_CHAR szPrintStatus[DPSDK_IN64_LEN];
	DPSDK_CHAR szPrintId[DPSDK_IN64_LEN];
	DPSDK_CHAR szReason[DPSDK_IN128_LEN];
	DPSDK_CHAR szLoginStatus[DPSDK_IN64_LEN];
	DPSDK_CHAR szRemark[DPSDK_IN128_LEN];
	DPSDK_CHAR szReportDetails[DPSDK_IN128_LEN];
}DPSDK_POS_EVENT_RECORD;
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szOperationId[DPSDK_IN128_LEN];
	DPSDK_POS_EVENT_RECORD* pPosEventRecords;
}DPSDK_POS_DATA_NOTIFYEX;

typedef struct
{
	DPSDK_POS_DATA_NOTIFYEX* stuPosEvent;
	DPSDK_INT32 iEventCount;
	DPSDK_INT32 iRecordCount;
}DPSDK_POS_EVENT;

// Get the preset point information
typedef struct
{
	DPSDK_CHAR				szTrailName[DPSDK_PRESETTRAILS_NAME_LEN];	// Preset trails name
	DPSDK_CHAR				szTrailsCode[DPSDK_PRESETTRAILS_CODE_LEN];	// 
	DPSDK_INT32				iPointType;									// Preset point type,0=Ordinary preset point,1=Preset points that have been set for intelligent rules
}DPSDK_PTZ_PRESETTRAILS_INFO;

// Get a list of preset trails
typedef struct
{
	DPSDK_UINT32			uiTotal;									// Total
	DPSDK_PTZ_PRESETTRAILS_INFO struPresetTrailsInfo[1];					// Preset trails list
}DPSDK_PTZ_PRESETRAILS_LIST;

typedef struct
{
	DPSDK_CHAR		szFilePath[DPSDK_FILE_PATH_LEN];
}DPSDK_DECRYPTFILE;

// Mosaic model
typedef enum
{
	DPSDK_MOSAIC_OFF = 0,	// Stop processing mosaics
	DPSDK_MOSAIC_ADJUST = 1,	// Mosaic position adjustment, suitable for real-time adjustment of changing mosaic position
	DPSDK_MOSAIC_TANSFER = 2,	// Mosaic transcription, suitable for code stream transcription, can not be rendered
}DPSDK_MOSAIC_MODE;

// Mosaic region
typedef struct
{
	DPSDK_INT32			iMosaicType;	// Mosaic type,define mosaic fuzzy level,input is positive integer,approximate hight is fuzzy
	DPSDK_INT32			iRegionNum;		// Mosaic rectangular frame number
	DPSDK_VIDEO_RECT	videoRects[32];	// Mosaic rectangular frame
}DPSDK_MOSAIC_REGION;

/**
* @brief	Mosaic rectangular box information acquisition interface
* @param	[OUT] iMediaSessionID	Media session ID
* @param	[OUT] iFrameId	Frame Id
* @param	[OUT] pMosicRegion	Mosaic region
* @param	[OUT] pUserData	User Data
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_MOSAIC_REGIONINFO)(DPSDK_INT32 iMediaSessionID,
	DPSDK_INT32 iFrameId,
	DPSDK_MOSAIC_REGION* pMosicRegion,
	DPSDK_LPVOID pUserData);

typedef struct
{
	DPSDK_CHAR szTimezoneId[DPSDK_TIME_ZONE_LEN];					// Timezone offset, e.g. +08:00
}DPSDK_TIME_ZONE_INFO;

typedef struct
{
	DPSDK_INT32 iUsedHttps;							//0: not use 1:use
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];			//File download URL
	DPSDK_CHAR  szLocalFilePath[DPSDK_FILE_PATH_LEN];
}DPSDK_GETFILE_PARAM;

#endif // _DPSDK_DPSDKDEFINE_H_
