⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hikplaympeg4.h

📁 基于海康威视DVR的完整远程监控程序
💻 H
字号:
///////////////////////////////////////////////////////////////////
//File:			HikPlayMpeg4.h
//Date:			2006-07-07
//Description:	Interface for HikPlayM4.dll
//Copyright:	Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2000-2008. All rights reserved.
///////////////////////////////////////////////////////////////////
#ifndef _HIK_PLAY_M4
#define _HIK_PLAY_M4

#if defined( _WINDLL)
	#define HIK_PLAYM4_API  extern "C"__declspec(dllexport) 
#else 
	#define HIK_PLAYM4_API  extern "C" //__declspec(dllimport) 
#endif

//Max channel numbers
#define HIK_PLAYM4_MAX_SUPPORTS 100
//Wave coef range;
#define MIN_WAVE_COEF -100
#define MAX_WAVE_COEF 100
//Timer type
#define TIMER_1 1 //Only 16 timers for every process.Default TIMER;
#define TIMER_2 2 //Not limit;But the precision less than TIMER_1; 
//BUFFER TYPE
#define BUF_VIDEO_SRC 1
#define BUF_AUDIO_SRC 2
#define BUF_VIDEO_RENDER 3
#define BUF_AUDIO_RENDER 4
//Error code
#define  HIK_PLAYM4_NOERROR					0	//no error
#define	 HIK_PLAYM4_PARA_OVER				1	//input parameter is invalid;
#define  HIK_PLAYM4_ORDER_ERROR				2	//The order of the function to be called is error.
#define	 HIK_PLAYM4_TIMER_ERROR				3	//Create multimedia clock failed;
#define  HIK_PLAYM4_DEC_VIDEO_ERROR			4	//Decode video data failed.
#define  HIK_PLAYM4_DEC_AUDIO_ERROR			5	//Decode audio data failed.
#define	 HIK_PLAYM4_ALLOC_MEMORY_ERROR		6	//Allocate memory failed.
#define  HIK_PLAYM4_OPEN_FILE_ERROR			7	//Open the file failed.
#define  HIK_PLAYM4_CREATE_OBJ_ERROR		8	//Create thread or event failed
#define  HIK_PLAYM4_CREATE_DDRAW_ERROR		9	//Create DirectDraw object failed.
#define  HIK_PLAYM4_CREATE_OFFSCREEN_ERROR 10	//failed when creating off-screen surface.
#define  HIK_PLAYM4_BUF_OVER			   11	//buffer is overflow
#define  HIK_PLAYM4_CREATE_SOUND_ERROR	   12	//failed when creating audio device.	
#define	 HIK_PLAYM4_SET_VOLUME_ERROR	   13	//Set volume failed
#define  HIK_PLAYM4_SUPPORT_FILE_ONLY	   14	//The function only support play file.
#define  HIK_PLAYM4_SUPPORT_STREAM_ONLY	   15	//The function only support play stream.
#define  HIK_PLAYM4_SYS_NOT_SUPPORT		   16	//System not support.
#define  HIK_PLAYM4_FILEHEADER_UNKNOWN     17	//No file header.
#define  HIK_PLAYM4_VERSION_INCORRECT	   18	//The version of decoder and encoder is not adapted.  
#define  HIK_PALYM4_INIT_DECODER_ERROR     19	//Initialize decoder failed.
#define  HIK_PLAYM4_CHECK_FILE_ERROR	   20	//The file data is unknown.
#define  HIK_PLAYM4_INIT_TIMER_ERROR	   21	//Initialize multimedia clock failed.
#define	 HIK_PLAYM4_BLT_ERROR			   22	//Blt failed.
#define  HIK_PLAYM4_UPDATE_ERROR		   23	//Update failed.
#define  HIK_PLAYM4_OPEN_FILE_ERROR_MULTI  24   //openfile error, streamtype is multi
#define  HIK_PLAYM4_OPEN_FILE_ERROR_VIDEO  25   //openfile error, streamtype is video
#define  HIK_PLAYM4_JPEG_COMPRESS_ERROR    26   //JPEG compress error
#define  HIK_PLAYM4_EXTRACT_NOT_SUPPORT    27	//Don't support the version of this file.
#define  HIK_PLAYM4_EXTRACT_DATA_ERROR     28	//extract video data failed.

