#ifndef _H264_SEI_Typedef_H_ #define _H264_SEI_Typedef_H_ #include "hi_type.h" typedef unsigned short int uint16; typedef unsigned long int uint32; #define BigLittleSwap16(A) ((((uint16)(A) & 0xff00) >> 8) | \ (((uint16)(A) & 0x00ff) << 8)) #define BigLittleSwap32(A) ((((uint32)(A) & 0xff000000) >> 24) | \ (((uint32)(A) & 0x00ff0000) >> 8) | \ (((uint32)(A) & 0x0000ff00) << 8) | \ (((uint32)(A) & 0x000000ff) << 24)) /* 结构体定义 */ #pragma pack(1) // 结构体以1个字节对齐 /* 定义 S284 边海防项目通讯协议 */ /* 脱靶量状态信息 */ typedef struct __TBLStatusInfo { HI_S16 DeltaX; // X方向脱靶量 * 10 HI_S16 DeltaY; // Y方向脱靶量 * 10 }TBLInfo; /* 角分辨率信息 */ typedef struct __JFBLStatusInfo { HI_U16 az_rs; // 方位角分辨率 * 1000 HI_U16 pt_rs; // 俯仰角分辨率 * 1000 }JFBLInfo; /* HI3559A -> 伺服控制板 */ typedef struct __HisiToSFB { HI_U16 FrameHead; // 帧头 0x55 0xAA HI_U8 Address; // 地址 0x0A HI_U8 LengthNum; // 数长 0x0C HI_U8 CmdWord[2]; // 命令字 0xFF [0x18/0x19] 0x18 红外, 0x19 可见光 HI_U8 VideoType; // 视频源 0 红外, 1 彩色可见光, 2 黑白可见光 HI_U8 TrackStat; // 跟踪器状态 0 未知, 1 待命, 2 搜索, 3 跟踪, 4 局部跟踪, 5 丢失重捕, 6 末端盲区, 7 捕获, 8 定位 TBLInfo TBLStat; // 脱靶量状态信息 JFBLInfo JFBLStat; // 角分辨率信息 HI_U8 Xor; // 校验位 HI_U8 FrameTail; // 帧尾 }HisiToSFB; /* 角度信息 */ typedef struct __JDInfo { HI_S16 Azimuth; // 方位角度值 HI_S16 Pitch; // 俯仰角度值 }JDInfo; /* 伺服角速度信息 */ typedef struct __SFJSDInfo { HI_U8 Azimuth_Speed[3]; // 伺服方位角速度 HI_U8 Pitch_Speed[3]; // 伺服俯仰角速度 }SFJSDInfo; /* 雷达导引信息 */ typedef struct __RadarGuideInfo { HI_S16 TargetAz; // 目标方位角度 HI_S16 TargetPt; // 目标俯仰角度 HI_U16 TargetDis; // 目标距离 HI_U8 TargetType; // 目标类型 1 无人机, 2 车, 3 人, 4 小型船只, 5 中型船只 HI_U8 TargetSelect; // 目标选择 0 距离最近, 1 距离最近+标签一致, 2 距离最近+标签一致+运动, 3 距离最近+运动 HI_U8 TargetSpeedThr; // 目标速度阈值 0 ~ 255 }RadarGuideInfo; /* 伺服控制板 --> HI3559A */ typedef struct __SFBToHisi { HI_U16 FrameHead; // 帧头 0x55 0xAA HI_U8 Address; // 地址 0x18/0x19 HI_U8 LengthNum; // 数长 0x18 HI_U8 CmdWord[2]; // 命令字 0xFF 0x0A HI_U8 SFWorkMode; // 伺服工作模式 JDInfo JDStat; // 角度信息 SFJSDInfo SFJSDStat; // 伺服角速度信息 HI_U8 SFErrorInfo; // 伺服故障信息 HI_U8 SFVersion; // 伺服版本号 RadarGuideInfo RadarInfo; // 雷达引导信息 HI_U8 Reserver[4]; // 预留 HI_U32 GPS_Time; // GPS时间 HI_U8 Xor; // Xor校验 HI_U8 FrameTail; // 帧尾 0xF0 }SFBToHisi; /* 跟踪器控制命令集 */ /* 锁定命令 */ typedef struct __TrackLockCmd { HI_U16 X; // 锁定X坐标 HI_U16 Y; // 锁定Y坐标 HI_U32 LockFrame; // 锁定帧编号 HI_U8 W; // 锁定波门宽 HI_U8 H; // 锁定波门高 }TrackLockCmd; /* 波门大小步进 */ typedef struct __TrackWHSetup { HI_S8 Modify_Width; // 波门宽度改变 0 不变, 1 增加, 2 减少 HI_S8 Modify_Height; // 波门高度改变 0 不变, 1 增加, 2 减少 HI_S8 Modify_Setup; // 波门步进值 默认值5 }TrackWHSetup; /* 波门方位步进 */ typedef struct __TrackXYSetup { HI_S8 Modify_Y; // 波门上下改变 0 不变, 1 增加, 2 减少 HI_S8 Modify_X; // 波门左右改变 0 不变, 1 增加, 2 减少 HI_S8 Modify_Setup; // 波门步进值 默认值5 }TrackXYSetup; /* 目标识别开关 */ typedef struct __TargetAffirmCfg { HI_U8 Flag; // 目标识别开关 HI_U16 TargetDist; // 目标距离 HI_U16 TargetAzimuth; // 目标方位 HI_U16 TargetCourse; // 目标航向 HI_U16 TargetAltitude; // 目标高度 HI_U8 TargetSpeed; // 目标速度 HI_U8 TargetType; // 目标类型 }TargetAffirmCfg; /* 目标检测参数设置 */ typedef struct __DetectParamCfg { HI_U8 DetectParaFlag; // 目标检测 参数开关 0 无效, 1 有效 HI_U8 DetectThres; // 目标检测 阈值 HI_U8 DetectTargetType; // 目标检测 亮/暗目标类型 HI_U8 DetectTargetSift; // 目标检测 筛选方式 HI_U8 DetectMinSize; // 目标检测 最小像素限制 HI_U8 DetectMinSal; // 目标检测 最小显著性限制 HI_U8 DetectMergeDist; // 目标检测 目标合并距离 }DetectParamCfg; /* 载荷综控板 --> HI3559A 可见光机芯状态信息 */ typedef struct __VLStatInfo { HI_U16 FrameHead; // 帧头 0x55 0xAA HI_U8 Address; // 地址 0x19 HI_U8 LengthNum; // 数长 0x0C HI_U8 CmdWord[2]; // 命令字 0xFF 0x11/0x12 HI_U8 USB_WorkMode:2; // [Bit 0-1] USB工作模式 0 关闭, 1 Storage, 2 NET HI_U8 CameraStat:2; // [Bit 2-3] 镜头状态 0 停止, 1 调焦, 2 变倍, 3 自动聚焦 HI_U8 SensorStat:2; // [Bit 4-5] Sensor状态 0 异常, 1 正常, 2 关机 HI_U8 CmdType:2; // [Bit 6-7] 收到的指令类型 0 空闲, 1 机芯指令, 2 镜头指令 HI_U16 ViewAngle; // 视场角 HI_U8 AudioRecord:1; // [Bit 0]音频录制 HI_U8 DistortCorrect:1; // [Bit 1]畸变矫正 HI_U8 CameraDDE:1; // [Bit 2]电子透雾 HI_U8 CameraDIS:1; // [Bit 3]电子防抖 HI_U8 RecordWorkMode:1; // [Bit 4]录像工作状态 HI_U8 UDPWorkMode:1; // [Bit 5]UDP工作状态 HI_U8 RTSPWorkMode:1; // [Bit 6]RTSP工作状态 HI_U8 CameraCheck:1; // [Bit 7]镜头自检 HI_U8 Lightness:4; // [Bit 0-3]亮度 HI_U8 ElectricSacle:4; // [Bit 4-7]电子变倍 HI_U8 Saturate:4; // [Bit 0-3]饱和度 HI_U8 Contrast:4; // [Bit 4-7]对比度 HI_U8 Flip:4; // [Bit 0-3]图像翻转 HI_U8 Acutance:4; // [Bit 4-7]锐度 HI_U16 FocalVal; // 焦距值 HI_U8 Version; // 软件版本 HI_U8 Xor; // 异或校验 HI_U8 FrameTail; // 帧尾 0xF0 }VLStatInfo; /* 载荷综控板 --> HI3559A 红外机芯状态信息 */ typedef struct __IRStatInfo { HI_U16 FrameHead; // 帧头 0x55 0xAA HI_U8 Address; // 地址 0x18 HI_U8 LengthNum; // 数长 0x0C HI_U8 CmdWord[2]; // 命令字 0xFF 0x0F HI_U16 Temp; // 温度 HI_U16 FocalVal; // 焦距值 HI_U16 ViewAngle; // 视场角 HI_U16 Reserver[2]; // 预留 HI_U8 Xor; // 异或校验 HI_U8 FrameTail; // 帧尾 0xF0 }IRStatInfo; /* 载荷综控板 --> HI3559A 跟踪器控制命令 */ typedef union __TrackControlCmd { TrackLockCmd LockCmd; // 锁定命令 HI_U8 AutoTrackFlag; // 自动跟踪开关 TrackWHSetup SetupWH; // 波门宽高步进 TrackXYSetup SetupXY; // 波门方位步进 HI_U8 RecordFlag; // 录像开关 0 停止录像, 1 开始录像 HI_U8 VideoSwitch; // 视频源切换 0 彩色可见光, 1 黑白可见光 TargetAffirmCfg TrackAffirm; // 目标识别配置 HI_U8 DetectFlag; // 目标检测开关 0 目标检测关, 1 目标检测开 DetectParamCfg DetectPara; // 目标检测参数设置 }TrackCtrCmd; /* 载荷综控板 --> HI3559A */ typedef struct __ZHZKBToHisi { HI_U16 FrameHead; // 帧头 0x55 0xAA HI_U8 Address; // 地址 0x18/0x19 HI_U8 LengthNum; // 数长 0x0D; HI_U8 CmdWord[2]; // 命令字 0x9C 0x00 ~ 0x0A TrackCtrCmd TrackCmd; // 跟踪器控制命令 HI_U8 Xor; // 异或校验 HI_U8 FrameTail; // 帧尾 0xF0 }ZHZKBToHisi; /* HI3559A --> 载荷综控板 */ typedef struct __HisiToZHZKB { HI_U16 FrameHead; // 帧头 0x55 0xAA HI_U8 Address; // 地址 0x03 HI_U8 LengthNum; // 数长 0x0C HI_U8 CmdWord[2]; // 命令字 0xFF 0x00 HI_U8 VideoType; // 视频源类型 HI_U8 TrackStat; // 跟踪器状态 TBLInfo TBLStat; // 脱靶量状态信息 HI_U16 RecordTime; // 录像时间 HI_U8 RecordState; // 录像状态 0x00 未录像 0x01 正在录像 HI_U8 ProjectID; // 握手交互项目ID HI_U16 Scale_VL; // 可见光放大倍率 HI_U16 Scale_IR; // 红外放大倍率 HI_U8 FrameCnt_VL; // 可见光帧计数(8Bit) HI_U8 FrameCnt_IR; // 红外帧计数 HI_U8 Xor; // 校验位 HI_U8 FrameTail; // 帧尾 }HisiToZHZKB; /* 跟踪目标信息 */ typedef struct __TrackObjInfo { HI_U8 TrackArithID; // 跟踪算法标识 HI_U8 TrackTargetType; // 跟踪目标类型 HI_U16 TargetX; // 目标跟踪框中心X位置 HI_U16 TargetY; // 目标跟踪框中心Y位置 HI_U16 TargetW; // 目标跟踪框宽度 HI_U16 TargetH; // 目标跟踪框高度 TBLInfo TBLStat; // 脱靶量信息 JDInfo JDStat; // 跟踪目标角度信息 }TrackObjInfo; /* 跟踪算法参数信息 */ typedef struct __TrackArithParaInfo { HI_U16 KCF_maxRes; // KCF响应值 HI_U16 KCF_resThresh; // KCF阈值 HI_U16 NCC_ResValue; // NCC响应值 HI_U8 KCF_BestScale; // KCF最优缩放尺度 HI_U8 LostCnt; // 目标丢失计数 HI_U16 NDYT_ObjX; // NDYT中心X坐标 HI_U16 NDYT_ObjY; // NDYT中心Y坐标 HI_U16 NDYT_ObjW; // NDYT目标宽度 HI_U16 NDYT_ObjH; // NDYT目标高度 HI_U16 Research_X; // 重捕区域中心X位置 HI_U16 Research_Y; // 重捕区域中心Y位置 HI_U16 Research_W; // 重捕区域宽度 HI_U16 Research_H; // 重捕区域高度 HI_U8 ReDetectNum; // 重捕计数 HI_U8 nHasAimObjNum; // 捕获状态对准计数 HI_U16 ObjSegments_X; // 目标分割中心X坐标 HI_U16 ObjSegments_Y; // 目标分割中心Y坐标 HI_U8 ObjSegments_W; // 目标分割宽度 HI_U8 ObjSegments_H; // 目标分割高度 }TrackArithPara; /* 检测算法参数信息 */ typedef struct __DetectArithParaInfo { HI_U8 DetectSmall :1; // [BIT 0] 小目标检测 HI_U8 DetectArea :1; // [BIT 1] 面目标检测 HI_U8 DetectVibe :1; // [BIT 2] 运动目标检测 HI_U8 DetectAI :1; // [BIT 3] AI目标检测 HI_U8 Reserver :4; // [BIT 4 - 7] 预留 HI_U8 DetectSmallNum; // 小目标检测个数 HI_U8 DetectAreaNum; // 面目标检测个数 HI_U8 DetectVibeNum; // 运动目标检测个数 HI_U8 DetectAINum; // AI目标检测个数 HI_U8 DetectFinalNum; // 最终检测个数 }DetectArithPara; /* 目标识别检测信息 */ typedef struct __TargetObjectInfo { HI_U16 ObjectX; // 目标中心X坐标 HI_U16 ObjectY; // 目标中心Y坐标 HI_U16 ObjectW; // 目标宽度 HI_U16 ObjectH; // 目标高度 HI_U8 ObjectSize; // 目标尺寸类型 HI_U8 ObjectType; // 目标类型 HI_U8 ObjectCF; // 识别置信度 HI_U16 PipeId; // 管道ID HI_U16 SNR; // 信噪比 HI_U16 Entropy; // 信息熵值 HI_U8 Reserver[3]; // 预留 }TargetObject; /* SEI 视频参数帧 */ typedef struct __H264_SEI_ParaFrame { HI_U16 FrameHead[4]; // 帧头 0x55AA 0xAA55 0xAAAA 0xBBBB HI_U8 VideoType; // 视频源类型 0x01 红外, 0x02 彩色可见光, 0x03 黑白可见光 HI_U8 TrackStat; // 跟踪器状态 HI_U32 FrameNum; // 帧编号 HI_S16 Servo_Az; // 伺服方位角 HI_S16 Servo_Pt; // 伺服俯仰角 HI_U16 FocalValue; // 焦距值 HI_U16 Pixel_AngRes; // 像素角分辨率 HI_S16 Carrier_Az; // 载体方位角 HI_S16 Carrier_Pt; // 载体俯仰角 HI_S16 Carrier_Roll; // 载体横滚角 HI_U16 Reserver1[6]; // 预留 TrackObjInfo TrackObj; // 跟踪目标信息 HI_U16 Reserver2[6]; // 预留 TrackArithPara TrackPara; // 跟踪算法参数 HI_U16 Reserver3[4]; // 预留 DetectArithPara DetectPara; // 检测算法参数 HI_U8 ArithCostTime; // 算法耗时 HI_U16 NNIECostTime; // 识别算法耗时 HI_U32 ClickCnt; // 跟踪计数 HI_U8 Reserver4[7]; // 预留 // TargetObject SmallObjeInfo[10]; // 小目标检测信息 TargetObject AreaObjInfo[10]; // 面目标检测信息 TargetObject FinalObjInfo[20]; // 最终检测信息 TargetObject NNIEObjInfo[5]; // 目标识别信息 HI_U8 NNIE_NmsThr[2]; // NNIE NmsThr HI_U8 NNIE_ConfThr[2]; // NNIE ConfThr HI_U16 Reserver5[3]; // 预留 VLStatInfo VLInfo; // 可见光机芯状态信息 HI_U16 Reserver6[6]; // 预留 SFBToHisi SFBStatInfo; // 伺服板上返信息 HI_S16 ScanCenter_H; // 方位扫描中心角 HI_S16 ScanRange_H; // 方位扫描范围 HI_S16 ScanCenter_V; // 俯仰扫描中心角 HI_S16 ScanRange_V; // 俯仰扫描范围 HI_U16 Reserver7[2]; // 预留 IRStatInfo IRInfo; // 红外机芯状态信息 HI_U64 RadarTimestamp; // 时间戳 HI_U8 Xor; // 异或校验 HI_U8 FrameTail; // 帧尾 0xF0 }H264SEI_Para; /* 通讯协议全部结构体定义 */ typedef struct __AllProcotolInfo { HisiToSFB S284_HisiToSFB; // HI3559A -> 伺服控制板 SFBToHisi S284_SFBToHisi; // 伺服控制板 -> HI3559A ZHZKBToHisi S284_ZKBToHisi; // 载荷综控板 -> HI3559A HisiToZHZKB S284_HisiToZKB; // HI3559A -> 载荷控制板 VLStatInfo S284_VLInfo; // S284 可见光机芯信息 载荷综控板-->HI3559A IRStatInfo S284_IRInfo; // S284 红外机芯信息 载荷综控板-->HI3559A H264SEI_Para S284_H264SEI; // H264 SEI视频参数帧信息 }S284_Procotol_Info; typedef struct __LockCmd { HI_U8 VideoType; // 视频源类型 0x01 红外, 0x02 彩色可见光, 0x03 黑白可见光 HI_U8 unLockCmd; // 锁定命令 TrackLockCmd TrackLock; // 锁定目标信息 TrackWHSetup SetupWH; // 波门宽高步进 TrackXYSetup SetupXY; // 波门方位步进 }LockCmd; typedef struct __TimeGPS { HI_U16 year; HI_U8 month; HI_U8 day; HI_U8 hour; HI_U8 minite; HI_U8 second; HI_U16 milisec; }TimeGps; /* 单个目标结构体 */ typedef struct { HI_U8 TargetNo; //目标编号 HI_U8 TargetClass; //目标类别 HI_U16 x; //目标中心x HI_U16 y; //目标中心y HI_U16 w; //目标w HI_U16 h; //目标h HI_U8 TargetThreat; //威胁等级 HI_U8 TargetPic; //意图 }DetectInfoUnit; /* 检测目标结构体 */ typedef struct __DetectInfo { HI_U8 TargetNum; //目标个数 DetectInfoUnit DectArray[50]; }DetectInfo; /* SEI 视频参数帧 */ typedef struct __H264_SEI_ParaFrame_732 { HI_U8 Xor; // 异或校验 HI_U8 type; // 帧编号 HI_U8 FrameNo; // 帧编号 HI_U8 SelfCheck; //自检结果 HI_U8 SystemMode; //系统模式 //激光测距 HI_U16 LaserInteger; //激光数据整数部分 HI_U8 LaserDecimal; //激光数据小数部分 HI_U8 LaserMode; //激光测照模式 HI_U8 LaserState; //激光状态信息 //红外信息 HI_U8 IRState; //红外状态信息 HI_U16 IRFocalValue; // 焦距值 //可见光信息 HI_U8 VLState; //可见光状态信息 HI_U16 VLFocalValue; // 可见光焦距值 //伺服信息 HI_U8 ServoMode; //伺服工作模式 HI_S16 Servo_Az; // 伺服方位角 HI_S16 Servo_Pt; // 伺服俯仰角 // HI_S16 Servo_AzSpeed; // 伺服方位速度 // HI_S16 Servo_PtSpeed; // 伺服俯仰速度 HI_S32 Servo_AzSpeed; // 伺服方位速度 HI_S32 Servo_PtSpeed; // 伺服俯仰速度 HI_U8 Servo_Check; // 伺服自检信息 0x00 正常,0x01:异常 //跟踪器信息 HI_U8 TrackCheck; // 跟踪器自检 0x00 正常,0x01:异常 HI_U8 TrackStat; // 跟踪器状态 HI_U8 Reserved0; // 预留 //惯导信息 HI_U8 DataEffect; // 数据有效性 0x00:数据无效,0x01:组合导航数据有效,0x02:纯惯性导航数据有效 HI_S32 PlaneLon; // 经度 HI_S32 PlaneLat; // 纬度 HI_S32 PlaneH; // 高度 HI_S16 Plane_Az; // 航向角 HI_S16 Plane_Pt; // 俯仰角 HI_S16 Plane_Roll; // 横滚角 HI_S32 Plane_EastSpeed; // 东向速度 精度0.001 HI_S32 Plane_NorthSpeed; // 北向速度 精度0.001 HI_S32 Plane_AirSpeed; // 天向速度 精度0.001 HI_S32 Plane_XSpeed; // X轴角速度,精度0.001 HI_S32 Plane_YSpeed; // 北向速度 精度0.001 HI_S32 Plane_ZSpeed; // 天向速度 精度0.001 HI_S32 Plane_XSpeedAcc; // X轴角速度,精度0.001 HI_S32 Plane_YSpeedAcc; // Y轴角速度 精度0.001 HI_S32 Plane_ZSpeedAcc; // Z轴角速度 精度0.001 TimeGps GPStime; //时间信息 //飞机惯导 HI_U8 PDataEffect; // 数据有效性 0x00:数据无效,0x01:组合导航数据有效,0x02:纯惯性导航数据有效 HI_S32 PLon; // 飞机经度 HI_S32 PLat; // 飞机纬度 HI_S32 PH; // 飞机高度 HI_S16 P_Az; // 飞机航向角 HI_S16 P_Pt; // 飞机俯仰角 HI_S16 P_Roll; // 飞机横滚角 HI_S32 P_EastSpeed; // 飞机东向速度 精度0.001 HI_S32 P_NorthSpeed; // 飞机北向速度 精度0.001 HI_S32 P_AirSpeed; // 飞机天向速度 精度0.001 HI_S32 P_XSpeed; // 飞机X轴角速度,精度0.001 HI_S32 P_YSpeed; // 飞机北向速度 精度0.001 HI_S32 P_ZSpeed; // 飞机天向速度 精度0.001 HI_S32 P_XSpeedAcc; // 飞机X轴角速度,精度0.001 HI_S32 P_YSpeedAcc; // 飞机Y轴角速度 精度0.001 HI_S32 P_ZSpeedAcc; // 飞机Z轴角速度 精度0.001 TimeGps PGPStime; //时间信息 HI_U16 CenterX; // 中心x HI_U16 CenterY; // 中心y HI_U16 nADValue; //AD值 HI_S32 TargetLon; //目标经度 HI_S32 TargetLat; //目标纬度 HI_S32 TargetHeight;//目标高度 HI_U16 TargetSpeed; //目标速度 //目标检测信息 DetectInfo TargetInfo; //目标列表 }H264SEI_Para_732; /* 单个目标定位结果结构体 */ typedef struct __LocateInfoUnit { HI_U8 TargetNo; //目标编号 // HI_U8 TargetClass; //目标类别 // HI_U16 x; //目标中心x // HI_U16 y; //目标中心y // HI_U16 w; //目标w // HI_U16 h; //目标h // HI_U8 TargetThreat; //威胁等级 // HI_U8 TargetPic; //意图 double TargetLon; //目标经度 double TargetLat; //目标纬度 float TargetHeight;//目标高度 float TargetSpeed; //目标速度 }LocateInfoUnit; /* 目标定位结果结构体 */ typedef struct __LocateInfo { H264SEI_Para_732 SEIInfo; LocateInfoUnit LocateInfo[50]; }LocateInfo; #pragma pack() // 恢复默认对齐模式 typedef struct tagSnapShotParams { int nHasObj; // 0,无目标,不用叠加; 1,有目标,需要叠加 uint64_t szTime; // 时间 int szBatNum; // 批号 int szType; // 目标类型 double dAzimuthAngle; // 方位角 double dPitchingAngle; // 俯仰角 double dRollingAngle; // 横滚角 }SnapShotParams; #endif