﻿
#include <stdint.h>
#include <memory>
#include <string>

//#pragma pack(1)
const int IMAGE_WIDTH_IR = 1280;
const int IMAGE_HEIGHT_IR = 1024;
const int IMAGE_WIDTH_VL = 1920;
const int IMAGE_HEIGHT_VL = 1080;

const int PARA_IR_LINE = 40; //红外参数行




#define M_ST_OBJ_NUM (100)
#define M_LT_OBJ_NUM (10)

typedef struct tag_Objinfo
{
	float x;            //中心点x
	float y;            //中心点x
	float w;            //目标宽
	float h;            //目标高
	float score;        //置信度
	int classIndex;     //类别
	int frameID;        //图像帧编号
	int key_ID;         //关键部位序号
}OBJ_INFO;

typedef struct tgPointXY
{
	double X;
	double Y;
}PointXY;
typedef struct tarResult
{
	unsigned char  nObjID;		//目标编号，从1开始，最大值为目标关联后目标数目
	double         tLon;        //目标经度
	double         tLat;        //目标纬度
	double         tH;          //目标高度
	double         tX;		    //地心地固坐标系：X
	double         tY;		    //地心地固坐标系：Y
	double         tZ;			//地心地固坐标系：Z
	double         tSpeedX;     //目标X方向速度
	double         tSpeedY;     //目标Y方向速度
	double         tSpeedZ;     //目标Z方向速度
	double         Speed;       //目标的合速度
	double         tServoAz;    //地理引导伺服输出方位角
	double         tServoPt;	//地理引导伺服输出俯仰角        
	double         ENUPole_Az;  //北天东地理极坐标—方位角
	double         ENUPole_Pt;  //北天东地理极坐标—俯仰角
	double         preDis;       //线性预测激光测距值
}tarResult;


typedef struct stTrgOutput1
{
	int nObjID;   //目标编号
	double tLon;            //目标经度
	double tLat;		 	//目标纬度
	double tH;			    //目标高度
	double tX;				//地心地固，X
	double tY;				//地心地固，Y
	double tZ;				//地心地固，Z
	double tSpeedX;         //目标X方向速度
	double tSpeedY;         //目标Y方向速度
	double tSpeedZ;         //目标Z方向速度
	double Speed;           //目标的合速度
	double sumLon;            //目标经度和
	double sumLat;		 	//目标纬度和
	double sumH;			    //目标高度和
	double tfLon;            //目标均值滤波经度
	double tfLat;		 	//目标均值滤波纬度
	double tfH;			    //目标均值滤波高度
	int		T;				//有源定位次数
	double BLon;            //图像中B点的经度
	double BLat;            //图像中B点的纬度
	double BH;              //图像中B点的高度
	double ALon;            //图像中心点的经度
	double ALat;            //图像中心点的纬度
	double AH;              //图像中心点的高度
}stTrgOutput1;

typedef struct
{
	uint16_t u16Gpsweek;                 //GPS周
	uint32_t u32Gpssec;                  //GPS秒
	float  fAz;                          //偏航角0～360
	float  fPt;                          //俯仰角-90～90
	float  fRol;                         //横滚角-180～180
	double  i32Lat;                      //纬度-90～90  比例系数1E-7
	double  i32Lon;                      //经度-180～180 比例系数1E-7
	float  i32Height;                    //高度比例系数0.001
	float  fEspeed;                      //东向速度m/s +/-250
	float  fNspeed;                      //北向速度m/s +/-250
	float  fSkyspeed;                    //天向速度m/s +/-250
	double dGyroX;                       //罗盘X轴角速度 m/s
	double dGyroY;                       //罗盘Y轴角速度 m/s
	double dGyroZ;                       //罗盘Z轴角速度 m/s
	char    hour;                        //时
	char    minute;                      //分
	char    second;                      //秒
	int     millsec;                     //毫秒
}INS_DATA1;

// 目标跟踪状态
typedef enum tagTrackingStatus1
{
	xNOT_TRACKING = 0,//未跟踪
	xSTABLE_TRACKING = 1,//稳跟
	xMEM_TRACKING = 2//记忆跟踪
}TrackingStatus1;

