3.4. Data Types¶
3.4.1. Base Type¶
/*----------------------------------------------
* 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_TRUE 1
#define CVI_FALSE 0
3.4.2. MOD_ID_E¶
【Description】
Defining module ID enumeration.
【Syntax】
#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;
【Note】
None.
【Related Data Type and Interface】
None.
3.4.3. VB_SOURCE_E¶
【Description】
Define VB source selection.
【Syntax】
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;
【Member】
Member |
Description |
---|---|
VB_SOURCE_COMMON |
public VB |
VB_SOURCE_MODULE |
module VB |
VB_SOURCE_PRIVATE |
private VB |
VB_SOURCE_USER |
user VB |
【Note】
None.
【Related Data Type and Interface】
None.
3.4.4. ROTATION_E¶
【Description】
Defining rotation angle enumeration.
【Syntax】
typedef enum _ROTATION_E {
ROTATION_0 = 0,
ROTATION_90,
ROTATION_180,
ROTATION_270,
ROTATION_MAX
} ROTATION_E;
【Member】
Member |
Description |
---|---|
ROTATION_0 |
No rotation. |
ROTATION_90 |
Rotate 90 degrees. |
ROTATION_180 |
Rotate 180 degrees. |
ROTATION_270 |
Rotate 270 degrees. |
【Note】
None.
【Related Data Type and Interface】
None.
3.4.5. POINT_S¶
【Description】
Define coordinate structure.
【Syntax】
typedef struct _POINT_S {
CVI_S32 s32X;
CVI_S32 s32Y;
} POINT_S;
【Member】
Member |
Description |
---|---|
s32X |
Abscissa |
s32Y |
Ordinate |
【Note】
None.
【Related Data Type and Interface】
None.
3.4.6. SIZE_S¶
【Description】
Define size structure.
【Syntax】
typedef struct _SIZE_S {
CVI_U32 u32Width;
CVI_U32 u32Height;
} SIZE_S;
【Member】
Member |
Description |
---|---|
u32Width |
Width |
u32Height |
Height |
【Note】
None.
【Related Data Type and Interface】
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¶
【Description】
Define the width, height, and position of the rectangle.
【Syntax】
typedef struct _RECT_S {
CVI_S32 s32X;
CVI_S32 s32Y;
CVI_U32 u32Width;
CVI_U32 u32Height;
} RECT_S;
【Member】
Member |
Description |
---|---|
s32X |
Abscissa |
s32Y |
Ordinate |
u32Width |
Width |
u32Height |
Height |
【Note】
None.
【Related Data Type and Interface】
VI_CROP_INFO_S
VPSS_CROP_INFO_S
VO_CHN_ATTR_S
VO_VIDEO_LAYER_ATTR_S
3.4.8. LDC_ATTR_S¶
【Description】
Define lens distortion correction structure.
【Syntax】
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;
【Member】
Member |
Description |
---|---|
bAspect |
Whether the distortion correction is horizontal and vertical in the same proportion. |
s32XRatio |
The size of horizontal field of view is valid when bAspect=0. [0, 100] |
s32YRatio |
The size of veritcal field of view is valid when bAspect=0. [0, 100] |
s32XYRatio |
The overall field of view is valid when bAspect = 1. [0, 100] |
s32CenterXOffset |
The horizontal offset of the distortion center from the image center. [-511, 511] |
s32CenterYOffset |
The vertical offset of the distortion center from the image center. [-511, 511] |
s32DistortionRatio |
The degree of distortion. [-300, 500] |
【Note】
None.
【Related Data Type and Interface】
None.
3.4.9. MMF_CHN_S¶
【Description】
Define module channel structure.
【Syntax】
typedef struct _MMF_CHN_S {
MOD_ID_E enModId;
CVI_S32 s32DevId;
CVI_S32 s32ChnId;
} MMF_CHN_S;
【Member】
Member |
Description |
---|---|
enModId |
Module ID |
s32DevId |
Device ID In some modules, it may also be a group ID. |
s32ChnId |
Channel ID |
【Note】
None.
【Related Data Type and Interface】
CVI_SYS_Bind
CVI_SYS_UnBind
CVI_SYS_GetBindByDest
CVI_SYS_GetBindBySrc
3.4.10. MMF_BIND_DEST_S¶
【Description】
Define MMF system binding structure.
【Syntax】
typedef struct _MMF_BIND_DEST_S {
CVI_U32 u32Num;
MMF_CHN_S astMmfChn[BIND_DEST_MAXNUM];
} MMF_BIND_DEST_S;
【Member】
Member |
Description |
---|---|
u32Num |
Number of bound destinations. |
astMmfChn |
Channel structure array for binding purposes. |
【Note】
None.
【Related Data Type and Interface】
CVI_SYS_GetBindBySrc
3.4.11. MMF_VERSION_S¶
【Description】
Define MMF version structure.
【Syntax】
#define VERSION_NAME_MAXLEN 128
typedef struct _MMF_VERSION_S {
char version[VERSION_NAME_MAXLEN];
} MMF_VERSION_S;
【Member】
Member |
Description |
---|---|
version |
Version description string. |
【Note】
None.
【Related Data Type and Interface】
CVI_SYS_GetVersion
3.4.12. VB_CONFIG_S¶
【Description】
Define MMF system video block pool structure.
【Syntax】
typedef struct _VB_CONFIG_S {
CVI_U32 u32MaxPoolCnt;
VB_POOL_CONFIG_S astCommPool[VB_MAX_COMM_POOLS];
} VB_CONFIG_S;
【Member】
Member |
Description |
---|---|
u32MaxPoolCnt |
Number of common video block pools. |
astCommPool |
Common video block pool properties. |
【Note】
None.
【Related Data Type and Interface】
CVI_VB_SetConfig
CVI_VB_GetConfig
3.4.13. VB_POOL_CONFIG_S¶
【Description】
Define MMF video block pool structure.
【Syntax】
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;
【Member】
Member |
Description |
---|---|
u32BlkSize |
Video block size |
u32BlkCnt |
The number of blocks in the video block pool |
enRemapMode |
Memory-map mode of block |
acName |
Block name |
【Note】
u32BlkSize should be calculated according to the required image size, format and other information. If it is too large, it will cause unnecessary waste of memory space; if it is too small, each mod cannot get video blocks to use.
The video block pool is obtained from the free memory. If the size of the video block pool exceeds the free memory size, the video block pool fails to be created.
【Related Data Type and Interface】
3.4.14. VI_VPSS_MODE_E¶
【Description】
Define the working mode between VI and VPSS.
【Syntax】
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;
【Member】
Member |
Description |
---|---|
VI_OFFLINE_VPSS_OFFLINE |
VI_PROC/VI_CAP offline, VI_CAP/VPSS offline |
VI_OFFLINE_VPSS_ONLINE |
VI_PROC/VI_CAP offline, VI_CAP/VPSS online |
VI_ONLINE_VPSS_OFFLINE |
VI_PROC/VI_CAP online, VI_CAP/VPSS offline |
VI_ONLINE_VPSS_ONLINE |
VI_PROC/VI_CAP online, VI_CAP/VPSS online |
【Note】
When VPSS_ONLINE, VPSS can’t process by time sharing and can only bind specific VI PIPE.
【Related Data Type and Interface】
None.
3.4.15. VPSS_MODE_E¶
【Description】
Define the working mode of VPSS enumeration.
【Syntax】
typedef enum _VPSS_MODE_E {
VPSS_MODE_SINGLE = 0,
VPSS_MODE_DUAL,
VPSS_MODE_BUTT,
VPSS_MODE_RGNEX
} VPSS_MODE_E;
【Member】
Member |
Description |
---|---|
VPSS_MODE_SINGLE |
VPSS works as a single hardware entity. |
VPSS_MODE_DUAL |
VPSS works in two hardware entities. |
VPSS_MODE_RGNEX |
VPSS works in two hardware entities. VPSS device 0 is used for RGN overlay, so only VPSS device 1 can operate in online mode. |
【Note】
CV181x/CV180x does not support VPSS MODE RGNEX mode
【Related Data Type and Interface】
None.
3.4.16. ASPECT_RATIO_E¶
【Description】
Define rotation angle enumeration.
【Syntax】
typedef enum _ASPECT_RATIO_E {
ASPECT_RATIO_NONE = 0,
ASPECT_RATIO_AUTO,
ASPECT_RATIO_MANUAL,
ASPECT_RATIO_MAX
} ASPECT_RATIO_E;
【Member】
Member |
Description |
---|---|
ASPECT_RATIO_NONE |
No motion, full screen. |
ASPECT_RATIO_AUTO |
Keeping video aspect ratio and automatically calculating video area. |
ASPECT_RATIO_MANUAL |
Manually determine the video area. |
【Note】
None.
【Related Data Type and Interface】
None.
3.4.17. ASPECT_RATIO_S¶
【Description】
Define screen ratio structure.
【Syntax】
typedef struct _ASPECT_RATIO_S {
ASPECT_RATIO_E enMode;
CVI_BOOL bEnableBgColor;
CVI_U32 u32BgColor;
RECT_S stVideoRect;
} ASPECT_RATIO_S;
【Member】
Member |
Description |
---|---|
enMode |
The ratio of pictures is listed. |
bEnableBgColor |
Whether to cover the outside of the picture with a background color. |
u32BgColor |
The background color of the screen scale is RGB888. Bit [7:0] is B, bit [15:8] is G, and bit [23:16] is R. |
stVideoRect |
The area of the video. It works only when the enMode is ASPECT_RATIO_MANUAL. |
【Note】
None.
【Related Data Type and Interface】
3.4.18. PIXEL_FORMAT_E¶
【Description】
Define pixel format enumeration.
【Syntax】
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_MAX
} PIXEL_FORMAT_E;
【Member】
None.
【Note】
None.
【Related Data Type and Interface】
None.
3.4.19. VIDEO_FRAME_S¶
【Description】
Define video frame information structure.
【Syntax】
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;
【Member】
Member |
Description |
---|---|
u32Width |
image width |
u32Height |
image height |
enPixelFormat |
image pixel format |
enBayerFormat |
image raw format |
enVideoFormat |
image format |
enCompressMode |
image compression format |
enDynamicRange |
dynamic range |
enColorGamut |
gamut range |
u32Stride |
Image row stride. |
u64PhyAddr |
physical address |
pu8VirAddr |
virtual address |
u32Length |
image space size (Bytes) |
s16OffsetTop |
image top crop width |
s16OffsetBottom |
image bottom crop width |
s16OffsetLeft |
image left crop width |
s16OffsetRight |
image right crop width |
u32TimeRef |
Image frame sequence number |
u64PTS |
Image timestamp |
pPrivateData |
private data |
u32FrameFlag |
the mark of the current frame |
【Note】
None.
【Related Data Type and Interface】
None.
3.4.20. VIDEO_FRAME_INFO_S¶
【Description】
Define video frame information structure.
【Syntax】
typedef struct _VIDEO_FRAME_INFO_S {
VIDEO_FRAME_S stVFrame; ///< Video frame
CVI_U32 u32PoolId; ///< VB pool ID
} VIDEO_FRAME_INFO_S;
【Member】
Member |
Description |
---|---|
stVFrame |
Video frame |
u32PoolId |
Cache pool ID |
【Note】
None.
【Related Data Type and Interface】
3.4.21. BITMAP_S¶
【Description】
Define BITMAP information.
【Syntax】
typedef struct _BITMAP_S {
PIXEL_FORMAT_E enPixelFormat;
CVI_U32 u32Width;
CVI_U32 u32Height;
CVI_VOID * ATTRIBUTE pData;
} BITMAP_S;
【Member】
Member |
Description |
---|---|
enPixelFormat |
Bitmap pixel format |
u32Width |
Bitmap width |
u32Height |
Bitmap height |
pData |
Bitmap data address |
【Note】
None.
【Related Data Type and Interface】
None.