HikVisionSdk.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. ///////////////////////////////////////////////////////////////////////////
  2. // HIKVISION DS-40xxHC/HF BOARD SYSTEM SDK //
  3. // Copyright (c) 2002-2008 Hangzhou Hikvision digtial technology co,. ltd//
  4. ///////////////////////////////////////////////////////////////////////////
  5. #ifndef HIKVISION_SDK_H
  6. #define HIKVISION_SDK_H
  7. #include "datatype.h"
  8. #define DLLEXPORT_API extern "C"__declspec(dllexport)
  9. #define ERR_WAIT_TIMEOUT 0xc0000001
  10. #define ERR_INVALID_HANDLE 0xc0000002
  11. #define ERR_INVALID_ARGUMENT 0xc0000003
  12. #define ERR_DDRAW_CREATE_FAILED 0xc0000004
  13. #define ERR_DDRAW_CAPS_FAULT 0xc0000005
  14. #define ERR_SET_COOPERATIVELEVEL_FAILED 0xc0000006
  15. #define ERR_PRIMARY_SURFACE_CREATE_FAILED 0xc0000007
  16. #define ERR_GET_OVERLAY_ADDRESS_FAILED 0xc0000008
  17. #define ERR_OVERLAY_SURFACE_CREATE_FAILED 0xc0000009
  18. #define ERR_OVERLAY_UPDATE_FAILED 0xc000000a
  19. #define ERR_TMMAN_FAILURE 0xc000000b
  20. #define ERR_CHANNELMAGIC_MISMATCH 0xc000000c
  21. #define ERR_CALLBACK_REGISTERED 0xc000000d
  22. #define ERR_QUEUE_OVERFLOW 0xc000000e
  23. #define ERR_STREAM_THREAD_FAILURE 0xc000000f
  24. #define ERR_THREAD_STOP_ERROR 0xc0000010
  25. #define ERR_NOT_SUPPORT 0xc0000011
  26. #define ERR_OUTOF_MEMORY 0xc0000012
  27. #define ERR_DSP_BUSY 0xc0000013
  28. #define ERR_DATA_ERROR 0xc0000014
  29. #define ERR_KERNEL 0xc0000016
  30. #define ERR_OFFSCREEN_CREATE_FAILED 0xc0000017
  31. #define ERR_MULTICLOCK_FAILURE 0xc0000018
  32. #define ERR_INVALID_DEVICE 0xc0000019
  33. #define ERR_INVALID_DRIVER 0xc000001a
  34. //error code for MD card
  35. #define HWERR_SUCCESS 0
  36. #define HWERR_ALLOCATE_MEMORY 0xc1000001
  37. #define HWERR_INVALID_HANDLE 0xc1000002
  38. #define HWERR_DDRAW_CREATE_FAILED 0xc1000003
  39. #define HWERR_DDRAW_CAPS_FAULT 0xc1000004
  40. #define HWERR_SET_COOPERATIVELEVEL_FAILED 0xc1000005
  41. #define HWERR_PRIMARY_SURFACE_CREATE_FAILED 0xc1000006
  42. #define HWERR_OVERLAY_CREATE_FAILED 0xc1000007
  43. #define HWERR_GET_OVERLAY_ADDRESS_FAILED 0xc1000008
  44. #define HWERR_OVERLAY_UPDATE_FAILED 0xc1000009
  45. #define HWERR_SURFACE_NULL 0xc100000a
  46. #define HWERR_FILEHEADER_UNKNOWN 0xc100000b
  47. #define HWERR_CREATE_FILE_FAILED 0xc100000c
  48. #define HWERR_FILE_SIZE_ZERO 0xc100000d
  49. #define HWERR_FILE_SIZE_INVALID 0xc100000d
  50. #define HWERR_CREATE_OBJ_FAILED 0xc100000e
  51. #define HWERR_CHANNELMAGIC_MISMATCH 0xc100000f
  52. #define HWERR_PARA_OVER 0xc1000010
  53. #define HWERR_ORDER 0xc1000011
  54. #define HWERR_COMMAND 0xc1000012
  55. #define HWERR_UNSUPPORTED 0xc1000013
  56. #define HWERR_DSPOPEN 0xc1000014
  57. #define HWERR_DSPLOAD 0xc1000015
  58. #define HWERR_ALLOCATE_DSPMEMORY 0xc1000016
  59. #define HWERR_DSPCHECHER 0xc1000017
  60. #define HWERR_IMGFILE_UNKNOWN 0xc1000018
  61. #define HWERR_INVALID_FILE 0xc1000019
  62. //standart
  63. #define HW_PAL 2
  64. #define HW_NTSC 1
  65. //jump direction
  66. #define HW_JUMP_FORWARD 309
  67. #define HW_JUMP_BACKWARD 310
  68. typedef enum {
  69. vdfRGB8A_233 = 0x00000001,
  70. vdfRGB8R_332 = 0x00000002,
  71. vdfRGB15Alpha = 0x00000004,
  72. vdfRGB16 = 0x00000008,
  73. vdfRGB24 = 0x00000010,
  74. vdfRGB24Alpha = 0x00000020,
  75. vdfYUV420Planar = 0x00000040,
  76. vdfYUV422Planar = 0x00000080,
  77. vdfYUV411Planar = 0x00000100,
  78. vdfYUV420Interspersed = 0x00000200,
  79. vdfYUV422Interspersed = 0x00000400,
  80. vdfYUV411Interspersed = 0x00000800,
  81. vdfYUV422Sequence = 0x00001000, /* U0, Y0, V0, Y1: For VO overlay */
  82. vdfYUV422SequenceAlpha = 0x00002000,
  83. /* U0, Y0, V0, Y1: For VO overlay, with low bit for alpha blending */
  84. vdfMono = 0x00004000, /* 8 bit monochrome */
  85. vdfYUV444Planar = 0x00008000,
  86. }TypeVideoFormat;
  87. typedef enum {
  88. brCBR = 0,
  89. brVBR = 1,
  90. }BitrateControlType_t;
  91. typedef enum {
  92. DS400XM =0, //M卡
  93. DS400XH =1, //H卡
  94. DS4004HC =2, //4004HC
  95. DS4008HC =3, //4008HC
  96. DS4016HC =4, //4016HC
  97. DS4001HF =5, //4001HF
  98. DS4004HF =6, //4004HF
  99. DS4002MD =7, //4002MD
  100. DS4004MD =8, //4004MD
  101. DS4016HCS =9, //4016HCS
  102. DS4002HT =10, //4002HT
  103. DS4004HT =11, //4004HT
  104. DS4008HT =12, //4008HT
  105. DS4004HC_PLUS =13, //4004HC+
  106. DS4008HC_PLUS =14, //4008HC+
  107. DS4016HC_PLUS =15, //4016HC+
  108. DS4008HF =16, //4008HF
  109. DS4008MD =17, //4008MD
  110. DS4008HS =18, //4008HS
  111. DS4016HS =19, //4016HS
  112. INVALID_BOARD_TYPE =0xffffffff,
  113. }BOARD_TYPE_DS;
  114. #define STREAM_TYPE_VIDEO 1
  115. #define STREAM_TYPE_AUDIO 2
  116. #define STREAM_TYPE_AVSYNC 3
  117. #define DRAWFUN(x) void (CALLBACK* x)(long nPort,HDC hDc,LONG nUser)
  118. typedef void (*LOGRECORD_CALLBACK)(char *str, void *context);
  119. typedef int (*STREAM_READ_CALLBACK)(ULONG channelNumber, void *context);
  120. typedef int (*STREAM_DIRECT_READ_CALLBACK)(ULONG channelNumber,void *DataBuf,DWORD Length,int FrameType,void *context);
  121. typedef struct tagChannelCapability{
  122. UCHAR bAudioPreview;
  123. UCHAR bAlarmIO;
  124. UCHAR bWatchDog;
  125. }CHANNEL_CAPABILITY, *PCHANNEL_CAPABILITY;
  126. typedef struct tagFramsStatistics{
  127. ULONG VideoFrames;
  128. ULONG AudioFrames;
  129. ULONG FramesLost;
  130. ULONG QueueOverflow;
  131. ULONG CurBps;
  132. }FRAMES_STATISTICS, *PFRAMES_STATISTICS;
  133. DLLEXPORT_API int __stdcall InitDSPs();
  134. DLLEXPORT_API int __stdcall DeInitDSPs();
  135. DLLEXPORT_API HANDLE __stdcall ChannelOpen(int ChannelNum);
  136. DLLEXPORT_API int __stdcall ChannelClose(HANDLE hChannelHandle);
  137. DLLEXPORT_API int __stdcall GetTotalChannels();
  138. DLLEXPORT_API int __stdcall GetTotalDSPs();
  139. DLLEXPORT_API int __stdcall StartVideoPreview(HANDLE hChannelHandle,HWND WndHandle, RECT *rect, BOOLEAN bOverlay, int VideoFormat, int FrameRate);
  140. DLLEXPORT_API int __stdcall StopVideoPreview(HANDLE hChannelHandle);
  141. DLLEXPORT_API int __stdcall SetVideoPara(HANDLE hChannelHandle, int Brightness, int Contrast, int Saturation, int Hue);
  142. DLLEXPORT_API int __stdcall GetVideoPara(HANDLE hChannelHandle, VideoStandard_t *VideoStandard, int *Brightness, int *Contrast, int *Saturation, int *Hue);
  143. DLLEXPORT_API int __stdcall GetVideoSignal(HANDLE hChannelHandle);
  144. DLLEXPORT_API int __stdcall GetSDKVersion(PVERSION_INFO VersionInfo);
  145. DLLEXPORT_API int __stdcall GetCapability(HANDLE hChannelHandle, CHANNEL_CAPABILITY *Capability);
  146. DLLEXPORT_API int __stdcall GetLastErrorNum(HANDLE hChannelHandle, ULONG *DspError, ULONG *SdkError);
  147. DLLEXPORT_API int __stdcall SetStreamType(HANDLE hChannelHandle, USHORT Type);
  148. DLLEXPORT_API int __stdcall GetStreamType(HANDLE hChannelHandle, USHORT *StreamType);
  149. DLLEXPORT_API int __stdcall GetFramesStatistics(HANDLE hChannelHandle, PFRAMES_STATISTICS framesStatistics);
  150. DLLEXPORT_API int __stdcall StartMotionDetection(HANDLE hChannelHandle);
  151. DLLEXPORT_API int __stdcall GetBoardInfo(HANDLE hChannelHandle, ULONG *BoardType, UCHAR *SerialNo);
  152. DLLEXPORT_API int __stdcall StopMotionDetection(HANDLE hChannelHandle);
  153. DLLEXPORT_API int __stdcall GetOriginalImage(HANDLE hChannelHandle, UCHAR *ImageBuf, ULONG *Size);
  154. DLLEXPORT_API int __stdcall RegisterLogRecordCallback(LOGRECORD_CALLBACK LogRecordFunc, void *Context);
  155. DLLEXPORT_API int __stdcall SetAudioPreview(HANDLE hChannelHandle, BOOL bEnable);
  156. DLLEXPORT_API int __stdcall ReadStreamData(HANDLE hChannelHandle, void *DataBuf, DWORD *Length, int *FrameType);
  157. DLLEXPORT_API int __stdcall RegisterMessageNotifyHandle(HWND hWnd, UINT MessageId);
  158. DLLEXPORT_API int __stdcall StartVideoCapture(HANDLE hChannelHandle);
  159. DLLEXPORT_API int __stdcall StopVideoCapture(HANDLE hChannelHandle);
  160. DLLEXPORT_API int __stdcall SetIBPMode(HANDLE hChannelHandle, int KeyFrameIntervals, int BFrames, int PFrames, int FrameRate);
  161. DLLEXPORT_API int __stdcall SetDefaultQuant(HANDLE hChannelHandle, int IQuantVal, int PQuantVal, int BQuantVal);
  162. DLLEXPORT_API int __stdcall SetOsd(HANDLE hChannelHandle, BOOL Enable);
  163. DLLEXPORT_API int __stdcall SetLogo(HANDLE hChannelHandle, int x, int y, int w, int h, unsigned char *yuv);
  164. DLLEXPORT_API int __stdcall StopLogo(HANDLE hChannelHandle);
  165. DLLEXPORT_API int __stdcall SetupMotionDetection(HANDLE hChannelHandle, RECT *RectList, int iAreas);
  166. DLLEXPORT_API int __stdcall MotionAnalyzer(HANDLE hChannelHandle, char *MotionData, int iThreshold, int *iResult);
  167. DLLEXPORT_API int __stdcall LoadYUVFromBmpFile(char *FileName, unsigned char *yuv, int BufLen, int *Width, int *Height);
  168. DLLEXPORT_API int __stdcall SaveYUVToBmpFile(char *FileName, unsigned char *yuv, int Width, int Height);
  169. DLLEXPORT_API int __stdcall CaptureIFrame(HANDLE hChannelHandle);
  170. DLLEXPORT_API int __stdcall RegisterStreamReadCallback(STREAM_READ_CALLBACK StreamReadCallback, void *Context);
  171. DLLEXPORT_API int __stdcall AdjustMotionDetectPrecision(HANDLE hChannelHandle,
  172. int iGrade, int iFastMotionDetectFps,
  173. int iSlowMotionDetectFps);
  174. DLLEXPORT_API int __stdcall SetupBitrateControl(HANDLE hChannelHandle, ULONG MaxBps);
  175. DLLEXPORT_API int __stdcall SetOverlayColorKey(COLORREF DestColorKey);
  176. DLLEXPORT_API int __stdcall SetOsdDisplayMode(HANDLE hChannelHandle, int Brightness, BOOL Translucent, int parameter, USHORT *Format1, USHORT *Format2);
  177. DLLEXPORT_API int __stdcall SetLogoDisplayMode(HANDLE hChannelHandle, COLORREF ColorKey, BOOL Translucent, int TwinkleInterval);
  178. DLLEXPORT_API int __stdcall SetEncoderPictureFormat(HANDLE hChannelHandle, PictureFormat_t PictureFormat);
  179. DLLEXPORT_API int __stdcall SetVideoStandard(HANDLE hChannelHandle, VideoStandard_t VideoStandard);
  180. DLLEXPORT_API int __stdcall RestoreOverlay();
  181. DLLEXPORT_API int __stdcall ResetDSP(int DspNumber);
  182. DLLEXPORT_API int __stdcall GetSoundLevel(HANDLE hChannelHandle);
  183. DLLEXPORT_API int __stdcall SetBitrateControlMode(HANDLE hChannelHandle, BitrateControlType_t brc);
  184. DLLEXPORT_API int __stdcall SetupNotifyThreshold(HANDLE hChannelHandle, int iFramesThreshold);
  185. DLLEXPORT_API int __stdcall SetupSubChannel(HANDLE hChannelHandle, int iSubChannel);
  186. DLLEXPORT_API int __stdcall GetSubChannelStreamType(void *DataBuf, int FrameType);
  187. //add for HC/HF
  188. DLLEXPORT_API int __stdcall RegisterStreamDirectReadCallback(STREAM_DIRECT_READ_CALLBACK StreamDirectReadCallback,void *Context);
  189. DLLEXPORT_API int __stdcall RegisterDrawFun(DWORD nport, DRAWFUN(DrawFun),LONG nUser);
  190. DLLEXPORT_API int __stdcall SetupMask(HANDLE hChannelHandle, RECT *RectList, int iAreas);
  191. DLLEXPORT_API int __stdcall StopMask(HANDLE hChannelHandle);
  192. DLLEXPORT_API int __stdcall SetSubEncoderPictureFormat(HANDLE hChannelHandle, PictureFormat_t PictureFormat);
  193. DLLEXPORT_API int __stdcall StartSubVideoCapture(HANDLE hChannelHandle);
  194. DLLEXPORT_API int __stdcall StopSubVideoCapture(HANDLE hChannelHandle);
  195. DLLEXPORT_API int __stdcall SetupDateTime(HANDLE hChannelHandle, SYSTEMTIME *now);
  196. //原始图像流设置
  197. typedef void (*IMAGE_STREAM_CALLBACK)(UINT channelNumber,void *context);
  198. DLLEXPORT_API int __stdcall SetImageStream(HANDLE hChannel,BOOL bStart,UINT fps,UINT width,UINT height,unsigned char *imageBuffer);
  199. DLLEXPORT_API int __stdcall RegisterImageStreamCallback(IMAGE_STREAM_CALLBACK ImageStreamCallback,void *context);
  200. /*
  201. 设置视频输入位置:
  202. (x,y)为系统所处理图像的左上角在摄像机输入的原始图像中的坐标。
  203. x必须为2的整数倍。
  204. (x,y)坐标的参数范围和摄像机的型号有关,如果指定的值和摄像机的输入不匹配,
  205. 可能会导致图像静止或水平、垂直方向滚动。
  206. */
  207. DLLEXPORT_API int __stdcall SetInputVideoPosition(HANDLE hChannel,UINT x,UINT y);
  208. DLLEXPORT_API int __stdcall StopRegisterDrawFun(DWORD nport);
  209. /*
  210. 3.0
  211. */
  212. #define SERIAL_NUMBER_LENGTH 12 //板卡序列号长度
  213. typedef struct
  214. {
  215. BOARD_TYPE_DS type; //板卡类型
  216. BYTE sn[16]; //序列号
  217. UINT dspCount; //板卡包含的DSP个数
  218. UINT firstDspIndex; //板卡上第一个DSP的索引
  219. UINT encodeChannelCount; //板卡包含的编码通道个数
  220. UINT firstEncodeChannelIndex; //板卡上第一个编码通道的索引
  221. UINT decodeChannelCount; //板卡包含的解码通道个数
  222. UINT firstDecodeChannelIndex; //板卡上第一个解码通道的索引
  223. UINT displayChannelCount; //板卡包含的视频输出通道个数
  224. UINT firstDisplayChannelIndex; //板卡上第一个视频输出通道的索引
  225. UINT reserved1;
  226. UINT reserved2;
  227. UINT reserved3;
  228. UINT version; //硬件版本,format:major.minor.build,major:bit 16-19,minor: bit 8-15,build: bit 0-7
  229. }DS_BOARD_DETAIL;
  230. typedef struct
  231. {
  232. UINT encodeChannelCount; //板卡包含的编码通道个数
  233. UINT firstEncodeChannelIndex; //板卡上第一个编码通道的索引
  234. UINT decodeChannelCount; //板卡包含的解码通道个数
  235. UINT firstDecodeChannelIndex; //板卡上第一个解码通道的索引
  236. UINT displayChannelCount; //板卡包含的视频输出通道个数
  237. UINT firstDisplayChannelIndex; //板卡上第一个视频输出通道的索引
  238. UINT reserved1;
  239. UINT reserved2;
  240. UINT reserved3;
  241. UINT reserved4;
  242. }DSP_DETAIL;
  243. DLLEXPORT_API unsigned int __stdcall GetBoardCount();
  244. DLLEXPORT_API int __stdcall GetBoardDetail(UINT boardNum,DS_BOARD_DETAIL *pBoardDetail);
  245. DLLEXPORT_API unsigned int __stdcall GetDspCount();
  246. DLLEXPORT_API int __stdcall GetDspDetail(UINT dspNum,DSP_DETAIL *pDspDetail);
  247. DLLEXPORT_API unsigned int __stdcall GetEncodeChannelCount();
  248. DLLEXPORT_API unsigned int __stdcall GetDecodeChannelCount();
  249. DLLEXPORT_API unsigned int __stdcall GetDisplayChannelCount();
  250. DLLEXPORT_API int __stdcall SetDefaultVideoStandard(VideoStandard_t VideoStandard);
  251. DLLEXPORT_API int __stdcall SetVideoDetectPrecision(HANDLE hChannel,unsigned int value);
  252. DLLEXPORT_API int __stdcall SetSubStreamType(HANDLE hChannelHandle, USHORT Type);
  253. DLLEXPORT_API int __stdcall GetSubStreamType(HANDLE hChannelHandle, USHORT *StreamType);
  254. #define MAX_DISPLAY_REGION 16
  255. typedef struct
  256. {
  257. UINT left;
  258. UINT top;
  259. UINT width;
  260. UINT height;
  261. COLORREF color;
  262. UINT param;
  263. }REGION_PARAM;
  264. DLLEXPORT_API int __stdcall SetDisplayStandard(UINT nDisplayChannel,VideoStandard_t VideoStandard);
  265. DLLEXPORT_API int __stdcall SetDisplayRegion(UINT nDisplayChannel,UINT nRegionCount,REGION_PARAM *pParam,UINT nReserved);
  266. DLLEXPORT_API int __stdcall ClearDisplayRegion(UINT nDisplayChannel,UINT nRegionFlag);
  267. DLLEXPORT_API int __stdcall SetDisplayRegionPosition(UINT nDisplayChannel,UINT nRegion,UINT nLeft,UINT nTop);
  268. DLLEXPORT_API int __stdcall FillDisplayRegion(UINT nDisplayChannel,UINT nRegion,unsigned char *pImage);
  269. DLLEXPORT_API int __stdcall SetEncoderVideoExtOutput(UINT nEncodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nFrameRate);
  270. DLLEXPORT_API int __stdcall SetDecoderVideoExtOutput(UINT nDecodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved);
  271. DLLEXPORT_API int __stdcall SetDecoderVideoOutput(UINT nDecodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved);
  272. DLLEXPORT_API int __stdcall SetDecoderAudioOutput(UINT nDecodeChannel,BOOL bOpen,UINT nOutputChannel);
  273. //3.1
  274. DLLEXPORT_API int __stdcall SetDeInterlace(HANDLE hChannelHandle,UINT mode,UINT level);
  275. DLLEXPORT_API int __stdcall SetPreviewOverlayMode(BOOL bTrue);
  276. //DECODE functions for MD card
  277. typedef struct{
  278. long bToScreen;
  279. long bToVideoOut;
  280. long nLeft;
  281. long nTop;
  282. long nWidth;
  283. long nHeight;
  284. long nReserved;
  285. }DISPLAY_PARA,*PDISPLAY_PARA;
  286. //Version info
  287. typedef struct {
  288. ULONG DspVersion, DspBuildNum;
  289. ULONG DriverVersion, DriverBuildNum;
  290. ULONG SDKVersion, SDKBuildNum;
  291. }HW_VERSION, *PHW_VERSION;
  292. //init part
  293. DLLEXPORT_API int __stdcall HW_InitDirectDraw(HWND hParent,COLORREF colorKey);
  294. DLLEXPORT_API int __stdcall HW_ReleaseDirectDraw();
  295. DLLEXPORT_API int __stdcall HW_InitDecDevice(long *pDeviceTotal);
  296. DLLEXPORT_API int __stdcall HW_ReleaseDecDevice();
  297. DLLEXPORT_API int __stdcall HW_ChannelOpen(long nChannelNum,HANDLE* phChannel);
  298. DLLEXPORT_API int __stdcall HW_ChannelClose(HANDLE hChannel);
  299. //open part
  300. DLLEXPORT_API int __stdcall HW_OpenStream(HANDLE hChannel,PBYTE pFileHeadBuf,DWORD nSize);
  301. DLLEXPORT_API int __stdcall HW_ResetStream(HANDLE hChannel);
  302. DLLEXPORT_API int __stdcall HW_CloseStream(HANDLE hChannel);
  303. DLLEXPORT_API int __stdcall HW_InputData(HANDLE hChannel,PBYTE pBuf,DWORD nSize);
  304. DLLEXPORT_API int __stdcall HW_OpenFile(HANDLE hChannel,LPTSTR sFileName);
  305. DLLEXPORT_API int __stdcall HW_CloseFile(HANDLE hChannel);
  306. //play part
  307. DLLEXPORT_API int __stdcall HW_SetDisplayPara(HANDLE hChannel,DISPLAY_PARA *pPara);
  308. DLLEXPORT_API int __stdcall HW_Play(HANDLE hChannel);
  309. DLLEXPORT_API int __stdcall HW_Stop(HANDLE hChannel);
  310. DLLEXPORT_API int __stdcall HW_Pause(HANDLE hChannel,ULONG bPause);
  311. //sound part
  312. DLLEXPORT_API int __stdcall HW_PlaySound(HANDLE hChannel);
  313. DLLEXPORT_API int __stdcall HW_StopSound(HANDLE hChannel);
  314. DLLEXPORT_API int __stdcall HW_SetVolume(HANDLE hChannel,ULONG nVolume);
  315. //overlay part
  316. DLLEXPORT_API int __stdcall HW_RefreshSurface();
  317. DLLEXPORT_API int __stdcall HW_RestoreSurface();
  318. DLLEXPORT_API int __stdcall HW_ClearSurface();
  319. DLLEXPORT_API int __stdcall HW_ZoomOverlay(RECT* pSrcClientRect, RECT* pDecScreenRect);
  320. //cut file
  321. DLLEXPORT_API int __stdcall HW_StartCapFile(HANDLE hChannel,LPTSTR sFileName);
  322. DLLEXPORT_API int __stdcall HW_StopCapFile(HANDLE hChannel);
  323. //capture picture
  324. DLLEXPORT_API int __stdcall HW_GetYV12Image(HANDLE hChannel, PBYTE pBuffer, ULONG nSize);
  325. DLLEXPORT_API int __stdcall HW_GetPictureSize(HANDLE hChannel,ULONG* pWidth, ULONG* pHeight);
  326. DLLEXPORT_API int __stdcall HW_ConvertToBmpFile(BYTE * pBuf,ULONG nSize,ULONG nWidth,ULONG nHeight,char *sFileName,ULONG nReserved);
  327. //setting and getting part
  328. DLLEXPORT_API int __stdcall HW_Jump(HANDLE hChannel,ULONG nDirection);
  329. DLLEXPORT_API int __stdcall HW_SetJumpInterval(HANDLE hChannel,ULONG nSecond);
  330. DLLEXPORT_API int __stdcall HW_GetSpeed(HANDLE hChannel,long *pSpeed);
  331. DLLEXPORT_API int __stdcall HW_SetSpeed(HANDLE hChannel,long nSpeed);
  332. DLLEXPORT_API int __stdcall HW_SetPlayPos(HANDLE hChannel,ULONG nPos);
  333. DLLEXPORT_API int __stdcall HW_GetPlayPos(HANDLE hChannel,ULONG* pPos);
  334. DLLEXPORT_API int __stdcall HW_GetVersion(PHW_VERSION pVersion);
  335. DLLEXPORT_API int __stdcall HW_GetCurrentFrameRate(HANDLE hChannel,ULONG* pFrameRate);
  336. DLLEXPORT_API int __stdcall HW_GetCurrentFrameNum(HANDLE hChannel,ULONG* pFrameNum);
  337. DLLEXPORT_API int __stdcall HW_GetFileTotalFrames(HANDLE hChannel,ULONG* pTotalFrames);
  338. DLLEXPORT_API int __stdcall HW_GetFileTime(HANDLE hChannel, ULONG* pFileTime);
  339. DLLEXPORT_API int __stdcall HW_GetCurrentFrameTime(HANDLE hChannel,ULONG* pFrameTime);
  340. DLLEXPORT_API int __stdcall HW_GetPlayedFrames(HANDLE hChannel,ULONG *pDecVFrames);
  341. DLLEXPORT_API int __stdcall HW_GetDeviceSerialNo(HANDLE hChannel,ULONG *pDeviceSerialNo);
  342. DLLEXPORT_API int __stdcall HW_SetFileEndMsg(HANDLE hChannel,HWND hWnd,UINT nMsg);
  343. DLLEXPORT_API int __stdcall HW_SetStreamOpenMode(HANDLE hChannel,ULONG nMode);
  344. DLLEXPORT_API int __stdcall HW_GetStreamOpenMode(HANDLE hChannel,ULONG *pMode);
  345. DLLEXPORT_API int __stdcall HW_SetVideoOutStandard(HANDLE hChannel,ULONG nStandard);
  346. DLLEXPORT_API int __stdcall HW_SetDspDeadlockMsg(HWND hWnd,UINT nMsg);
  347. DLLEXPORT_API int __stdcall HW_GetChannelNum(long nDspNum,long *pChannelNum,ULONG nNumsToGet,ULONG * pNumsGotten);
  348. DLLEXPORT_API int __stdcall HW_ResetDsp(long nDspNum);
  349. DLLEXPORT_API int __stdcall HW_SetAudioPreview(HANDLE hChannel, BOOL bEnable);
  350. //////////////////////////////////////////////
  351. DLLEXPORT_API int __stdcall HW_OpenStreamEx(HANDLE hChannel,PBYTE pFileHeadBuf,DWORD nSize);
  352. DLLEXPORT_API int __stdcall HW_CloseStreamEx(HANDLE hChannel);
  353. DLLEXPORT_API int __stdcall HW_InputVideoData(HANDLE hChannel,PBYTE pBuf,DWORD nSize);
  354. DLLEXPORT_API int __stdcall HW_InputAudioData(HANDLE hChannel,PBYTE pBuf,DWORD nSize);
  355. //4.0
  356. DLLEXPORT_API int __stdcall SetOsdDisplayModeEx(HANDLE hChannelHandle,int color,BOOL Translucent,int param,int nLineCount,USHORT **Format);
  357. typedef void (*MOTION_DETECTION_CALLBACK)(ULONG channelNumber,BOOL bMotionDetected,void *context);
  358. DLLEXPORT_API int __stdcall SetupMotionDetectionEx(HANDLE hChannelHandle,int iGrade,int iFastMotionDetectFps,
  359. int iSlowMotionDetectFps,UINT delay,RECT *RectList, int iAreas,
  360. MOTION_DETECTION_CALLBACK MotionDetectionCallback,int reserved);
  361. DLLEXPORT_API int __stdcall GetJpegImage(HANDLE hChannelHandle,UCHAR *ImageBuf,ULONG *Size,UINT nQuality);
  362. //WatchDog
  363. DLLEXPORT_API int __stdcall SetWatchDog(UINT boardNumber,BOOL bEnable);
  364. //4.1
  365. typedef void (*FILE_REF_DONE_CALLBACK)(UINT nChannel,UINT nSize);
  366. DLLEXPORT_API int __stdcall HW_SetFileRef(HANDLE hChannel,BOOL bEnable,FILE_REF_DONE_CALLBACK FileRefDoneCallback);
  367. DLLEXPORT_API int __stdcall HW_LocateByAbsoluteTime(HANDLE hChannel,SYSTEMTIME time);
  368. DLLEXPORT_API int __stdcall HW_LocateByFrameNumber(HANDLE hChannel,UINT frmNum);
  369. DLLEXPORT_API int __stdcall HW_GetCurrentAbsoluteTime(HANDLE hChannel,SYSTEMTIME *pTime);
  370. DLLEXPORT_API int __stdcall HW_GetFileAbsoluteTime(HANDLE hChannel,SYSTEMTIME *pStartTime,SYSTEMTIME *pEndTime);
  371. //4.2
  372. DLLEXPORT_API int __stdcall HW_ImportFileRef(HANDLE hChannel,char *pBuffer,UINT nSize);
  373. DLLEXPORT_API int __stdcall HW_ExportFileRef(HANDLE hChannel,char *pBuffer,UINT nSize);
  374. DLLEXPORT_API int __stdcall SetDisplayVideoCapture(UINT nDisplayChannel,BOOL bStart,UINT fps,UINT width,UINT height,unsigned char *imageBuffer);
  375. DLLEXPORT_API int __stdcall RegisterDisplayVideoCaptureCallback(IMAGE_STREAM_CALLBACK DisplayVideoCaptureCallback,void *context);
  376. DLLEXPORT_API int __stdcall SetDisplayVideoBrightness(UINT chan,int Brightness);
  377. DLLEXPORT_API int __stdcall SetChannelStreamCRC(HANDLE hChannel,BOOL bEnable);
  378. DLLEXPORT_API int __stdcall SetSubChannelStreamCRC(HANDLE hChannel,BOOL bEnable);
  379. DLLEXPORT_API int __stdcall HW_SetDecoderPostProcess(HANDLE hChannel,UINT param);
  380. //
  381. typedef void (*DECODER_VIDEO_CAPTURE_CALLBACK)(UINT nChannelNumber,void *DataBuf,UINT width,UINT height,UINT nFrameNum,UINT nFrameTime,SYSTEMTIME *pFrameAbsoluteTime,void *context);
  382. DLLEXPORT_API int __stdcall RegisterDecoderVideoCaptureCallback(DECODER_VIDEO_CAPTURE_CALLBACK DecoderVideoCaptureCallback,void *context);
  383. DLLEXPORT_API int __stdcall HW_SetDecoderVideoCapture(HANDLE hChannel,BOOL bStart,UINT param);
  384. DLLEXPORT_API int __stdcall HW_InputDataByFrame(HANDLE hChannel,PBYTE pBuf,DWORD nSize);
  385. DLLEXPORT_API int __stdcall HW_RegisterDrawFun(DWORD nport, DRAWFUN(DrawFun),LONG nUser);
  386. DLLEXPORT_API int __stdcall HW_StopRegisterDrawFun(DWORD nport);
  387. /*
  388. 人脸检测接口:仅供测试、评估,以后可能会做修改。
  389. */
  390. typedef struct
  391. {
  392. short x,y,width,height;
  393. }FACE_AREA_DEMO;
  394. typedef struct
  395. {
  396. FACE_AREA_DEMO faceArea;
  397. FACE_AREA_DEMO leftEyeArea;
  398. FACE_AREA_DEMO rightEyeArea;
  399. FACE_AREA_DEMO leftPupilArea;
  400. FACE_AREA_DEMO rightPupilArea;
  401. FACE_AREA_DEMO noseArea;
  402. FACE_AREA_DEMO mouthArea;
  403. }FACE_INFO_DEMO;
  404. typedef void (*FACE_DETECTION_DEMO_CALLBACK)(UINT nChannel,UINT nFaceCount,FACE_INFO_DEMO *pFaceInfo,
  405. char *pData,UINT nDataSize,UINT nImageWidth,UINT nImageHeight);
  406. DLLEXPORT_API int __stdcall SetFaceDetectionDemo(HANDLE hChannelHandle,BOOL bEnable,
  407. UINT nFrameInterval,FACE_DETECTION_DEMO_CALLBACK pFunc,
  408. BOOL bCompress,UINT nCompressQuality,BOOL bLocateEyePos);
  409. #endif