typedef struct tagRect32S1  //BYTES: 4*4=16
{
	int  x;                 /*> 左上点x坐标 */
	int  y;                 /*> 左上点y坐标 */
	int  w;                 /*> 矩形宽度 */
	int  h;                 /*> 矩形高度 */
}RECT32S1;

// 尺度模式
typedef enum tagSizeType1
{
	xunKnown,		//不确定目标或未识别尺寸类型
	xDimTarget,		//弱小目标
	xSmallTarget,	//小目标
	xMiddleTarget,	//临界目标
	xAreaTarget		//面目标
}SizeType1;


// 目标检测算法标识
typedef enum tagemObjSrc1
{
	xArith_DST = 1,  // 检测来源--小目标
	xArith_DAT = 2,  // 检测来源--面目标
	xArith_AI = 3,   // 检测来源--AI检测
	xArith_KCF = 4,  // 检测来源--KCF
	xArith_TLD = 5,  // 检测来源--TLD
	xArith_Manual = 6,
	xArith_SiamRPN = 7,  // 检测来源--SiamRPN
	xArith_AIMap = 8   // 检测来源--AI检测映射
}emObjSrc1;

typedef struct tagARIDLL_OBJINFO1
{
	//*****1.目标状态信息*****
	int            nFrameId;       //目标当前信息所对应的帧编号
	unsigned char  unObjStatus;    //目标搜索状态信息，更新/新增/删除
	unsigned char  bMainTracked;   //目标是否为主跟踪目标
	TrackingStatus1 unTrackingStatus;//目标跟踪状态


	//*****2.目标管道信息*****
	int            nOutputID;      //输出告警目标
	int            nInPipesID;     //目标在管道数组中的编号
	int  		   nPipeLostCnt;   //目标当前管道连续丢失计数
	int			   nTotalCnt;	   // 目标当前管道总帧数
	unsigned char  bInCurrFov;     //目标是否在当前视场
	int            nAntiJamming;   // 抗干扰状态

	//*****3.目标核心信息*****
	float          nX;             //目标中心点图像坐标x
	float          nY;             //目标中心点图像坐标y
	float          nObjW;          //目标宽度
	float          nObjH;          //目标高度
	float          fAz;            //目标当前方位角 
	float          fPt;            //目标当前俯仰角

	//  目标预测位置
	float          fPredAz;
	float          fPredPt;

	//*****4.其他属性信息*****
	int            nObjGray;       //目标灰度
	int			   nObjMaxGray;    //目标极值灰度
	int            nMaxPosX;       //目标极大值点X
	int            nMaxPosY;       //目标极大值点Y
	int            nPixCnts;       //目标像素个数
	unsigned char  ubSizeType;     //目标尺寸类型:    
	float          fProb;          //目标识别置信度
	float          fSNR;           //目标信噪比值
	float          fTgEntropy;     //目标信息熵值
	float          fBgEntropy;     //目标背景信息熵
	float          fSaliency;      //目标显著性值

	// 
	bool			nJammingSucess; //目标成功干扰
	int				nClassID;       //目标类型

	// 如果处于跟踪状态，则输出下列值
	RECT32S1 SA_SrBox;//小面目标跟踪波门
	SizeType1 SA_SizeType;//尺度信息
	RECT32S1 KCF_SrBox;//KCF波门
	RECT32S1 TLD_SrBox;//TLD波门
	float fConf;//跟踪置信度
	emObjSrc1 ArithSrc;//跟踪算法来源，决策后

	unsigned char   byte[20];//预留

	//-----------------------------------------------//
	bool      MoveStatus;     // 运动状态，true--运动 false -- 静止

}ARIDLL_OBJINFO1;



//////////////////////////
//地理引导信息
typedef struct
{
	double fLon;              	//载机经度
	double fLat;		 	  	//载机纬度
	double fWGS_H;			    //载机高度
	double fPlatAz;			    //载机航向角
	double fPlatPt;			    //载机俯仰角
	double fPlatRoll;		  	//载机横滚角
	double fServoAz;          	//伺服方位角
	double fServoPt;          	//伺服俯仰角
	double x;                 	//CGCS直角坐标x
	double y;                 	//CGCS直角坐标y
	double z;                 	//CGCS直角坐标z
	double Distance;          	//激光测距值
	double tLon;              	//目标经度（标定点真值）
	double tLat;              	//目标纬度（标定点真值）
	double tH;                	//目标高度（标定点真值）
}GeogGuideInfo;


//目标变化信息
typedef struct
{
	char change[20];
	float x1;
	float y1;
	float x2;
	float y2;
}variationInfo;

//跟踪目标信息



//跟踪目标信息
typedef struct tagxARIDLL_OUTPUT
{
	int nTimeStamp;                 //当前帧时间戳(透传)，单位：毫秒
	int nSysMode;                   // 系统工作模式(透传)
	int nFrmNum;                    //处理帧计数

	int nStatus;                    //工作状态--待命/检测/跟踪/丢失状态信息等

	//目标检测(短时航迹点，用于用户指示)
	int nAlarmObjCnts;                          //当前帧告警目标总个数
	ARIDLL_OBJINFO1  stAlarmObjs[M_ST_OBJ_NUM];	//检测目标信息数组

	//目标跟踪(长时航迹点，第0个为主目标送伺服跟踪)	//锁定主跟踪
	int nTrackObjCnts;							//跟踪目标个数
	ARIDLL_OBJINFO1  stTrackers[M_LT_OBJ_NUM];	    //跟踪器输出数组

}xTRACK_OUTPUT;

//目标融合识别信息
typedef struct tagOBJINFO_RECT
{
	float           nx;             // 目标框中心点图像坐标x
	float           ny;             // 目标框中心点图像坐标y
	float           nW;             // 目标宽度
	float           nH;             // 目标高度
	float           fconfidence;    // 目标识别置信度
	int             class_id;       // 目标类别
}OBJINFO_RECT1;

//地理引导结果
typedef struct stGuide
{
	double Yaw1;                //伺服方位（解1）
	double Pitch1;              //伺服俯仰（解1）
	double Yaw2;                //伺服方位（解2）
	double Pitch2;              //伺服俯仰（解2）
	double ro;                  //目标和载机间直线距离（激光测距理论值）
}Guide;

//定位结果
typedef struct stTrgOutput2
{
	unsigned char 	nObjID;             //目标编号
	double 		    tLon;               //目标经度
	double 		    tLat;               //目标纬度
	double 		    tH;                 //目标高度
	double		    tX;                 //地心地固，X
	double 		    tY;                 //地心地固，Y
	double 		    tZ;                 //地心地固，Z
	double 		    tSpeedX;            //目标X方向速度
	double 		    tSpeedY;            //目标Y方向速度
	double 		    tSpeedZ;            //目标Z方向速度
	double 		    Speed;              //目标的合速度
}stTrgOutput2;

typedef struct tagFusionSpeed32F  //BYTES: 2*4=8
{
	float vx; //x方向速度
	float vy; //y方向速度
	float vz; //z方向速度
}SPEEDXYZ32F;

typedef struct tagPoint3D
{
	double x;  																//��άֱ������ϵx����
	double y;  																//��άֱ������ϵy����
	double z;  																//��άֱ������ϵz����
} POINT_3D;

