/////////////////////////////////////////////////////////////////////////// // DS-40xxHC/HF BOARD SYSTEM SDK // /////////////////////////////////////////////////////////////////////////// #ifndef DECODECARD_SDK_H #define DECODECARD_SDK_H #include "datatype.h" #define DLLEXPORT_API extern "C" __declspec(dllexport) #define ERR_WAIT_TIMEOUT 0xc0000001 #define ERR_INVALID_HANDLE 0xc0000002 #define ERR_INVALID_ARGUMENT 0xc0000003 #define ERR_DDRAW_CREATE_FAILED 0xc0000004 #define ERR_DDRAW_CAPS_FAULT 0xc0000005 #define ERR_SET_COOPERATIVELEVEL_FAILED 0xc0000006 #define ERR_PRIMARY_SURFACE_CREATE_FAILED 0xc0000007 #define ERR_GET_OVERLAY_ADDRESS_FAILED 0xc0000008 #define ERR_OVERLAY_SURFACE_CREATE_FAILED 0xc0000009 #define ERR_OVERLAY_UPDATE_FAILED 0xc000000a #define ERR_TMMAN_FAILURE 0xc000000b #define ERR_CHANNELMAGIC_MISMATCH 0xc000000c #define ERR_CALLBACK_REGISTERED 0xc000000d #define ERR_QUEUE_OVERFLOW 0xc000000e #define ERR_STREAM_THREAD_FAILURE 0xc000000f #define ERR_THREAD_STOP_ERROR 0xc0000010 #define ERR_NOT_SUPPORT 0xc0000011 #define ERR_OUTOF_MEMORY 0xc0000012 #define ERR_DSP_BUSY 0xc0000013 #define ERR_DATA_ERROR 0xc0000014 #define ERR_KERNEL 0xc0000016 #define ERR_OFFSCREEN_CREATE_FAILED 0xc0000017 #define ERR_MULTICLOCK_FAILURE 0xc0000018 #define ERR_INVALID_DEVICE 0xc0000019 #define ERR_INVALID_DRIVER 0xc000001a //error code for MD card #define HWERR_SUCCESS 0 #define HWERR_ALLOCATE_MEMORY 0xc1000001 #define HWERR_INVALID_HANDLE 0xc1000002 #define HWERR_DDRAW_CREATE_FAILED 0xc1000003 #define HWERR_DDRAW_CAPS_FAULT 0xc1000004 #define HWERR_SET_COOPERATIVELEVEL_FAILED 0xc1000005 #define HWERR_PRIMARY_SURFACE_CREATE_FAILED 0xc1000006 #define HWERR_OVERLAY_CREATE_FAILED 0xc1000007 #define HWERR_GET_OVERLAY_ADDRESS_FAILED 0xc1000008 #define HWERR_OVERLAY_UPDATE_FAILED 0xc1000009 #define HWERR_SURFACE_NULL 0xc100000a #define HWERR_FILEHEADER_UNKNOWN 0xc100000b #define HWERR_CREATE_FILE_FAILED 0xc100000c #define HWERR_FILE_SIZE_ZERO 0xc100000d #define HWERR_FILE_SIZE_INVALID 0xc100000d #define HWERR_CREATE_OBJ_FAILED 0xc100000e #define HWERR_CHANNELMAGIC_MISMATCH 0xc100000f #define HWERR_PARA_OVER 0xc1000010 #define HWERR_ORDER 0xc1000011 #define HWERR_COMMAND 0xc1000012 #define HWERR_UNSUPPORTED 0xc1000013 #define HWERR_DSPOPEN 0xc1000014 #define HWERR_DSPLOAD 0xc1000015 #define HWERR_ALLOCATE_DSPMEMORY 0xc1000016 #define HWERR_DSPCHECHER 0xc1000017 #define HWERR_IMGFILE_UNKNOWN 0xc1000018 #define HWERR_INVALID_FILE 0xc1000019 //standart #define HW_PAL 2 #define HW_NTSC 1 //jump direction #define HW_JUMP_FORWARD 309 #define HW_JUMP_BACKWARD 310 typedef enum tagTypeVideoFormat { vdfRGB8A_233 = 0x00000001, vdfRGB8R_332 = 0x00000002, vdfRGB15Alpha = 0x00000004, vdfRGB16 = 0x00000008, vdfRGB24 = 0x00000010, vdfRGB24Alpha = 0x00000020, vdfYUV420Planar = 0x00000040, vdfYUV422Planar = 0x00000080, vdfYUV411Planar = 0x00000100, vdfYUV420Interspersed = 0x00000200, vdfYUV422Interspersed = 0x00000400, vdfYUV411Interspersed = 0x00000800, vdfYUV422Sequence = 0x00001000, /* U0, Y0, V0, Y1: For VO overlay */ vdfYUV422SequenceAlpha = 0x00002000, /* U0, Y0, V0, Y1: For VO overlay, with low bit for alpha blending */ vdfMono = 0x00004000, /* 8 bit monochrome */ vdfYUV444Planar = 0x00008000, }TypeVideoFormat; typedef enum _BitrateControlType_t { brCBR = 0, brVBR = 1, }BitrateControlType_t; typedef enum _BOARD_TYPE_DS { DS400XM =0, DS400XH =1, DS4004HC =2, DS4008HC =3, DS4016HC =4, DS4001HF =5, DS4004HF =6, DS4002MD =7, DS4004MD =8, //4004MD DS4016HCS =9, //4016HCS DS4002HT =10, //4002HT DS4004HT =11, //4004HT DS4008HT =12, //4008HT DS4004HC_PLUS =13, //4004HC+ DS4008HC_PLUS =14, //4008HC+ DS4016HC_PLUS =15, //4016HC+ DS4008HF =16, //4008HF DS4008MD =17, //4008MD DS4008HS =18, //4008HS DS4016HS =19, //4016HS INVALID_BOARD_TYPE =0xffffffff, }BOARD_TYPE_DS; #define STREAM_TYPE_VIDEO 1 #define STREAM_TYPE_AUDIO 2 #define STREAM_TYPE_AVSYNC 3 #define DRAWFUN(x) void (CALLBACK* x)(long nPort,HDC hDc,LONG nUser) typedef void (*LOGRECORD_CALLBACK)(char *str, void *context); typedef int (*STREAM_READ_CALLBACK)(ULONG channelNumber, void *context); typedef int (*STREAM_DIRECT_READ_CALLBACK)(ULONG channelNumber,void *DataBuf,DWORD Length,int FrameType,void *context); typedef struct tagChannelCapability{ UCHAR bAudioPreview; UCHAR bAlarmIO; UCHAR bWatchDog; }CHANNEL_CAPABILITY, *PCHANNEL_CAPABILITY; typedef struct tagFramsStatistics{ ULONG VideoFrames; ULONG AudioFrames; ULONG FramesLost; ULONG QueueOverflow; ULONG CurBps; }FRAMES_STATISTICS, *PFRAMES_STATISTICS; DLLEXPORT_API int __stdcall InitDSPs(); DLLEXPORT_API int __stdcall DeInitDSPs(); DLLEXPORT_API HANDLE __stdcall ChannelOpen(int ChannelNum); DLLEXPORT_API int __stdcall ChannelClose(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall GetTotalChannels(); DLLEXPORT_API int __stdcall GetTotalDSPs(); DLLEXPORT_API int __stdcall StartVideoPreview(HANDLE hChannelHandle,HWND WndHandle, RECT *rect, BOOLEAN bOverlay, int VideoFormat, int FrameRate); DLLEXPORT_API int __stdcall StopVideoPreview(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall SetVideoPara(HANDLE hChannelHandle, int Brightness, int Contrast, int Saturation, int Hue); DLLEXPORT_API int __stdcall GetVideoPara(HANDLE hChannelHandle, VideoStandard_t *VideoStandard, int *Brightness, int *Contrast, int *Saturation, int *Hue); DLLEXPORT_API int __stdcall GetVideoSignal(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall GetSDKVersion(PVERSION_INFO VersionInfo); DLLEXPORT_API int __stdcall GetCapability(HANDLE hChannelHandle, CHANNEL_CAPABILITY *Capability); DLLEXPORT_API int __stdcall GetLastErrorNum(HANDLE hChannelHandle, ULONG *DspError, ULONG *SdkError); DLLEXPORT_API int __stdcall SetStreamType(HANDLE hChannelHandle, USHORT Type); DLLEXPORT_API int __stdcall GetStreamType(HANDLE hChannelHandle, USHORT *StreamType); DLLEXPORT_API int __stdcall GetFramesStatistics(HANDLE hChannelHandle, PFRAMES_STATISTICS framesStatistics); DLLEXPORT_API int __stdcall StartMotionDetection(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall GetBoardInfo(HANDLE hChannelHandle, ULONG *BoardType, UCHAR *SerialNo); DLLEXPORT_API int __stdcall StopMotionDetection(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall GetOriginalImage(HANDLE hChannelHandle, UCHAR *ImageBuf, ULONG *Size); DLLEXPORT_API int __stdcall RegisterLogRecordCallback(LOGRECORD_CALLBACK LogRecordFunc, void *Context); DLLEXPORT_API int __stdcall SetAudioPreview(HANDLE hChannelHandle, BOOL bEnable); DLLEXPORT_API int __stdcall ReadStreamData(HANDLE hChannelHandle, void *DataBuf, DWORD *Length, int *FrameType); DLLEXPORT_API int __stdcall RegisterMessageNotifyHandle(HWND hWnd, UINT MessageId); DLLEXPORT_API int __stdcall StartVideoCapture(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall StopVideoCapture(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall SetIBPMode(HANDLE hChannelHandle, int KeyFrameIntervals, int BFrames, int PFrames, int FrameRate); DLLEXPORT_API int __stdcall SetDefaultQuant(HANDLE hChannelHandle, int IQuantVal, int PQuantVal, int BQuantVal); DLLEXPORT_API int __stdcall SetOsd(HANDLE hChannelHandle, BOOL Enable); DLLEXPORT_API int __stdcall SetLogo(HANDLE hChannelHandle, int x, int y, int w, int h, unsigned char *yuv); DLLEXPORT_API int __stdcall StopLogo(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall SetupMotionDetection(HANDLE hChannelHandle, RECT *RectList, int iAreas); DLLEXPORT_API int __stdcall MotionAnalyzer(HANDLE hChannelHandle, char *MotionData, int iThreshold, int *iResult); DLLEXPORT_API int __stdcall LoadYUVFromBmpFile(char *FileName, unsigned char *yuv, int BufLen, int *Width, int *Height); DLLEXPORT_API int __stdcall SaveYUVToBmpFile(char *FileName, unsigned char *yuv, int Width, int Height); DLLEXPORT_API int __stdcall CaptureIFrame(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall RegisterStreamReadCallback(STREAM_READ_CALLBACK StreamReadCallback, void *Context); DLLEXPORT_API int __stdcall AdjustMotionDetectPrecision(HANDLE hChannelHandle, int iGrade, int iFastMotionDetectFps, int iSlowMotionDetectFps); DLLEXPORT_API int __stdcall SetupBitrateControl(HANDLE hChannelHandle, ULONG MaxBps); DLLEXPORT_API int __stdcall SetOverlayColorKey(COLORREF DestColorKey); DLLEXPORT_API int __stdcall SetOsdDisplayMode(HANDLE hChannelHandle, int Brightness, BOOL Translucent, int parameter, USHORT *Format1, USHORT *Format2); DLLEXPORT_API int __stdcall SetLogoDisplayMode(HANDLE hChannelHandle, COLORREF ColorKey, BOOL Translucent, int TwinkleInterval); DLLEXPORT_API int __stdcall SetEncoderPictureFormat(HANDLE hChannelHandle, PictureFormat_t PictureFormat); DLLEXPORT_API int __stdcall SetVideoStandard(HANDLE hChannelHandle, VideoStandard_t VideoStandard); DLLEXPORT_API int __stdcall RestoreOverlay(); DLLEXPORT_API int __stdcall ResetDSP(int DspNumber); DLLEXPORT_API int __stdcall GetSoundLevel(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall SetBitrateControlMode(HANDLE hChannelHandle, BitrateControlType_t brc); DLLEXPORT_API int __stdcall SetupNotifyThreshold(HANDLE hChannelHandle, int iFramesThreshold); DLLEXPORT_API int __stdcall SetupSubChannel(HANDLE hChannelHandle, int iSubChannel); DLLEXPORT_API int __stdcall GetSubChannelStreamType(void *DataBuf, int FrameType); //add for HC/HF DLLEXPORT_API int __stdcall RegisterStreamDirectReadCallback(STREAM_DIRECT_READ_CALLBACK StreamDirectReadCallback,void *Context); DLLEXPORT_API int __stdcall RegisterDrawFun(DWORD nport, DRAWFUN(DrawFun),LONG nUser); DLLEXPORT_API int __stdcall SetupMask(HANDLE hChannelHandle, RECT *rectList, int iAreas); DLLEXPORT_API int __stdcall StopMask(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall SetSubEncoderPictureFormat(HANDLE hChannelHandle, PictureFormat_t PictureFormat); DLLEXPORT_API int __stdcall StartSubVideoCapture(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall StopSubVideoCapture(HANDLE hChannelHandle); DLLEXPORT_API int __stdcall SetupDateTime(HANDLE hChannelHandle, SYSTEMTIME *now); /* 以下为1.7版本新增的功能。 以后可能会根据用户的反馈进行修改和完善。 */ //原始图像流设置 typedef void (*IMAGE_STREAM_CALLBACK)(UINT channelNumber,void *context ); DLLEXPORT_API int __stdcall SetImageStream(HANDLE hChannel,BOOL bStart,UINT fps,UINT width,UINT height,unsigned char *imageBuffer); DLLEXPORT_API int __stdcall RegisterImageStreamCallback(IMAGE_STREAM_CALLBACK,void *context); /* 设置视频输入位置: (x,y)为系统所处理图像的左上角在摄像机输入的原始图像中的坐标。 x必须为2的整数倍。 (x,y)坐标的参数范围和摄像机的型号有关,如果指定的值和摄像机的输入不匹配, 可能会导致图像静止或水平、垂直方向滚动。 */ DLLEXPORT_API int __stdcall SetInputVideoPosition(HANDLE hChannel,UINT x,UINT y); DLLEXPORT_API int __stdcall StopRegisterDrawFun(DWORD nport); /* 3.0 */ #define SERIAL_NUMBER_LENGTH 12 //板卡序列号长度 typedef struct tagDS_BOARD_DETAIL { BOARD_TYPE_DS type; //板卡类型 BYTE sn[16]; //序列号 UINT dspCount; //板卡包含的DSP个数 UINT firstDspIndex; //板卡上第一个DSP的索引 UINT encodeChannelCount; //板卡包含的编码通道个数 UINT firstEncodeChannelIndex; //板卡上第一个编码通道的索引 UINT decodeChannelCount; //板卡包含的解码通道个数 UINT firstDecodeChannelIndex; //板卡上第一个解码通道的索引 UINT displayChannelCount; //板卡包含的视频输出通道个数 UINT firstDisplayChannelIndex; //板卡上第一个视频输出通道的索引 UINT reserved1; UINT reserved2; UINT reserved3; UINT reserved4; }DS_BOARD_DETAIL; typedef struct tagDSP_DETAIL { UINT encodeChannelCount; //板卡包含的编码通道个数 UINT firstEncodeChannelIndex; //板卡上第一个编码通道的索引 UINT decodeChannelCount; //板卡包含的解码通道个数 UINT firstDecodeChannelIndex; //板卡上第一个解码通道的索引 UINT displayChannelCount; //板卡包含的视频输出通道个数 UINT firstDisplayChannelIndex; //板卡上第一个视频输出通道的索引 UINT reserved1; UINT reserved2; UINT reserved3; UINT reserved4; }DSP_DETAIL; DLLEXPORT_API unsigned int __stdcall GetBoardCount(); DLLEXPORT_API int __stdcall GetBoardDetail(UINT boardNum,DS_BOARD_DETAIL *pBoardDetail); DLLEXPORT_API unsigned int __stdcall GetDspCount(); DLLEXPORT_API int __stdcall GetDspDetail(UINT dspNum,DSP_DETAIL *pDspDetail); DLLEXPORT_API unsigned int __stdcall GetEncodeChannelCount(); DLLEXPORT_API unsigned int __stdcall GetDecodeChannelCount(); DLLEXPORT_API unsigned int __stdcall GetDisplayChannelCount(); DLLEXPORT_API int __stdcall SetDefaultVideoStandard(VideoStandard_t VideoStandard); DLLEXPORT_API int __stdcall SetVideoDetectPrecision(HANDLE hChannel,unsigned int value); DLLEXPORT_API int __stdcall SetSubStreamType(HANDLE hChannelHandle, USHORT Type); DLLEXPORT_API int __stdcall GetSubStreamType(HANDLE hChannelHandle, USHORT *StreamType); #define MAX_DISPLAY_REGION 16 typedef struct tagREGION_PARAM { UINT left; UINT top; UINT width; UINT height; COLORREF color; UINT param; }REGION_PARAM; DLLEXPORT_API int __stdcall SetDisplayStandard(UINT nDisplayChannel,VideoStandard_t VideoStandard); DLLEXPORT_API int __stdcall SetDisplayRegion(UINT nDisplayChannel,UINT nRegionCount,REGION_PARAM *pParam,UINT nReserved); DLLEXPORT_API int __stdcall ClearDisplayRegion(UINT nDisplayChannel,UINT nRegionFlag); DLLEXPORT_API int __stdcall SetDisplayRegionPosition(UINT nDisplayChannel,UINT nRegion,UINT nLeft,UINT nTop); DLLEXPORT_API int __stdcall FillDisplayRegion(UINT nDisplayChannel,UINT nRegion,unsigned char *pImage); DLLEXPORT_API int __stdcall SetEncoderVideoExtOutput(UINT nEncodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved); DLLEXPORT_API int __stdcall SetDecoderVideoExtOutput(UINT nDecodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved); DLLEXPORT_API int __stdcall SetDecoderVideoOutput(UINT nDecodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved); DLLEXPORT_API int __stdcall SetDecoderAudioOutput(UINT nDecodeChannel,BOOL bOpen,UINT nOutputChannel); //3.1 DLLEXPORT_API int __stdcall SetDeInterlace(HANDLE hChannelHandle,UINT mode,UINT level); DLLEXPORT_API int __stdcall SetPreviewOverlayMode(BOOL bTrue); //DECODE functions for DS4002MD #if defined( _WINDLL) #define PLAYER_API extern "C"__declspec(dllexport) #else #define PLAYER_API extern "C" __declspec(dllimport) #endif typedef struct tagDISPLAY_PARA { long bToScreen; long bToVideoOut; long nLeft; long nTop; long nWidth; long nHeight; long nReserved; }DISPLAY_PARA,*PDISPLAY_PARA; //Version info typedef struct tagVERSION{ ULONG DspVersion, DspBuildNum; ULONG DriverVersion, DriverBuildNum; ULONG SDKVersion, SDKBuildNum; }HW_VERSION, *PHW_VERSION; //init part PLAYER_API int __stdcall HW_InitDirectDraw(HWND hParent,COLORREF colorKey); PLAYER_API int __stdcall HW_ReleaseDirectDraw(); PLAYER_API int __stdcall HW_InitDecDevice(long *pDeviceTotal); PLAYER_API int __stdcall HW_ReleaseDecDevice(); PLAYER_API int __stdcall HW_ChannelOpen(long nChannelNum,HANDLE* phChannel); PLAYER_API int __stdcall HW_ChannelClose(HANDLE hChannel); //open part PLAYER_API int __stdcall HW_OpenStream(HANDLE hChannel,PBYTE pFileHeadBuf,DWORD nSize); DLLEXPORT_API int __stdcall HW_ResetStream(HANDLE hChannel); PLAYER_API int __stdcall HW_CloseStream(HANDLE hChannel); PLAYER_API int __stdcall HW_InputData(HANDLE hChannel,PBYTE pBuf,DWORD nSize); PLAYER_API int __stdcall HW_OpenFile(HANDLE hChannel,LPTSTR sFileName); PLAYER_API int __stdcall HW_CloseFile(HANDLE hChannel); //play part PLAYER_API int __stdcall HW_SetDisplayPara(HANDLE hChannel,DISPLAY_PARA *pPara); PLAYER_API int __stdcall HW_Play(HANDLE hChannel); PLAYER_API int __stdcall HW_Stop(HANDLE hChannel); PLAYER_API int __stdcall HW_Pause(HANDLE hChannel,ULONG bPause); //sound part PLAYER_API int __stdcall HW_PlaySound(HANDLE hChannel); PLAYER_API int __stdcall HW_StopSound(HANDLE hChannel); PLAYER_API int __stdcall HW_SetVolume(HANDLE hChannel,ULONG nVolume); //overlay part PLAYER_API int __stdcall HW_RefreshSurface(); PLAYER_API int __stdcall HW_RestoreSurface(); PLAYER_API int __stdcall HW_ClearSurface(); PLAYER_API int __stdcall HW_ZoomOverlay(RECT* pSrcClientRect, RECT* pDecScreenRect); //cut file PLAYER_API int __stdcall HW_StartCapFile(HANDLE hChannel,LPTSTR sFileName); PLAYER_API int __stdcall HW_StopCapFile(HANDLE hChannel); //capture picture PLAYER_API int __stdcall HW_GetYV12Image(HANDLE hChannel, PBYTE pBuffer, ULONG nSize); PLAYER_API int __stdcall HW_GetPictureSize(HANDLE hChannel,ULONG* pWidth, ULONG* pHeight); PLAYER_API int __stdcall HW_ConvertToBmpFile(BYTE * pBuf,ULONG nSize,ULONG nWidth,ULONG nHeight,char *sFileName,ULONG nReserved); //setting and getting part PLAYER_API int __stdcall HW_Jump(HANDLE hChannel,ULONG nDirection); PLAYER_API int __stdcall HW_SetJumpInterval(HANDLE hChannel,ULONG nSecond); PLAYER_API int __stdcall HW_GetSpeed(HANDLE hChannel,long *pSpeed); PLAYER_API int __stdcall HW_SetSpeed(HANDLE hChannel,long nSpeed); PLAYER_API int __stdcall HW_SetPlayPos(HANDLE hChannel,ULONG nPos); PLAYER_API int __stdcall HW_GetPlayPos(HANDLE hChannel,ULONG* pPos); PLAYER_API int __stdcall HW_GetVersion(PHW_VERSION pVersion); PLAYER_API int __stdcall HW_GetCurrentFrameRate(HANDLE hChannel,ULONG* pFrameRate); PLAYER_API int __stdcall HW_GetCurrentFrameNum(HANDLE hChannel,ULONG* pFrameNum); PLAYER_API int __stdcall HW_GetFileTotalFrames(HANDLE hChannel,ULONG* pTotalFrames); PLAYER_API int __stdcall HW_GetFileTime(HANDLE hChannel, ULONG* pFileTime); PLAYER_API int __stdcall HW_GetCurrentFrameTime(HANDLE hChannel,ULONG* pFrameTime); PLAYER_API int __stdcall HW_GetPlayedFrames(HANDLE hChannel,ULONG *pDecVFrames); PLAYER_API int __stdcall HW_GetDeviceSerialNo(HANDLE hChannel,ULONG *pDeviceSerialNo); PLAYER_API int __stdcall HW_SetFileEndMsg(HANDLE hChannel,HWND hWnd,UINT nMsg); PLAYER_API int __stdcall HW_SetStreamOpenMode(HANDLE hChannel,ULONG nMode); PLAYER_API int __stdcall HW_GetStreamOpenMode(HANDLE hChannel,ULONG *pMode); PLAYER_API int __stdcall HW_SetVideoOutStandard(HANDLE hChannel,ULONG nStandard); PLAYER_API int __stdcall HW_SetDspDeadlockMsg(HWND hWnd,UINT nMsg); PLAYER_API int __stdcall HW_GetChannelNum(long nDspNum,long *pChannelNum,ULONG nNumsToGet,ULONG * pNumsGotten); PLAYER_API int __stdcall HW_ResetDsp(long nDspNum); PLAYER_API int __stdcall HW_SetAudioPreview(HANDLE hChannel, BOOL bEnable); ////////////////////////////////////////////// PLAYER_API int __stdcall HW_OpenStreamEx(HANDLE hChannel,PBYTE pFileHeadBuf,DWORD nSize); PLAYER_API int __stdcall HW_CloseStreamEx(HANDLE hChannel); PLAYER_API int __stdcall HW_InputVideoData(HANDLE hChannel,PBYTE pBuf,DWORD nSize); PLAYER_API int __stdcall HW_InputAudioData(HANDLE hChannel,PBYTE pBuf,DWORD nSize); //4.0 PLAYER_API int __stdcall SetOsdDisplayModeEx(HANDLE hChannelHandle,int color,BOOL Translucent,int param,int nLineCount,USHORT **Format); typedef void (*MOTION_DETECTION_CALLBACK)(ULONG channelNumber,BOOL bMotionDetected,void *context); PLAYER_API int __stdcall SetupMotionDetectionEx(HANDLE hChannelHandle,int iGrade,int iFastMotionDetectFps, int iSlowMotionDetectFps,UINT delay,RECT *RectList, int iAreas, MOTION_DETECTION_CALLBACK MotionDetectionCallback,int reserved); PLAYER_API int __stdcall GetJpegImage(HANDLE hChannelHandle,UCHAR *ImageBuf,ULONG *Size,UINT nQuality); //WatchDog PLAYER_API int __stdcall SetWatchDog(UINT boardNumber,BOOL bEnable); //4.1 typedef void (*FILE_REF_DONE_CALLBACK)(UINT nChannel,UINT nSize); PLAYER_API int __stdcall HW_SetFileRef(HANDLE hChannel,BOOL bEnable,FILE_REF_DONE_CALLBACK FileRefDoneCallback); PLAYER_API int __stdcall HW_LocateByAbsoluteTime(HANDLE hChannel,SYSTEMTIME time); PLAYER_API int __stdcall HW_LocateByFrameNumber(HANDLE hChannel,UINT frmNum); PLAYER_API int __stdcall HW_GetCurrentAbsoluteTime(HANDLE hChannel,SYSTEMTIME *pTime); PLAYER_API int __stdcall HW_GetFileAbsoluteTime(HANDLE hChannel,SYSTEMTIME *pStartTime,SYSTEMTIME *pEndTime); //4.2 DLLEXPORT_API int __stdcall HW_ImportFileRef(HANDLE hChannel,char *pBuffer,UINT nSize); DLLEXPORT_API int __stdcall HW_ExportFileRef(HANDLE hChannel,char *pBuffer,UINT nSize); DLLEXPORT_API int __stdcall SetDisplayVideoCapture(UINT nDisplayChannel,BOOL bStart,UINT fps,UINT width,UINT height,unsigned char *imageBuffer); DLLEXPORT_API int __stdcall RegisterDisplayVideoCaptureCallback(IMAGE_STREAM_CALLBACK DisplayVideoCaptureCallback,void *context); DLLEXPORT_API int __stdcall SetDisplayVideoBrightness(UINT chan,int Brightness); DLLEXPORT_API int __stdcall SetChannelStreamCRC(HANDLE hChannel,BOOL bEnable); DLLEXPORT_API int __stdcall SetSubChannelStreamCRC(HANDLE hChannel,BOOL bEnable); DLLEXPORT_API int __stdcall HW_SetDecoderPostProcess(HANDLE hChannel,UINT param); // typedef void (*DECODER_VIDEO_CAPTURE_CALLBACK)(UINT nChannelNumber,void *DataBuf,UINT width,UINT height,UINT nFrameNum,UINT nFrameTime,SYSTEMTIME *pFrameAbsoluteTime,void *context); DLLEXPORT_API int __stdcall RegisterDecoderVideoCaptureCallback(DECODER_VIDEO_CAPTURE_CALLBACK DecoderVideoCaptureCallback,void *context); DLLEXPORT_API int __stdcall HW_SetDecoderVideoCapture(HANDLE hChannel,BOOL bStart,UINT param); DLLEXPORT_API int __stdcall HW_InputDataByFrame(HANDLE hChannel,PBYTE pBuf,DWORD nSize); /* 人脸抓拍接口:仅供测试、评估,以后可能会做修改。 */ typedef struct { short x,y,width,height; }FACE_AREA_DEMO; typedef struct { FACE_AREA_DEMO faceArea; FACE_AREA_DEMO leftEyeArea; FACE_AREA_DEMO rightEyeArea; FACE_AREA_DEMO leftPupilArea; FACE_AREA_DEMO rightPupilArea; FACE_AREA_DEMO noseArea; FACE_AREA_DEMO mouthArea; }FACE_INFO_DEMO; typedef void (*FACE_DETECTION_DEMO_CALLBACK)(UINT nChannel,UINT nFaceCount,FACE_INFO_DEMO *pFaceInfo, char *pData,UINT nDataSize,UINT nImageWidth,UINT nImageHeight); DLLEXPORT_API int __stdcall SetFaceDetectionDemo(HANDLE hChannelHandle,BOOL bEnable, UINT nFrameInterval,FACE_DETECTION_DEMO_CALLBACK pFunc, BOOL bCompress,UINT nCompressQuality,BOOL bLocateEyePos); #endif