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

【注意事项】

无。

【相关数据类型及接口】

VIDEO_FRAME_S


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数据地址

【注意事项】

无。

【相关数据类型及接口】

无。