北京机场
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

452 рядки
24 KiB

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