typedef struct tagPoint2S
{
	short x;  																//��άͼ��x����
	short y;  																//��άͼ��y����
} POINT_2S;
//������ά����ṹ��--������
typedef struct tagPoint3F
{
	float x;  																//��άֱ������ϵx����
	float y;  																//��άֱ������ϵy����
	float z;  																//��άֱ������ϵz����
} POINT_3F;
//告警目标信息
typedef struct
{
	unsigned int	uiTargetTimeTag;		    //时间标签
	unsigned short  usMissleIdx;   			    //标识告警目标索引，目标编号，（1~255）
	unsigned short	usMissleBatchNum;		    //目标批号，系统统一编号
	unsigned short  usGuideDetectState;		    //被引导红外探测状态 0：无效 1：成功
	unsigned short	usQuickWarningTag;		    //快速目标告警标识，0=NA，1：快速告警2：自主告警
	short           sAzimuthAng;			    //目标方位角，单位0.01°，取值范围-180°~+180° 
	unsigned short	usAzimuthAngErrorAbs;	    //方位角与均值的误差绝对值，单位：0.01°
	short           sPitchingAng; 			    //目标俯仰角，单位0.01°，取值范围-90°~+90°
	unsigned short  usPitchingAngErrorAbs;	    //俯仰角与估计均值的误差绝对值，单位：0.01°
	unsigned char	ucTargetType;			    //目标类型，0=NA，1=导弹，2=未知
	unsigned char   ucSpatialAttribute;		    //空间属性，0=NA，1=空中，2=地面
	unsigned char	ucIsActiveOrPassiveStage;	//主被动状态，0=NA，1=主动段，2=被动段
	unsigned char	ucNewOrOld;			        //目标新旧标记 0=旧目标 1=新目标
	unsigned char	ucTargetSize;			    //目标大小（尺寸）
	unsigned short	usTargetEnergy;			        //目标能量

	POINT_2S        pPos;					    //目标位置（图像坐标）
	POINT_3F  	    pPos3D;        		        //目标映射到球面上的三维空间坐标
	unsigned short  usPlace;       			    //小目标坐标位于哪一副图像
	unsigned short  usPipeIndex;   			    //告警目标所在的管道序号
	unsigned char   ucIsNewAlarm;  		        //是否为新的告警，0为否，1为是            
	unsigned char   ucOutputAlarm; 		        //待输出告警，0表示不是告警，1表示超出16个小于32个的候选告警目标，2表示为筛选的四个告警目标（20ms），3表示为上报的告警目标（100ms）
	short           sAlarmTypeFlag;             //告警类型标记

	SPEEDXYZ32F     fPlaneSpeedXYZ;	            //载体地心直角坐标系下的绝对速度
	float           fSpeedAz;		            //方位速度信息(相对载体)
	float           fSpeedPt;		            //俯仰速度信息(相对载体)
	SPEEDXYZ32F     fObjSpeedXYZ;	            //目标在地心直角坐标系下的绝对速度
	float nDistance;	                        //告警目标距离估计值
}ALARM_PARA;

typedef struct
{
	float fAz;
	float fPz;
	float           fservoAzSpeed;              //当前帧伺服方位角速度，横滚角速度
	float           fservoPtSpeed;              //当前帧伺服俯仰角速度
}Servo_Control;

typedef struct stdWgs84GPS
{
	double Lon;			//����
	double Lat;			//γ��
	double Height;		//�߶�
}STD_WGS84_GPS;
typedef struct stdSpeed  //BYTES: 2*4=8
{
	double vx; //x�����ٶ�
	double vy; //y�����ٶ�
	double vz; //z�����ٶ�
}STD_SPEED;
typedef struct  stdPoint64d
{
	double X;  //����ֱ������ϵX
	double Y;  //����ֱ������ϵY
	double Z;  //����ֱ������ϵZ
}STD_POINT64D;
typedef	struct stdFilter_State
{
	//��صع̵���ֱ������ϵϵ
	STD_WGS84_GPS	 nKalManBLH;			//Ŀ��������ϵBLH��WGS84����Ϣ�����ƽ��
	STD_POINT64D	 pfKalmanPos;			//Ŀ���˲�����λ�� //BYTES: 2*4=8
	STD_WGS84_GPS	 nKalManBLHNext;			//Ŀ����һ֡�������ϵBLH��WGS84����Ϣ�����ƽ��
	STD_POINT64D	 pfKalmanPosNext;			//Ŀ����һ֡�˲�����λ�� //BYTES: 2*4=8
	STD_POINT64D	 fKalmanSpeed;			//Ŀ���˲������ٶ�  x\y\z����  //BYTES: 2*4=8
	STD_POINT64D     fKalmanAccSpeed;		//Ŀ���˲����Ƽ��ٶ�  x\y\z����  //BYTES: 2*4=8
}STD_FILTER_ST;

