3.4. 数据类型¶
3.4.1. 基础型别¶
/*----------------------------------------------
* The common data type
*----------------------------------------------
*/
typedef unsigned char CVI_UCHAR;
typedef unsigned char CVI_U8;
typedef unsigned short CVI_U16;
typedef unsigned int CVI_U32;
typedef unsigned int CVI_HANDLE;
typedef signed char CVI_S8;
typedef signed char CVI_CHAR;
typedef short CVI_S16;
typedef int CVI_S32;
typedef unsigned long CVI_UL;
typedef signed long CVI_SL;
typedef float CVI_FLOAT;
typedef double CVI_DOUBLE;
typedef void CVI_VOID;
typedef bool CVI_BOOL;
typedef uint64_t CVI_U64;
typedef int64_t CVI_S64;
typedef size_t CVI_SIZE_T;
/*----------------------------------------------
* const defination
*----------------------------------------------
*/
#define CVI_NULL 0L
#define CVI_SUCCESS 0
#define CVI_FAILURE (-1)
#define CVI_FAILURE_ILLEGAL_PARAM (-2)
#define CVI_TRUE 1
#define CVI_FALSE 0
3.4.2. MOD_ID_E¶
- 【说明】
定义模块ID列举
- 【定义】
#define FOREACH_MOD(MOD) {\ MOD(CMPI) \ MOD(VB) \ MOD(SYS) \ MOD(RGN) \ MOD(CHNL) \ MOD(VDEC) \ MOD(VPSS) \ MOD(VENC) \ MOD(H264E) \ MOD(JPEGE) \ MOD(MPEG4E) \ MOD(H265E) \ MOD(JPEGD) \ MOD(VO) \ MOD(VI) \ MOD(DIS) \ MOD(RC) \ MOD(AIO) \ MOD(AI) \ MOD(AO) \ MOD(AENC) \ MOD(ADEC) \ MOD(AUD) \ MOD(VPU) \ MOD(ISP) \ MOD(IVE) \ MOD(USER) \ MOD(PROC) \ MOD(LOG) \ MOD(H264D) \ MOD(GDC) \ MOD(PHOTO) \ MOD(FB) \ MOD(BUTT) \ } #define GENERATE_ENUM(ENUM) CVI_ID_ ## ENUM, typedef enum _MOD_ID_E FOREACH_MOD(GENERATE_ENUM) MOD_ID_E;- 【注意事项】
无。
- 【相关数据类型及接口】
无。
3.4.3. VB_SOURCE_E¶
- 【说明】
定义 VB 来源选择
- 【定义】
typedef enum _VB_SOURCE_E { VB_SOURCE_COMMON = 0, VB_SOURCE_MODULE = 1, VB_SOURCE_PRIVATE = 2, VB_SOURCE_USER = 3, VB_SOURCE_BUTT } VB_SOURCE_E;- 【成员】
成员名称
描述
VB_SOURCE_COMMON
公共VB
VB_SOURCE_MODULE
模块VB
VB_SOURCE_PRIVATE
私有VB
VB_SOURCE_USER
用户VB
- 【注意事项】
无。
- 【相关数据类型及接口】
无。
3.4.4. ROTATION_E¶
- 【说明】
定义旋转角度列举
- 【定义】
typedef enum _ROTATION_E { ROTATION_0 = 0, ROTATION_90, ROTATION_180, ROTATION_270, ROTATION_MAX } ROTATION_E;- 【成员】
成员名称
描述
ROTATION_0
不旋转。
ROTATION_90
旋转90度。
ROTATION_180
旋转180度。
ROTATION_270
旋转270度。
- 【注意事项】
无。
- 【相关数据类型及接口】
无。
3.4.5. POINT_S¶
- 【说明】
定义坐标结构体
- 【定义】
typedef struct _POINT_S { CVI_S32 s32X; CVI_S32 s32Y; } POINT_S;- 【成员】
成员名称
描述
s32X
横坐标。
s32Y
纵坐标。
- 【注意事项】
无。
- 【相关数据类型及接口】
无。
3.4.6. SIZE_S¶
- 【说明】
定义大小结构体
- 【定义】
typedef struct _SIZE_S { CVI_U32 u32Width; CVI_U32 u32Height; } SIZE_S;- 【成员】
成员名称
描述
u32Width
宽度。
u32Height
高度。
- 【注意事项】
无。
- 【相关数据类型及接口】
VI_DEV_ATTR_S
VI_PIPE_STATUS_S
VI_CHN_ATTR_S
VI_CHN_STATUS_S
VO_VIDEO_LAYER_ATTR_S
3.4.7. RECT_S¶
- 【说明】
定义矩形的宽度、高度和位置结构体
- 【定义】
typedef struct _RECT_S { CVI_S32 s32X; CVI_S32 s32Y; CVI_U32 u32Width; CVI_U32 u32Height; } RECT_S;- 【成员】
成员名称
描述
s32X
横坐标。
s32Y
纵坐标。
u32Width
宽度。
u32Height
高度。
- 【注意事项】
无。
- 【相关数据类型及接口】
ASPECT_RATIO_S
VI_CROP_INFO_S
VPSS_CROP_INFO_S
VO_CHN_ATTR_S
VO_VIDEO_LAYER_ATTR_S
3.4.8. LDC_ATTR_S¶
- 【说明】
定义镜头畸变矫正结构体
- 【定义】
typedef struct _LDC_ATTR_S { bool bAspect; /* RW;Whether aspect ration is keep */ CVI_S32 s32XRatio; /* RW; Range: [0, 100], field angle ration of horizontal,valid when bAspect=0.*/ CVI_S32 s32YRatio; /* RW; Range: [0, 100], field angle ration of vertical,valid when bAspect=0.*/ CVI_S32 s32XYRatio; /* RW; Range: [0, 100], field angle ration of all,valid when bAspect=1.*/ CVI_S32 s32CenterXOffset; CVI_S32 s32CenterYOffset; CVI_S32 s32DistortionRatio; } LDC_ATTR_S;- 【成员】
成员名称
描述
bAspect
畸变矫正是否水平垂直同样比例。
s32XRatio
水平视场角大小,bAspect=0有效。[0, 100]
s32YRatio
垂直视场角大小,bAspect=0有效。[0, 100]
s32XYRatio
整体视场角大小,bAspect=1有效。[0, 100]
s32CenterXOffset
畸变中心点相对图像中心的水平偏移。[-511, 511]
s32CenterYOffset
畸变中心点相对图像中心的垂直偏移。[-511, 511]
s32DistortionRatio
畸变程度。[-300, 500]
- 【注意事项】
无。
- 【相关数据类型及接口】
无。
3.4.9. MMF_CHN_S¶
- 【说明】
定义模块信道结构体
- 【定义】
typedef struct _MMF_CHN_S { MOD_ID_E enModId; CVI_S32 s32DevId; CVI_S32 s32ChnId; } MMF_CHN_S;- 【成员】
成员名称
描述
enModId
模块ID。
s32DevId
设备ID。在部分模块也可能是群ID
s32ChnId
通道ID。
- 【注意事项】
无。
- 【相关数据类型及接口】
3.4.10. MMF_BIND_DEST_S¶
- 【说明】
定义MMF系统绑定结构体
- 【定义】
typedef struct _MMF_BIND_DEST_S { CVI_U32 u32Num; MMF_CHN_S astMmfChn[BIND_DEST_MAXNUM]; } MMF_BIND_DEST_S;- 【成员】
成员名称
描述
u32Num
绑定目的数量。
astMmfChn
绑定目的的信道结构体数组
- 【注意事项】
无。
- 【相关数据类型及接口】
3.4.11. MMF_VERSION_S¶
- 【说明】
定义MMF版本结构体
- 【定义】
#define VERSION_NAME_MAXLEN 128 typedef struct _MMF_VERSION_S { char version[VERSION_NAME_MAXLEN]; } MMF_VERSION_S;- 【成员】
成员名称
描述
version
版本描述字符串。
- 【注意事项】
无。
- 【相关数据类型及接口】
3.4.12. VB_CONFIG_S¶
- 【说明】
定义MMF系统视频区块池结构体
- 【定义】
typedef struct _VB_CONFIG_S { CVI_U32 u32MaxPoolCnt; VB_POOL_CONFIG_S astCommPool[VB_MAX_COMM_POOLS]; } VB_CONFIG_S;- 【成员】
成员名称
描述
u32MaxPoolCnt
公共视频区块池数。
astCommPool
公共视频区块池属性。
- 【注意事项】
无。
- 【相关数据类型及接口】
3.4.13. VB_POOL_CONFIG_S¶
- 【说明】
定义MMF视频区块池结构体
- 【定义】
typedef struct _VB_POOL_CONFIG_S { CVI_U32 u32BlkSize; CVI_U32 u32BlkCnt; VB_REMAP_MODE_E enRemapMode; CVI_CHAR acName[MAX_VB_POOL_NAME_LEN]; } VB_POOL_CONFIG_S;- 【成员】
成员名称
描述
u32BlkSize
视频区块大小。
u32BlkCnt
视频区块池内的区块数。
enRemapMode
区块的memory-map模式
acName
视频区块名称
- 【注意事项】
u32BlkSize应根据所需图像大小、格式等信息来计算。若太大,会造成无谓的内存空间浪费;若太小,各MOD无法取得视频区块来使用。
视频区块池是透过空闲内存来取得,若视频区块池大小超过内存的空闲大小,则会创建失败。
- 【相关数据类型及接口】
3.4.14. VI_VPSS_MODE_E¶
- 【说明】
定义VI和VPSS间的工作模式列举。
- 【定义】
typedef enum _VI_VPSS_MODE_E { VI_OFFLINE_VPSS_OFFLINE = 0, VI_OFFLINE_VPSS_ONLINE, VI_ONLINE_VPSS_OFFLINE, VI_ONLINE_VPSS_ONLINE, VI_VPSS_MODE_BUTT } VI_VPSS_MODE_E;- 【成员】
成员名称
描述
VI_OFFLINE_VPSS_OFFLINE
VI_PROC/VI_CAP离线,VI_CAP/VPSS离线。
VI_OFFLINE_VPSS_ONLINE
VI_PROC/VI_CAP离线,VI_CAP/VPSS在线。
VI_ONLINE_VPSS_OFFLINE
VI_PROC/VI_CAP在线,VI_CAP/VPSS离线。
VI_ONLINE_VPSS_ONLINE
VI_PROC/VI_CAP在线,VI_CAP/VPSS在线。
- 【注意事项】
当VPSS_ONLINE时,VPSS无法分时处理,只能绑定特定的VI PIPE工作。
- 【相关数据类型及接口】
无。
3.4.15. VPSS_MODE_E¶
- 【说明】
定义VPSS的工作模式列举。
- 【定义】
typedef enum _VPSS_MODE_E { VPSS_MODE_SINGLE = 0, VPSS_MODE_DUAL, VPSS_MODE_RGNEX, VPSS_MODE_BUTT } VPSS_MODE_E;- 【成员】
成员名称
描述
VPSS_MODE_SINGLE
VPSS以单一硬件实体的方式工作。
VPSS_MODE_DUAL
VPSS以两个硬件实体的方式工作。
VPSS_MODE_RGNEX
VPSS以两个硬件实体的方式工作。会用VPSS装置0做RGN迭图,因此只有VPSS装置1可以走在线模式。
- 【注意事项】
CV181x/CV180x不支持VPSS_MODE_RGNEX模式
- 【相关数据类型及接口】
无。
3.4.16. ASPECT_RATIO_E¶
- 【说明】
定义旋转角度列举
- 【定义】
typedef enum _ASPECT_RATIO_E { ASPECT_RATIO_NONE = 0, ASPECT_RATIO_AUTO, ASPECT_RATIO_MANUAL, ASPECT_RATIO_MAX } ASPECT_RATIO_E;- 【成员】
成员名称
描述
ASPECT_RATIO_NONE
不动作,满屏。
ASPECT_RATIO_AUTO
视频保持比例,自动计算视频区域。
ASPECT_RATIO_MANUAL
手动决定视频区域。
- 【注意事项】
无。
- 【相关数据类型及接口】
无。
3.4.17. ASPECT_RATIO_S¶
- 【说明】
定义画面比例结构体
- 【定义】
typedef struct _ASPECT_RATIO_S { ASPECT_RATIO_E enMode; CVI_BOOL bEnableBgColor; CVI_U32 u32BgColor; RECT_S stVideoRect; } ASPECT_RATIO_S;- 【成员】
成员名称
描述
enMode
画面比例列举。
bEnableBgColor
是否要让画面以外以背景色覆盖。
u32BgColor
画面比例的背景色。为RGB888的格式,bit[7:0]为B,bit[15:8]为G,bit[23:16]为R。
stVideoRect
画面比例时视频的区域,只有当enMode为ASPECT_RATIO_MANUAL时才有用
- 【注意事项】
无。
- 【相关数据类型及接口】
3.4.18. PIXEL_FORMAT_E¶
- 【说明】
定义像素格式枚举
- 【定义】
typedef enum _PIXEL_FORMAT_E { PIXEL_FORMAT_RGB_888 = 0, PIXEL_FORMAT_BGR_888, PIXEL_FORMAT_RGB_888_PLANAR, PIXEL_FORMAT_BGR_888_PLANAR, PIXEL_FORMAT_ARGB_1555, // 4, PIXEL_FORMAT_ARGB_4444, PIXEL_FORMAT_ARGB_8888, PIXEL_FORMAT_RGB_BAYER_8BPP, // 7, PIXEL_FORMAT_RGB_BAYER_10BPP, PIXEL_FORMAT_RGB_BAYER_12BPP, PIXEL_FORMAT_RGB_BAYER_14BPP, PIXEL_FORMAT_RGB_BAYER_16BPP, PIXEL_FORMAT_YUV_PLANAR_422, // 12, PIXEL_FORMAT_YUV_PLANAR_420, PIXEL_FORMAT_YUV_PLANAR_444, PIXEL_FORMAT_YUV_400, PIXEL_FORMAT_HSV_888, // 16, PIXEL_FORMAT_HSV_888_PLANAR, PIXEL_FORMAT_NV12, // 18, PIXEL_FORMAT_NV21, PIXEL_FORMAT_NV16, PIXEL_FORMAT_NV61, PIXEL_FORMAT_YUYV, PIXEL_FORMAT_UYVY, PIXEL_FORMAT_YVYU, PIXEL_FORMAT_VYUY, PIXEL_FORMAT_FP32_C1 = 32, // 32 PIXEL_FORMAT_FP32_C3_PLANAR, PIXEL_FORMAT_INT32_C1, PIXEL_FORMAT_INT32_C3_PLANAR, PIXEL_FORMAT_UINT32_C1, PIXEL_FORMAT_UINT32_C3_PLANAR, PIXEL_FORMAT_BF16_C1, PIXEL_FORMAT_BF16_C3_PLANAR, PIXEL_FORMAT_INT16_C1, PIXEL_FORMAT_INT16_C3_PLANAR, PIXEL_FORMAT_UINT16_C1, PIXEL_FORMAT_UINT16_C3_PLANAR, PIXEL_FORMAT_INT8_C1, PIXEL_FORMAT_INT8_C3_PLANAR, PIXEL_FORMAT_UINT8_C1, PIXEL_FORMAT_UINT8_C3_PLANAR, PIXEL_FORMAT_8BIT_MODE = 48, //48 PIXEL_FORMAT_MAX } PIXEL_FORMAT_E;- 【成员】
无。
- 【注意事项】
无。
- 【相关数据类型及接口】
无。
3.4.19. VIDEO_FRAME_S¶
- 【说明】
定义视频图像帧信息
- 【定义】
typedef struct _VIDEO_FRAME_S { CVI_U32 u32Width; CVI_U32 u32Height; PIXEL_FORMAT_E enPixelFormat; BAYER_FORMAT_E enBayerFormat; VIDEO_FORMAT_E enVideoFormat; COMPRESS_MODE_E enCompressMode; DYNAMIC_RANGE_E enDynamicRange; COLOR_GAMUT_E enColorGamut; CVI_U32 u32Stride[3]; CVI_U64 u64PhyAddr[3]; CVI_U8 *pu8VirAddr[3]; CVI_U32 u32Length[3]; CVI_S16 s16OffsetTop; CVI_S16 s16OffsetBottom; CVI_S16 s16OffsetLeft; CVI_S16 s16OffsetRight; CVI_U32 u32TimeRef; CVI_U64 u64PTS; void *pPrivateData; CVI_U32 u32FrameFlag; } VIDEO_FRAME_S;- 【成员】
成员名称
描述
u32Width
图像宽度
u32Height
图像高度
enPixelFormat
图像像素格式
enBayerFormat
图像RAW格式
enVideoFormat
图像格式
enCompressMode
图像压缩格式
enDynamicRange
动态范围
enColorGamut
色域范围
u32Stride
图像行跨度
u64PhyAddr
物理地址
pu8VirAddr
虚拟地址
u32Length
图像空间大小(Bytes)
s16OffsetTop
图像顶部剪裁宽度
s16OffsetBottom
图像底部剪裁宽度
s16OffsetLeft
图像左侧剪裁宽度
s16OffsetRight
图像右侧剪裁宽度
u32TimeRef
图像帧序列号
u64PTS
图像时间戳
pPrivateData
私有数据
u32FrameFlag
当前帧的标记
- 【注意事项】
无。
- 【相关数据类型及接口】
无。
3.4.20. VIDEO_FRAME_INFO_S¶
- 【说明】
定义视频帧信息
- 【定义】
typedef struct _VIDEO_FRAME_INFO_S { VIDEO_FRAME_S stVFrame; ///< Video frame CVI_U32 u32PoolId; ///< VB pool ID } VIDEO_FRAME_INFO_S;- 【成员】
成员名称
描述
stVFrame
视频帧
u32PoolId
缓存池ID
- 【注意事项】
无。
- 【相关数据类型及接口】
3.4.21. BITMAP_S¶
- 【说明】
定义BITMAP信息
- 【定义】
typedef struct _BITMAP_S { PIXEL_FORMAT_E enPixelFormat; CVI_U32 u32Width; CVI_U32 u32Height; CVI_VOID * ATTRIBUTE pData; } BITMAP_S;- 【成员】
成员名称
描述
enPixelFormat
Bitmap像素格式
u32Width
Bitmap宽度
u32Height
Bitmap高度
pData
Bitmap数据地址
- 【注意事项】
无。
- 【相关数据类型及接口】
无。