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】

  • 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

【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.