typedef	struct stdServo
{
	double fAz;			//方位角
	double fPt;			//俯仰角
	double nDistance;	//目标激光距离
}STD_SERVO;
typedef struct stdFilterVideoOutput  //BYTES: 3*1 + 1*2 + 7*4 + 3*8 = 57
{
	unsigned char	  nOutputNums;						//输出滤波目标个数
	bool			bObject;        //标识目标是否已被创建。1-目标已创建，0-目标未创建
	unsigned int    unFrmTime;		//目标截获时刻
	unsigned int    unFrmID;		//帧编号
	//目标滤波信息
	STD_WGS84_GPS	nObjBLH;				//大地坐标系wgs84 目标经纬高
	STD_SPEED		pfObjSpeed;				//目标地心直角坐标系下的绝对速度
	STD_POINT64D	pfObjCurrent;			//目标的大地直角空间坐标系
	STD_FILTER_ST   pfObj_filterInfo;		//目标估计状态
	//载体信息
	STD_WGS84_GPS	nPlatBLH;			//大地坐标系wgs84 目标经纬高
	STD_SPEED		pfPlatSpeed;		//目标地心直角坐标系下的绝对速度
	STD_POINT64D	pfPlatCurrent;		//目标的大地直角空间坐标系
	STD_FILTER_ST   pfPlat_filterInfo;	//载体估计状态
	//估计信息
	STD_SERVO		pfObjZtAangle;		//目标在载体坐标的指向
	STD_SERVO       pfObjServeAangle;	//目标在伺服坐标的指向
	//预测信息
	STD_SERVO		pfObjZtAangleNext;		//目标在载体坐标的指向
	STD_SERVO       pfObjServeAangleNext;	//目标在伺服坐标的指向
	//量测信息
	STD_SERVO       pfServeAangle;	//伺服码盘值 //输入值【可不移植】

	//长时间外推
	STD_SERVO       pfServeAanglePredict[10];	//伺服长时间外推,10s
	STD_WGS84_GPS	nPlatPreictBLH[10];
	STD_WGS84_GPS	nObjPredictBLH[10];
}STD_FILTER_VIDEOOUTPUT;
typedef	struct Angle2DSpeed32f
{
	double fPt;//俯仰角
	double fAz;//方位角
}ANGLE2DSPEED32F;

//2.大地坐标系WGS84_GPS结构体
typedef struct  tagGPS
{
	float Lon;	//经度
	float Lat;	//纬度
	float Height;	//高度
} WGS84_GPS;

//载机姿态角度结构体
typedef struct  tagAngle3D32F
{
	float fAz; //偏航角
	float fPt;	 //俯仰角
	float fRt; //滚转角
}ANGLE3D32F;
//融合信息
typedef struct tagFusionTarget
{
	bool           	    bOccupy;   		    //标识管道是否已经被占用
	unsigned char		nTargetID;			//目标批号
	unsigned char		nObjClassID;		//目标类别
	float           	score;			    //融合后目标识别的置信度

	//目标信息（未定位时，以下3个结构体变量输出为0）
	WGS84_GPS		    ObjBLH;			    //目标大地坐标系BLH（WGS84）信息
	POINT_3D        	ObjXYZ;			    //目标地心直角坐标系下XYZ
	SPEEDXYZ32F     	fObjSpeedXYZ;		//目标地心直角坐标系下的绝对速度

	//本机载机信息
	WGS84_GPS 		    PlaneBLH;			//载机大地坐标系BLH（WGS84）信息）
	POINT_3D   		    fPlanePnt;			//本机位置
	SPEEDXYZ32F 		sfPlaneSpeed;		//本机速度
	ANGLE3D32F 		    fPlaneAngle;		//载机姿态（机体坐标系）

	//目标融合位置信息：地固地心坐标系
	POINT_3D 		    ptBornPos;			//目标初始位置
	POINT_3D 		    ptPredictPos;		//目标预测位置

	//只能提供已定位的本机以及外机的光电目标信息，外机未定位目标无法提供相对本机的方位、俯仰
	//(缺少距离信息，或这友机信息只提供定位后的目标信息)
	float 			    fAz;				//目标方位角（相对于载体，定位目标的相对角度）
	float 			    fPt;			    //目标俯仰角（相对于载体）
	ANGLE2DSPEED32F 	sfSpeed;			//目标速度
	//ANGLE2DSPEED32F 	sfPredictAngle;		//目标角度位置
	bool				bLocation;			//已定位数据标志位定位模块可以提供
	bool    			JMBMonitor;		    //敌方是否投放干扰弹（透传）
	bool    			MissMonitor;		//敌方是否发射导弹（透传）
}FUSION_OBJECT;

//目标意图
typedef struct TarGetPurpose
{
	unsigned char 	ucFoeState;     		//敌机状态，具体为上面几种宏定义的状态
	float 			fConfidence;            //当前意图判断的置信度（作为备用字段）
}TarGetPurpose;

//意图结果
typedef struct FusedDataDst
{
	unsigned char 	ucNumber; 			    //敌目标编号
	unsigned char 	ucClassType; 			//敌目标类型, 1防空导弹车，2雷达车，3高炮，4飞机，5是装甲、汽车、油罐车等地面车辆

	//事件信息
	bool 			bFoeRadarIsOpen;		//雷达是否展开
	bool 			bFoeMissileIsOpen;		//导弹车是否竖起
	bool 			bFoeCannonIsopen;		//高炮是否竖起
	bool 			bFoeCarsIsAround;		//高炮或防空导弹是否散开
	bool 			bFoeCarsIsArrange;		//高炮或防空导弹是否成一字型
	bool 			bFoeIsFire;				//敌是否发射导弹或高炮
	float 			fFoeSpeed;				//敌速度
	float 			fFoeDistance;			//敌我距离
	float 			fAzimuthAng;			//目标方位角
	float 			fPitchingAng;			//目标俯仰角
	POINT_3D 		FoeLocation;			//目标坐标
	POINT_3D 		ObjPrePath[10];    		//目标预测轨迹
	//  POINT_3D 	    FoeGroundLoc[10];  		//地面遭遇位置

	float 			fOurPlaneSpeed;       	//我机飞行速度
	bool 			bOurPlaneSearchRadar;  	//我机是否开启搜索雷达
	bool 			bOurPlaneTrackRadar;   	//我机是否开启跟踪雷达
	bool 			bOurMissile;           	//我机是否发射导弹
	POINT_3D 		OurPlaneLocation;  		//我机坐标

	TarGetPurpose 	ObjPurPose;   			//目标意图
}FusedDataDst;



//威胁等级排序
typedef struct ParaThreatOutput
{
	char bDangerLevel;				//目标威胁等级(编号为1，目标威胁等级最高)
	char uObjID;					//威胁目标对应的编号
	float fThreat;				    //目标威胁程度（值越大等级越小，即威胁程度越高）
}PTOutput;


//激光测距值
typedef struct
{
	int  	type;		                //激光测距类型 
	int  	freq;	                    //激光测距频率
	double  laserDistance;              //激光测距值
}LaserInfo;


typedef enum tagGLB_VIDE_TYPE
{
	xGLB_VIDEO_IR_SW = 0x01,             //红外短波
	xGLB_VIDEO_IR_MW = 0x02,             //红外中波
	xGLB_VIDEO_IR_LW = 0x03,             //红外长波
	xGLB_VIDEO_VL = 0x04                 //电视
}GLB_VIDE_TYPE;

//相机信息
typedef struct
{
	GLB_VIDE_TYPE	unVideoType;	    //视频源类型
	float           dx;                 //光轴与图像中心像素偏差x
	float           dy;                 //光轴与图像中心像素偏差y
	int             ImgWidth;		    //图像分辨率宽
	int             ImgHeight;          //图像分辨率高
	float           nPixleSize;         //像元尺寸 单位：um
	float           nFocal;		        //相机焦距 单位：mm	
}CamInfo1;


//载机信息
typedef struct
{
	unsigned char  	nPlaneID;           //载机ID
	double          B;                  //纬度
	double          L;                  //经度
	double          H;                  //高
	double          fRoll;              //横滚角
	double          fPitch;             //俯仰角
	double          fYaw;               //方位角
}AirCraftInfo1;


// //伺服信息
// typedef struct 
// {
//     float			fServoAz;		    //当前帧伺服方位角
// 	float			fServoPt;		    //当前帧伺服俯仰角
// 	float			fServoAzSpeed;	    //当前帧伺服方位角速度
// 	float			fServoPtSpeed;	    //当前帧伺服俯仰角速度     
// }ServoInfo1;
//UTC时间
typedef struct TIME
{
	unsigned short 						year; 						//年，0-65535
	unsigned char  						month;   					//月，1-12
	unsigned char  						day; 							//日，1-31
	unsigned char   						hour;     				//时，0-23
	unsigned char   						minute;     			//分，0-59
	unsigned char   						second;     			//秒，0-59
	unsigned short   						msecond;     			//毫秒，0-990，LSB=10ms
}UTC_TIME;

