You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

533 lines
24 KiB

#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