//Max display regions.
#define MAX_DISPLAY_WND 4

//Display type
#define DISPLAY_NORMAL  1   
#define DISPLAY_QUARTER 2	

//Display buffers
#define MAX_DIS_FRAMES 50
#define MIN_DIS_FRAMES 6

//Locate by
#define BY_FRAMENUM  1
#define BY_FRAMETIME 2

//Source buffer
#define SOURCE_BUF_MAX	1024*100000
#define SOURCE_BUF_MIN	1024*50

//Stream type
#define STREAME_REALTIME 0
#define STREAME_FILE	 1

//frame type
#define T_AUDIO16	101
#define T_AUDIO8	100

#define T_UYVY		1
#define T_YV12		3
#define T_RGB32		7
//capability
#define SUPPORT_DDRAW		1 
#define SUPPORT_BLT         2 
#define SUPPORT_BLTFOURCC   4 
#define SUPPORT_BLTSHRINKX  8 
#define SUPPORT_BLTSHRINKY  16
#define SUPPORT_BLTSTRETCHX 32
#define SUPPORT_BLTSTRETCHY 64
#define SUPPORT_SSE         128
#define SUPPORT_MMX			256 

//Frame position
typedef struct{
	long nFilePos;
	long nFrameNum;
	long nFrameTime;
	long nErrorFrameNum;
	SYSTEMTIME *pErrorTime;
	long nErrorLostFrameNum;
	long nErrorFrameSize;
}FRAME_POS,*PFRAME_POS;

//Frame Info
typedef struct{
	long nWidth;
	long nHeight;
	long nStamp;
	long nType;
	long nFrameRate;
}FRAME_INFO;

//Frame 
typedef struct{
	char *pDataBuf;
	long  nSize;
	long  nFrameNum;
	BOOL  bIsAudio;
	long  nReserved;
}FRAME_TYPE;
//////////////////////////////////////////////////////////////////////////////
//API
//////////////////////////////////////////////////////////////////////////////

////////////////ver 1.0///////////////////////////////////////
//Initialize DirecDraw.Now invalid.
HIK_PLAYM4_API BOOL __stdcall  Hik_PlayM4_InitDDraw(HWND hWnd);
//Release directDraw; Now invalid.
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_RealeseDDraw();

HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_OpenFile(LONG nPort,LPSTR sFileName);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_CloseFile(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_Play(LONG nPort, HWND hWnd);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_Stop(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_Pause(LONG nPort,DWORD nPause);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_Fast(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_Slow(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_OneByOne(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetPlayPos(LONG nPort,float fRelativePos);
HIK_PLAYM4_API float __stdcall Hik_PlayM4_GetPlayPos(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetFileEndMsg(LONG nPort,HWND hWnd,UINT nMsg);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetVolume(LONG nPort,WORD nVolume);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_StopSound();
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_PlaySound(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_OpenStream(LONG nPort,PBYTE pFileHeadBuf,DWORD nSize,DWORD nBufPoolSize);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_InputData(LONG nPort,PBYTE pBuf,DWORD nSize);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_CloseStream(LONG nPort);
HIK_PLAYM4_API int  __stdcall  Hik_PlayM4_GetCaps();
HIK_PLAYM4_API DWORD __stdcall Hik_PlayM4_GetFileTime(LONG nPort);
HIK_PLAYM4_API DWORD __stdcall Hik_PlayM4_GetPlayedTime(LONG nPort);
HIK_PLAYM4_API DWORD __stdcall Hik_PlayM4_GetPlayedFrames(LONG nPort);

////////////////ver 2.0 added///////////////////////////////////////
HIK_PLAYM4_API BOOL __stdcall	Hik_PlayM4_SetDecCallBack(LONG nPort,void (CALLBACK* DecCBFun)(long nPort,char * pBuf,long nSize,FRAME_INFO * pFrameInfo, long nReserved1,long nReserved2));
HIK_PLAYM4_API BOOL __stdcall	Hik_PlayM4_SetDisplayCallBack(LONG nPort,void (CALLBACK* DisplayCBFun)(long nPort,char * pBuf,long nSize,long nWidth,long nHeight,long nStamp,long nType,long nReserved));
HIK_PLAYM4_API BOOL __stdcall	Hik_PLayM4_ConvertToBmpFile(char * pBuf,long nSize,long nWidth,long nHeight,long nType,char *sFileName);
HIK_PLAYM4_API DWORD __stdcall	Hik_PlayM4_GetFileTotalFrames(LONG nPort);
HIK_PLAYM4_API DWORD __stdcall	Hik_PlayM4_GetCurrentFrameRate(LONG nPort);
HIK_PLAYM4_API DWORD __stdcall	Hik_PlayM4_GetPlayedTimeEx(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall	Hik_PlayM4_SetPlayedTimeEx(LONG nPort,DWORD nTime);
HIK_PLAYM4_API DWORD __stdcall	Hik_PlayM4_GetCurrentFrameNum(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall	Hik_PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode);
HIK_PLAYM4_API DWORD __stdcall	Hik_PlayM4_GetFileHeadLength();
HIK_PLAYM4_API DWORD __stdcall	Hik_PlayM4_GetSdkVersion();

////////////////ver 2.2 added///////////////////////////////////////
HIK_PLAYM4_API DWORD __stdcall  Hik_PlayM4_GetLastError(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_RefreshPlay(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetOverlayMode(LONG nPort,BOOL bOverlay,COLORREF colorKey);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_GetPictureSize(LONG nPort,LONG *pWidth,LONG *pHeight);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetPicQuality(LONG nPort,BOOL bHighQuality);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_PlaySoundShare(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_StopSoundShare(LONG nPort);

////////////////ver 2.4 added///////////////////////////////////////
HIK_PLAYM4_API LONG __stdcall Hik_PlayM4_GetStreamOpenMode(LONG nPort);
HIK_PLAYM4_API LONG __stdcall Hik_PlayM4_GetOverlayMode(LONG nPort);
HIK_PLAYM4_API COLORREF __stdcall Hik_PlayM4_GetColorKey(LONG nPort);
HIK_PLAYM4_API WORD __stdcall Hik_PlayM4_GetVolume(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_GetPictureQuality(LONG nPort,BOOL *bHighQuality);
HIK_PLAYM4_API DWORD __stdcall Hik_PlayM4_GetSourceBufferRemain(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_ResetSourceBuffer(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetSourceBufCallBack(LONG nPort,DWORD nThreShold,void (CALLBACK * SourceBufCallBack)(long nPort,DWORD nBufSize,DWORD dwUser,void*pResvered),DWORD dwUser,void *pReserved);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_ResetSourceBufFlag(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetDisplayBuf(LONG nPort,DWORD nNum);
HIK_PLAYM4_API DWORD __stdcall Hik_PlayM4_GetDisplayBuf(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_OneByOneBack(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetFileRefCallBack(LONG nPort, void (__stdcall *pFileRefDone)(DWORD nPort,DWORD nUser),DWORD nUser);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetCurrentFrameNum(LONG nPort,DWORD nFrameNum);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_GetKeyFramePos(LONG nPort,DWORD nValue, DWORD nType, PFRAME_POS pFramePos);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_GetNextKeyFramePos(LONG nPort,DWORD nValue, DWORD nType, PFRAME_POS pFramePos);
#if (WINVER > 0x0400)
//Note: These funtion must be builded under win2000 or above with Microsoft Platform sdk.
//	    You can download the sdk from "http://www.microsoft.com/msdownload/platformsdk/sdkupdate/";
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_InitDDrawDevice();
HIK_PLAYM4_API void __stdcall Hik_PlayM4_ReleaseDDrawDevice();
HIK_PLAYM4_API DWORD __stdcall Hik_PlayM4_GetDDrawDeviceTotalNums();
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetDDrawDevice(LONG nPort,DWORD nDeviceNum);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_GetDDrawDeviceInfo(DWORD nDeviceNum,LPSTR  lpDriverDescription,DWORD nDespLen,LPSTR lpDriverName ,DWORD nNameLen,HMONITOR *hhMonitor);
HIK_PLAYM4_API int  __stdcall  Hik_PlayM4_GetCapsEx(DWORD nDDrawDeviceNum);
#endif
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_ThrowBFrameNum(LONG nPort,DWORD nNum);

////////////////ver 2.5 added///////////////////////////////////////
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetDisplayType(LONG nPort,LONG nType);
HIK_PLAYM4_API long __stdcall Hik_PlayM4_GetDisplayType(LONG nPort);

////////////////ver 3.0 added///////////////////////////////////////
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetDecCBStream(LONG nPort,DWORD nStream);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetDisplayRegion(LONG nPort,DWORD nRegionNum, RECT *pSrcRect, HWND hDestWnd, BOOL bEnable);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_RefreshPlayEx(LONG nPort,DWORD nRegionNum);
#if (WINVER > 0x0400)
//Note: The funtion must be builded under win2000 or above with Microsoft Platform sdk.
//	    You can download the sdk from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/;
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetDDrawDeviceEx(LONG nPort,DWORD nRegionNum,DWORD nDeviceNum);
#endif
/////////////////v3.2 added/////////////////////////////////////////

HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_GetRefValue(LONG nPort,BYTE *pBuffer, DWORD *pSize);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetRefValue(LONG nPort,BYTE *pBuffer, DWORD nSize);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_OpenStreamEx(LONG nPort,PBYTE pFileHeadBuf,DWORD nSize,DWORD nBufPoolSize);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_CloseStreamEx(LONG nPort);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_InputVideoData(LONG nPort,PBYTE pBuf,DWORD nSize);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_InputAudioData(LONG nPort,PBYTE pBuf,DWORD nSize);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_RigisterDrawFun(LONG nPort,void (CALLBACK* DrawFun)(long nPort,HDC hDc,LONG nUser),LONG nUser);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_RegisterDrawFun(LONG nPort,void (CALLBACK* DrawFun)(long nPort,HDC hDc,LONG nUser),LONG nUser);
//////////////////v3.4/////////////////////////////////////////////////////
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetTimerType(LONG nPort,DWORD nTimerType,DWORD nReserved);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_GetTimerType(LONG nPort,DWORD *pTimerType,DWORD *pReserved);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_ResetBuffer(LONG nPort,DWORD nBufType);
HIK_PLAYM4_API DWORD __stdcall Hik_PlayM4_GetBufferValue(LONG nPort,DWORD nBufType);
//////////////////V3.6/////////////////////////////////////////////////////////
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_AdjustWaveAudio(LONG nPort,LONG nCoefficient);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetVerifyCallBack(LONG nPort, DWORD nBeginTime, DWORD nEndTime, void (__stdcall * funVerify)(long nPort, FRAME_POS * pFilePos, DWORD bIsVideo, DWORD nUser),  DWORD  nUser);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetAudioCallBack(LONG nPort, void (__stdcall * funAudio)(long nPort, char * pAudioBuf, long nSize, long nStamp, long nType, long nUser), long nUser);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetEncTypeChangeCallBack(LONG nPort,void(CALLBACK *funEncChange)(long nPort,long nUser),long nUser);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetColor(LONG nPort, DWORD nRegionNum, int nBrightness, int nContrast, int nSaturation, int nHue);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_GetColor(LONG nPort, DWORD nRegionNum, int *pBrightness, int *pContrast, int *pSaturation, int *pHue);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetEncChangeMsg(LONG nPort,HWND hWnd,UINT nMsg);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_GetOriginalFrameCallBack(LONG nPort, BOOL bIsChange,BOOL bNormalSpeed,long nStartFrameNum,long nStartStamp,long nFileHeader,void(CALLBACK *funGetOrignalFrame)(long nPort,FRAME_TYPE *frameType, long nUser),long nUser);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_GetFileSpecialAttr(LONG nPort, DWORD *pTimeStamp,DWORD *pFileNum ,DWORD *pReserved);


//////////////////V4.7.0.0/////////////////////////////////////////////////////////
//convert yuv to jpeg file
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_ConvertToJpegFile(char * pBuf,long nSize,long nWidth,long nHeight,long nType,char *sFileName);
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetJpegQuality(long nQuality);

//set deflash
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_SetDeflash(LONG nPort,BOOL bDeflash);
//InputFileHead
HIK_PLAYM4_API BOOL __stdcall Hik_PlayM4_InputFileHead(LONG nPort,PBYTE pFileHeadBuf,DWORD nSize);
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -