//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//File:			AnalyzeData.h
//Date:			2006-11-13
//Description:	Interface for AnalyzeData.dll
//Copyright:	Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights 
//reserved.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef __HIK_ANALYZEDATANEW_H__
#define __HIK_ANALYZEDATANEW_H_

#define CPLAYER_API  extern "C" 

#define FILE_HEAD			0			// 文件头
#define VIDEO_I_FRAME		1			// 视频I帧
#define VIDEO_B_FRAME		2			// 视频B帧
#define VIDEO_P_FRAME		3			// 视频P帧
#define VIDEO_BP_FRAME		4			// 视频BP帧
#define VIDEO_BBP_FRAME		5			// 视频B帧B帧P帧
#define AUDIO_PACKET		10			// 音频包

typedef struct
{
	int		  nPacketType;			// 包类型
								//  0-文件头
								// 1-I帧
								// 2-B帧
								// 3-P帧
								// 4-BP帧(2帧)
								// 5-BBP帧(3帧)
								// 10-音频包
	char*		  pPacketBuffer;			// 缓存区地址
	unsigned int	  unPacketSize;			// 包的大小
	
	// 绝对时标
	int		  nYear;				// 时标:年		
	int		  nMonth;				// 时标:月
	int		  nDay;				// 时标:日
	int		  nHour;				// 时标:时
	int		  nMinute;				// 时标:分
	int		  nSecond;				// 时标:秒
	// 相对时标
	unsigned int   unTimeStamp;			// 相对时标
}PACKET_INFO;

typedef struct
{
	int		  nPacketType;			// 包类型
								//  0-文件头
								// 1-I帧
								// 2-B帧
								// 3-P帧
								// 4-BP帧(2帧)
								// 5-BBP帧(3帧)
								// 10-音频包
	char*			pPacketBuffer;			// 缓存区地址
	unsigned int   unPacketSize;			// 包的大小
	
	// 绝对时标
	int		  nYear;				// 时标:年		
	int		  nMonth;				// 时标:月
	int		  nDay;				// 时标:日
	int		  nHour;				// 时标:时
	int		  nMinute;				// 时标:分
	int		  nSecond;				// 时标:秒
	// 相对时标
	unsigned int   unTimeStamp;			// 相对时标低位

	//新添加
	unsigned int   unFrameNum;			 	// 帧序号
	unsigned int   unFrameRate;				// 帧率
	unsigned short usWidth;			  		// 图像宽度
	unsigned short usHeight;			 		// 图像高度
	unsigned int	  unTimeStampHigh;			// 相对时标高位
	unsigned int   unFlag;				 	// 帧标记
	unsigned int   unReserved[5];				// 保留
}PACKET_INFO_EX;

CPLAYER_API  long  HIKANA_CreateStream ( unsigned int unBuffSize );	
CPLAYER_API  void  HIKANA_Destroy ( long lHandle );
CPLAYER_API  int   HIKANA_Reset ( long lHandle );
CPLAYER_API  int   HIKANA_ClearBuffer ( long lHandle );
CPLAYER_API  int   HIKANA_InputData ( long lHandle, unsigned char* pBuffer, unsigned int unBufferSize );
CPLAYER_API  int   HIKANA_GetOnePacketEx ( long lHandle, PACKET_INFO_EX *pPacketInfo );
CPLAYER_API  int  HIKANA_GetLastErrorH ( long lHandle );
#endif