//跟踪目标输出结构体
typedef struct tagPARALINE_OUTPUT
{
	unsigned int  index;
	CamInfo1 caminfo;                            //相机信息
	AirCraftInfo1 airCraftInfo;                 //载机信息
	Servo_Control servoInfo; 						//伺服信息       
	GeogGuideInfo   stGuideInfo;	            //地理引导信息
	LaserInfo       stLaserInfo;                //激光测距


	//*************************** 各模块算法结果与状态 ****************************
	uint32_t        str_identifyIR_obj_cnt;                     //红外图像智能识别目标个数
	OBJ_INFO        str_identifyIR_objs[50];                    //红外图像智能识别目标结果
	uint32_t        str_identifyVL_obj_cnt;                     //可见光图像智能识别目标个数
	OBJ_INFO        str_identifyVL_objs[50];                    //可见光图像智能识别目标结果

	uint32_t        m_segmentIR_obj_cnt;                        //红外地物分类个数
	OBJ_INFO        m_segmentIR_objs[10];                       //红外地物分类目标
	uint32_t        m_segmentVL_obj_cnt;                        //可见光地物分类个数
	OBJ_INFO        m_segmentVL_objs[10];                       //可见光地物分类目标

	// uint32_t        m_ChangeinfoIR_obj_cnt;                     //红外变化检测个数
	// variationInfo   m_ChangeinfoIR_objs[30];                    //红外变化检测目标
	// uint32_t        m_ChangeinfoVL_obj_cnt;                     //可见光变化检测个数
	// variationInfo   m_ChangeinfoVL_objs[30];                    //可见光变化检测目标


	xTRACK_OUTPUT    m_trackIR_objs;                         //红外跟踪目标结果
	xTRACK_OUTPUT    m_trackVL_objs;                         //可见光跟踪目标结果

	int             ObjCnts_IR;                                 //目标总个数（融合后红外视场内）
	OBJINFO_RECT1    AIDetFusion_IR[50];                         //红外图上AI融合结果
	int             ObjCnts_VL;                                 //目标总个数（融合后可见光视场内）
	OBJINFO_RECT1    AIDetFusion_VL[50];                         //可见光图上AI融合结果

	Guide           m_geogGuideInfo;                            //地理引导结果

	uint32_t        m_activeLoc_cnt;                            //多目标有源定位个数
	stTrgOutput1     m_mulActiveLoc[50];                         //多目标定位结果

	stTrgOutput1     m_singleActiveLoc;                          //单目标有源定位测速结果

	stTrgOutput1     m_passiveLocate[50];                        //无源定位结果

	// uint32_t        m_Alarm_obj_cnt;                            //红外告警目标个数
	// ALARM_PARA      m_Alarm_Papa[16];                           //红外告警目标结果

	// uint32_t        m_Filter_obj_cnt;                           //航迹滤波目标个数
	// STD_FILTER_VIDEOOUTPUT objFilterRes[50];                    //航迹滤波结果

	// unsigned int    nFusionNumber;		                        //融合后目标总个数
	// FUSION_OBJECT 	objFusionList[60];		                    //融合输出结果

	// int             targetPurpnum;			                    //目标意图个数
	// FusedDataDst 	fusedatasrc[50];		                    //意图识别结果(输入透传输出)

	// int             m_threadLevel_cnt;                          //威胁等级目标个数
	// PTOutput        m_threadLevel_obj[100];                     //威胁等级排序结果

	UTC_TIME utcTime_laser;
	UTC_TIME utcTime_ir;

}PARALINE_OUTPUT;


typedef struct S729paras_VL
{
	//unsigned char IMG_VL[IMAGE_WIDTH_VL * IMAGE_HEIGHT_VL * (3 / 2)];
	PARALINE_OUTPUT Paras_VL;

}Paras_VL;

typedef struct S729paras_IR
{
	//unsigned char IMG_IR[IMAGE_WIDTH_IR * IMAGE_HEIGHT_IR *  2];
	PARALINE_OUTPUT Paras_IR;

}Paras_IR;

//TRACK_OUTPUT outputIR = { 0 };
//TRACK_OUTPUT outputVL = { 0 };


//#pragma pack()