7.4. 数据类型

相关数据类型、数据结构定义如下:


7.4.1. VENC_MAX_CHN_NUM

【说明】

定义编码最大信道个数。

【定义】

#define VENC_MAX_CHN_NUM             64

【成员】

无。

【注意事项】

由于最大通道个数涉及到内存的分配、目前不开放扩充。

【相关数据类型及接口】

无。

7.4.2. VENC_CHN_PARAM_S

【说明】

定义 Venc 通道参数结构体。

【定义】

typedef struct _VENC_CHN_PARAM_S {
  CVI_BOOL bColor2Grey;
  CVI_U32 u32Priority
  CVI_U32 u32MaxStrmCnt;
  CVI_U32 u32PollWakeUpFrmCnt;
  VENC_CROP_INFO_S stCropCfg;
  VENC_FRAME_RATE_S stFrameRate;
} VENC_CHN_PARAM_S;

【成员】

成员名称

描述

bColor2Grey

预留,暂未使用

u32Priority

预留,暂未使用

u32MaxStrmCnt

预留,暂未使用

u32PollWakeUpFrmCnt

预留,暂未使用

stCropCfg

通道截取(Crop)参数

stFrameRate

通道帧率控制参数

【注意事项】

无。

【相关数据类型及接口】

7.4.3. VENC_PACK_S

【说明】

定义帧码流包结构体。

【定义】

typedef struct _VENC_PACK_S {
  CVI_U64 u64PhyAddr;
  CVI_U8 ATTRIBUTE *pu8Addr;
  CVI_U32 ATTRIBUTE u32Len;
  CVI_U64 u64PTS;
  CVI_BOOL bFrameEnd;
  VENC_DATA_TYPE_U DataType;
  CVI_U32 u32Offset;
  CVI_U32 u32DataNum;
  VENC_PACK_INFO_S stPackInfo[8];
} VENC_PACK_S;

【成员】

成员名称

描述

u64PhyAddr

码流包首地址。

pu8Addr

码流包首虚拟地址。

u32Len

码流包长度。

DataType

码流类型,支持 H.264/JPEG/ H.265 协议类型的数据包。

bFrameEnd

帧结束标识。

CVI_TRUE:该码流包是该帧的最后一个包。

CVI_FALSE:该码流包不是该帧的最后一个包。

u32Offset

码流包中有效数据与码流包首地址 pu8Addr 的偏移。

u64PTS

时间戳。单位:us。

u32DataNum

当前码流包(当前包的类型由 DataType 指定)数据中包含 其他类型码流包的个数。

stPackInfo[8]

当前码流包数据中包含其他类型码流包数据信息。

【注意事项】

无。

【相关数据类型及接口】

7.4.4. VENC_STREAM_S

【说明】

定义帧码流类型结构体。

【定义】

typedef struct _VENC_STREAM_S {
  VENC_PACK_S ATTRIBUTE *pstPack;
  CVI_U32 ATTRIBUTE u32PackCount;
  CVI_U32 u32Seq;

  union {
  VENC_STREAM_INFO_H264_S stH264Info;
  VENC_STREAM_INFO_JPEG_S stJpegInfo;
  VENC_STREAM_INFO_H265_S stH265Info;
  VENC_STREAM_INFO_PRORES_S stProresInfo;
  };

  union {
  VENC_STREAM_ADVANCE_INFO_H264_S stAdvanceH264Info;
  VENC_STREAM_ADVANCE_INFO_JPEG_S stAdvanceJpegInfo;
  VENC_STREAM_ADVANCE_INFO_H265_S stAdvanceH265Info;
  VENC_STREAM_ADVANCE_INFO_PRORES_S stAdvanceProresInfo;
  };
} VENC_STREAM_S;

【成员】

成员名称

描述

pstPack

帧码流包结构。

u32PackCount

一帧码流的所有包的个数。

u32Seq

码流序列号。

stH264Info/stJpegInfo/stH265Info/stProresInfo

码流信息。

stAdvanceH264Info/stAdvanceJpegInfo/stAdvanceH265Info/stAdvanceProresInfo

码流进阶信息。

【注意事项】

无。

【相关数据类型及接口】

7.4.5. VENC_GOP_ATTR_S

【说明】

定义编码器 GOP 属性结构体。

【定义】

typedef struct _VENC_GOP_ATTR_S {
  VENC_GOP_MODE_E enGopMode;
  union {
    VENC_GOP_NORMALP_S stNormalP;
    VENC_GOP_DUALP_S stDualP;
    VENC_GOP_SMARTP_S stSmartP;
    VENC_GOP_ADVSMARTP_S stAdvSmartP;
    VENC_GOP_BIPREDB_S stBipredB;
  };

} VENC_GOP_ATTR_S;

【成员】

成员名称

描述

enGopMode

编码 GOP 类型。

stNormalP

编码单参考帧 P 帧 GOP 属性结构体。

stDualP

预留,暂未使用

stSmartP

编码智能 P 帧 GOP 属性结构体。

stAdvSmartP

预留,暂未使用

stBipredB

预留,暂未使用

【注意事项】

无。

【相关数据类型及接口】

7.4.6. VENC_GOP_NORMALP_S

【说明】

定义编码器NormalP GOP属性结构体。

【定义】

typedef struct _VENC_GOP_NORMALP_S {
  CVI_S32 s32IPQpDelta;
} VENC_GOP_NORMALP_S;

【成员】

成员名称

描述

s32IPQpDelta

I帧和P帧的QP差值

【注意事项】

无。

【相关数据类型及接口】

7.4.7. VENC_GOP_SMARTP_S

【说明】

定义编码器SmartP GOP属性结构体。

【定义】

typedef struct _VENC_GOP_SMARTP_S {
  CVI_U32 u32BgInterval;
  CVI_S32 s32BgQpDelta;
  CVI_S32 s32ViQpDelta;
} VENC_GOP_SMARTP_S;

【成员】

成员名称

描述

u32BgInterval

IDR帧的间隔

s32BgQpDelta

IDR帧和P帧的QP差值

s32ViQpDelta

Vi帧和P帧的QP差值

【注意事项】

无。

【相关数据类型及接口】

7.4.8. VENC_RECV_PIC_PARAM_S

【说明】

定义编码通道连续接收并编码的帧数结构体。

【定义】

typedef struct _VENC_RECV_PIC_PARAM_S {
  CVI_S32 s32RecvPicNum;
} VENC_RECV_PIC_PARAM_S;

【成员】

成员名称

描述

s32RecvPicNum

编码通道连续接收并编码的帧数。

范围:[-1,0)∪(0 ∞]

【注意事项】

无。

【相关数据类型及接口】

7.4.9. VENC_CHN_ATTR_S

【说明】

定义 VENC_CHN_ATTR_S 属性。

【定义】

typedef struct _VENC_CHN_ATTR_S {
  VENC_ATTR_S stVencAttr;
  VENC_RC_ATTR_S stRcAttr;
  VENC_GOP_ATTR_S stGopAttr;
} VENC_CHN_ATTR_S;

【成员】

成员名称

描述

stVencAttr

venc属性。

stRcAtt

码率控制器属性。

stGopAttr

Gop Mode 类型的结构体。请参考上述 typedef struct _VENC_GOP_ATTR_S

【注意事项】

无。

【相关数据类型及接口】

7.4.10. VENC_ATTR_S

【说明】

定义 VENC_ATTR_S 属性。

【定义】

typedef struct _VENC_ATTR_S {
  PAYLOAD_TYPE_E enType;
  CVI_U32 u32MaxPicWidth;
  CVI_U32 u32MaxPicHeight;
  CVI_U32 u32BufSize;
  CVI_U32 u32Profile;
  CVI_BOOL bByFrame;
  CVI_U32 u32PicWidth;
  CVI_U32 u32PicHeight;
  CVI_BOOL bSingleCore;
  CVI_BOOL bEsBufQueueEn;
  CVI_BOOL bIsoSendFrmEn;
  union {
  VENC_ATTR_H264_S stAttrH264e;
  VENC_ATTR_H265_S stAttrH265e;
  VENC_ATTR_JPEG_S stAttrJpege;
  VENC_ATTR_PRORES_S stAttrProres;
  };
} VENC_ATTR_S;

【成员】

成员名称

描述

enType

payload类型

u32MaxPicWidth

影像最大编码宽度

u32MaxPicHeight

影像最大编码高度

u32BufSize

Encoded bitstream buffer大小

u32Profile

编码的等级

bByFrame

Encoded bitstream收集方式
CVI_TRUE: 以帧为主
CVI_FALSE: 以封包为主

u32PicWidth

编码影像宽度

u32PicHeight

编码影像高度

bSingleCore

只使用H264/H265

bEsBufQueueEn

使用 es buffer queue

bIsoSendFrmEn

去除SendFrame/GetStream必须配对使用的限制

stAttrH264e / stAttrH265e /stAttrJpege / stAttrProres

Encoder 属性

【注意事项】

打开bIsoSendFrmEn的同时应该打开bEsBufQueueEn,否则会有花屏现象

双系统bIsoSendFrmEn必须关闭,双系统默认去除了SendFrame/GetStream必须配对使用的限制

【相关数据类型及接口】

无。

7.4.11. VENC_ATTR_H264_S

【说明】

定义 H264编码属性。

【定义】

typedef struct _VENC_ATTR_H264_S {
  CVI_BOOL bRcnRefShareBuf;
  CVI_BOOL bSingleLumaBuf;
} VENC_ATTR_H264_S;

【成员】

成员名称

描述

bRcnRefShareBuf

预留

bSingleLumaBuf

一个编码通道的FrameBuffer使用一个Luma Buffer

【注意事项】

无。

【相关数据类型及接口】

无。

7.4.12. VENC_ATTR_H265_S

【说明】

定义 H265编码属性。

【定义】

typedef struct _VENC_ATTR_H265_S {
  CVI_BOOL bRcnRefShareBuf;
} VENC_ATTR_H265_S;

【成员】

成员名称

描述

bRcnRefShareBuf

预留

【注意事项】

无。

【相关数据类型及接口】

无。

7.4.13. VENC_STREAM_INFO_S

【说明】

定义VENC_STREAM_INFO_S属性。

【定义】

typedef struct _ VENC_STREAM_INFO_S {
  H265E_REF_TYPE_E enRefType;

  CVI_U32 u32PicBytesNum;
  CVI_U32 u32PicCnt;
  CVI_U32 u32StartQp;
  CVI_U32 u32MeanQp;
  CVI_BOOL bPSkip;

  CVI_U32 u32ResidualBitNum;
  CVI_U32 u32HeadBitNum;
  CVI_U32 u32MadiVal;
  CVI_U32 u32MadpVal;
  CVI_U32 u32MseSum;
  CVI_U32 u32MseLcuCnt;
  double dPSNRVal;
} VENC_STREAM_INFO_S;

【成员】

成员名称

描述

u32MeanQp

目前Frame的平均QP

【注意事项】

无。

【相关数据类型及接口】

无。

7.4.14. VENC_CHN_STATUS_S

【说明】

定义VENC_CHN_STATUS_S属性。

【定义】

typedef struct _VENC_CHN_STATUS_S {
  CVI_U32 u32LeftPics;
  CVI_U32 u32LeftStreamBytes;
  CVI_U32 u32LeftStreamFrames;
  CVI_U32 u32CurPacks;
  CVI_U32 u32LeftRecvPics;
  CVI_U32 u32LeftEncPics;
  CVI_BOOL bJpegSnapEnd;
  VENC_STREAM_INFO_S stVencStrmInfo;
} VENC_CHN_STATUS_S;

【成员】

成员名称

描述

u32LeftPics

预留

u32LeftStreamBytes

预留

u32LeftStreamFrames

VENC剩余待接收的帧数

u32CurPacks

目前Frame中的Packet数

u32LeftRecvPics

预留

u32LeftEncPics

预留

bJpegSnapEnd

预留

stVencStrmInfo

预留

【注意事项】

无。

【相关数据类型及接口】

7.4.15. VENC_JPEG_PARAM_S

【说明】

定义 JPEG 协议编码通道高级参数结构体。

【定义】

typedef struct _VENC_JPEG_PARAM_S {
  CVI_U32 u32Qfactor;
  CVI_U8 u8YQt[64];
  CVI_U8 u8CbQt[64];
  CVI_U8 u8CrQt[64];
  CVI_U32 U32MCUPerECS;
} VENC_JPEG_PARAM_S;

【成员】

成员名称

描述

u32Qfactor

具体含义请参见RFC2435协议,系统默认为 0。

u8YQt

Y 量化表。(未实现)

u8CbQt

Cb 量化表。(未实现)

u8CrQt

Cr 量化表。(未实现)

u32MCUPerECS

每个 ECS 中包含多少个 MCU,系统默认为 0,表示不 划分 Ecs。(未实现)

【注意事项】

无。

【相关数据类型及接口】

7.4.16. VENC_RC_ATTR_S

【说明】

定义编码通道码率控制器属性。

【定义】

typedef struct _VENC_RC_ATTR_S {
  VENC_RC_MODE_E enRcMode;
  union {
    VENC_H264_CBR_S stH264Cbr;
    VENC_H264_VBR_S stH264Vbr;
    VENC_H264_AVBR_S stH264AVbr;
    VENC_H264_QVBR_S stH264QVbr;
    VENC_H264_FIXQP_S stH264FixQp;
    VENC_H264_QPMAP_S stH264QpMap;

    VENC_MJPEG_CBR_S stMjpegCbr;
    VENC_MJPEG_VBR_S stMjpegVbr;
    VENC_MJPEG_FIXQP_S stMjpegFixQp;

    VENC_H265_CBR_S stH265Cbr;
    VENC_H265_VBR_S stH265Vbr;
    VENC_H265_AVBR_S stH265AVbr;
    VENC_H265_QVBR_S stH265QVbr;
    VENC_H265_FIXQP_S stH265FixQp;
    VENC_H265_QPMAP_S stH265QpMap;
  };
} VENC_RC_ATTR_S;

【成员】

成员名称

描述

enRcMode

RC 模式。

stH264Cbr

H.264 协议编码信道 Cbr 模式属性。

stH264Vbr

H.264 协议编码信道 Vbr 模式属性。

stH264AVbr

H.264 协议编码信道 AVbr 模式属性。

stH264QVbr

H.264 协议编码信道 QVbr 模式属性。

stH264CVbr

H.264 协议编码信道 CVbr 模式属性。

stH264FixQp

H.264 协议编码信道 Fixqp 模式属性。

stH264QpMap

H.264 协议编码信道 QPMAP 模式属性。

stMjpegeFixQp

Mjpeg 协议编码信道 Fixqp 模式属性。

stMjpegeCbr

Mjpeg 协议编码信道 cbr 模式属性。

stMjpegeVbr

Mjpeg 协议编码信道 vbr 模式属性

stH265Cbr

H.265 协议编码信道 Cbr 模式属性。

stH265Vbr

H.265 协议编码信道 Vbr 模式属性。

stH265AVbr

H.265 协议编码信道 AVbr 模式属性。

stH265QVbr

H.265 协议编码信道 QVbr 模式属性。

stH265CVbr

H.265 协议编码信道 CVbr 模式属性。

stH265FixQp

H.265 协议编码信道 Fixqp 模式属性。

stH265QpMap

H.265 协议编码信道 QPMAP 模式属性。

【注意事项】

无。

【相关数据类型及接口】

7.4.17. VENC_H264_CBR_S

【说明】

定义 H.264 编码通道 CBR 属性结构。

【定义】

typedef struct _VENC_H264_CBR_S {
  CVI_U32 u32Gop;
  CVI_U32 u32StatTime;
  CVI_U32 u32SrcFrameRate
  CVI_FR32 fr32DstFrameRate;
  CVI_U32 u32BitRate;
  CVI_BOOL bVariFpsEn;
} VENC_H264_CBR_S;

【成员】

成员名称

描述

u32Gop

H.264 gop 值。 范围:[1, 65536]。

u32StatTime

CBR 码率统计时间,以秒为单位。 范围:[1, 60]。

u32SrcFrameRate

输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

u32BitRate

平均 bitrate,以 kbps 为单位。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.18. VENC_H264_VBR_S

【说明】

定义 H.264 编码通道 VBR 属性结构。

【定义】

typedef struct _VENC_H264_VBR_S {
  CVI_U32 u32Gop;
  CVI_U32 u32StatTime;
  CVI_U32 u32SrcFrameRate;
  CVI_FR32 fr32DstFrameRate;
  CVI_U32 u32MaxBitRate;
  CVI_BOOL bVariFpsEn;
} VENC_H264_VBR_S;

【成员】

成员名称

描述

u32Gop

H.264 gop 值。 范围:[1, 65536]。

u32StatTime

VBR 码率统计时间,以秒为单位。。 范围:[1, 60]。

u32SrcFrameRate

输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

u32MaxBitRate

编码器输出最大码率,以 kbps 为单位。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.19. VENC_H264_AVBR_S

【说明】

定义 H.264 编码通道 AVBR 属性结构。

【定义】

typedef struct _VENC_H264_AVBR_S {
  CVI_U32 u32Gop;
  CVI_U32 u32StatTime;
  CVI_U32 u32SrcFrameRate;
  CVI_FR32 fr32DstFrameRate;
  CVI_U32 u32MaxBitRate;
  CVI_BOOL bVariFpsEn;
} VENC_H264_AVBR_S;

【成员】

成员名称

描述

u32Gop

H.264 gop 值。

u32StatTime

AVBR 码率统计时间,以秒为单位。

u32SrcFrameRate

VI 输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

u32MaxBitRate

编码器输出最大码率,以 kbps 为单位。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.20. VENC_H264_FIXQP_S

【说明】

定义 H.264 编码通道 Fixqp 属性结构。

【定义】

typedef struct _VENC_H264_FIXQP_S {
  CVI_U32 u32Gop;
  CVI_U32 u32SrcFrameRate;
  CVI_FR32 fr32DstFrameRate
  CVI_U32 u32IQp;
  CVI_U32 u32PQp;
  CVI_U32 u32BQp;
  CVI_BOOL bVariFpsEn;
} VENC_H264_FIXQP_S;

【成员】

成员名称

描述

u32Gop

H.264 gop 值。 范围:[1, 65536]。

u32IQp

I 帧所有宏块 Qp 值。

u32SrcFrameRate

输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

u32PQp

P 帧所有宏块 Qp 值。

u32BQp

B 帧所有宏块 Qp 值。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.21. VENC_H264_QPMAP_S

【说明】

定义 H.264 编码通道 QPMAP 属性结构。

【定义】

typedef struct _VENC_H264_QPMAP_S {
  CVI_U32 u32Gop;
  CVI_U32 u32StatTime;
  CVI_U32 u32SrcFrameRate;
  CVI_FR32 fr32DstFrameRate;
  CVI_BOOL bVariFpsEn;
} VENC_H264_QPMAP_S;

【成员】

成员名称

描述

u32Gop

H.264 gop 值。 范围:[1, 65536]。

u32StatTime

QPMAP 码率统计时间,以秒为单位。

u32SrcFrameRate

输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.22. VENC_MJPEG_FIXQP_S

【说明】

定义 MJPEG 编码通道 Fixqp 属性结构。

【定义】

typedef struct _VENC_MJPEG_FIXQP_S {
  CVI_U32 u32SrcFrameRate
  CVI_FR32 fr32DstFrameRate;
  CVI_U32 u32Qfactor;
  CVI_BOOL bVariFpsEn;
} VENC_MJPEG_FIXQP_S;

【成员】

成员名称

描述

u32SrcFrameRate

VI 输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

u32Qfactor

MJPEG 编码的 Qfactor。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.23. VENC_MJPEG_CBR_S

【说明】

定义 MJPEG 编码通道 CBR 属性结构。

【定义】

typedef struct _VENC_MJPEG_CBR_S {
  CVI_U32 u32StatTime;
  CVI_U32 u32SrcFrameRate;
  CVI_FR32 fr32DstFrameRate;
  CVI_U32 u32BitRate;
  CVI_BOOL bVariFpsEn;
} VENC_MJPEG_CBR_S;

【成员】

成员名称

描述

u32StatTime

CBR 码率统计时间,以秒为单位。

u32SrcFrameRate

编码器输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

u32BitRate

平均 bitrate,以 kbps 为单位。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.24. VENC_H265_CBR_S

【说明】

定义 H.265 编码通道 CBR 属性结构。

【定义】

typedef struct _VENC_H264_CBR_S {
  CVI_U32 u32Gop;
  CVI_U32 u32StatTime
  CVI_U32 u32SrcFrameRate;
  CVI_FR32 fr32DstFrameRate;
  CVI_U32 u32BitRate;
  CVI_BOOL bVariFpsEn;
} VENC_H264_CBR_S;
typedef struct _VENC_H264_CBR_S VENC_H265_CBR_S;

【成员】

成员名称

描述

u32Gop

H.265 gop 值。

u32StatTime

CBR 码率统计时间,以秒为单位。

u32SrcFrameRate

VI 输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

u32BitRate

平均 bitrate,以 kbps 为单位。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.25. VENC_H265_VBR_S

【说明】

定义 H.265 编码通道 VBR 属性结构。

【定义】

typedef struct _VENC_H264_VBR_S {
  CVI_U32 u32Gop;
  CVI_U32 u32StatTime;
  CVI_U32 u32SrcFrameRate;
  CVI_FR32 fr32DstFrameRate;
  CVI_U32 u32MaxBitRate;
  CVI_BOOL bVariFpsEn;
} VENC_H264_VBR_S;
typedef struct _VENC_H264_VBR_S VENC_H265_VBR_S;

【成员】

成员名称

描述

u32Gop

H.265 gop 值。

u32StatTime

CBR 码率统计时间,以秒为单位。

u32SrcFrameRate

VI 输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

u32MaxBitRate

编码器输出最大码率,以 kbps 为单位。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.26. VENC_H265_AVBR_S

【说明】

定义 H.265 编码通道 AVBR 属性结构。

【定义】

typedef struct _VENC_H264_AVBR_S {
  CVI_U32 u32Gop;
  CVI_U32 u32StatTime;
  CVI_U32 u32SrcFrameRate;
  CVI_FR32 fr32DstFrameRate;
  CVI_U32 u32MaxBitRate;
  CVI_BOOL bVariFpsEn;
} VENC_H264_AVBR_S;
typedef struct _VENC_H264_AVBR_S VENC_H265_AVBR_S;

【成员】

成员名称

描述

u32Gop

H.265 gop 值。

u32StatTime

AVBR 码率统计时间,以秒为单位。

u32SrcFrameRate

VI 输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

u32MaxBitRate

编码器输出最大码率,以 kbps 为单位。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.27. VENC_H265_FIXQP_S

【说明】

定义 H.265 编码通道 Fixqp 属性结构。

【定义】

typedef struct _VENC_H264_FIXQP_S {
  CVI_U32 u32Gop;
  CVI_U32 u32SrcFrameRate;
  CVI_FR32 fr32DstFrameRate;
  CVI_U32 u32IQp;
  CVI_U32 u32PQp;
  CVI_U32 u32BQp;
  CVI_BOOL bVariFpsEn;
} VENC_H264_FIXQP_S;
typedef struct _VENC_H264_FIXQP_S VENC_H265_FIXQP_S;

【成员】

成员名称

描述

u32Gop

H.265 gop 值。

u32SrcFrameRate

VI 输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

u32IQp

I 帧所有宏块 Qp 值。

u32PQp

P 帧所有宏块 Qp 值。

u32BQp

预留。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.28. VENC_H265_QPMAP_S

【说明】

定义 H.265 编码通道 QPMAP 属性结构。

【定义】

typedef struct _VENC_H265_QPMAP_S {
  CVI_U32 u32Gop;
  CVI_U32 u32StatTime;
  CVI_U32 u32SrcFrameRate;
  CVI_FR32 fr32DstFrameRate;
  VENC_RC_QPMAP_MODE_E enQpMapMode;
  CVI_BOOL bVariFpsEn;
} VENC_H265_QPMAP_S;

【成员】

成员名称

描述

u32Gop

H.265 gop 值。

u32StatTime

QPMAP 码率统计时间,以秒为单位。

u32SrcFrameRate

VI 输入帧率,以 fps 为单位。

fr32DstFrameRate

编码器输出帧率,以 fps 为单位。

enQpMapMode

CU32 或 CU64 的 QP 值的取值方式。

bVariFpsEn

开启Variable FPS。开启此功能后,会同时开闭Frame rate conversion功能。

【注意事项】

无。

【相关数据类型及接口】

7.4.29. VENC_RC_PARAM_S

【说明】

定义编码通道的码率控制高级参数。码率控制主参数结构。

【定义】

typedef struct _VENC_RC_PARAM_S {
  CVI_U32 u32ThrdI[RC_TEXTURE_THR_SIZE];
  CVI_U32 u32ThrdP[RC_TEXTURE_THR_SIZE];
  CVI_U32 u32ThrdB[RC_TEXTURE_THR_SIZE];
  CVI_U32 u32DirectionThrd;
  CVI_S32 s32FirstFrameStartQp;
  CVI_S32 s32InitialDelay;
  CVI_U32 u32ThrdLv;
  CVI_BOOL bBgEnhanceEn;
  CVI_S32 s32BgDeltaQp;
  union {
    VENC_PARAM_H264_CBR_S stParamH264Cbr;
    VENC_PARAM_H264_VBR_S stParamH264Vbr;
    VENC_PARAM_H264_AVBR_S stParamH264AVbr;
    VENC_PARAM_H264_QVBR_S stParamH264QVbr;
    VENC_PARAM_H265_CBR_S stParamH265Cbr;
    VENC_PARAM_H265_VBR_S stParamH265Vbr;
    VENC_PARAM_H265_AVBR_S stParamH265AVbr;
    VENC_PARAM_H265_QVBR_S stParamH265QVbr;
    VENC_PARAM_MJPEG_CBR_S stParamMjpegCbr;
    VENC_PARAM_MJPEG_VBR_S stParamMjpegVbr;
  };
} VENC_RC_PARAM_S;

【成员】

成员名称

描述

u32ThrdI

预留

u32ThrdP

预留

u32ThrdB

预留

u32DirectionThrd

预留

u32RowQpDelta

在宏块级码率控制时,每一行宏块的起始 Qp 相对于帧起始 Qp 的波动幅度值。

s32FirstFrameStartQp

设置第一帧的起始 Qp 值, CBR / VBR / AVBR 有效

stSceneChangeDetect

预留

s32InitialDelay

影响帧编码的码率控制

u32ThrdLv

宏块级码率控制的mad门限

bBgEnhanceEn

预留

s32BgDeltaQp

smartP模式下,IDR帧与P帧的QP差值

stParamH264Cbr

H.264 通道 CBR(Constant Bit Rate)码率控制模 式高级参数。

stParamH264Vbr

H.264 通道 VBR(Variable Bit Rate)码率控制模 式高级参数。

stParamH264AVbr

H.264 通道 AVBR(Adaptive Variable Bit Rate) 码率控制模式高级参数。

stParamH264QVbr

预留

stParamH264CVbr

预留

stParamMjpegCbr

MJPEG 信道 CBR(Constant Bit Rate)码率控制 模式高级参数。

stParamMjpegVbr

预留

stParamH265Cbr

H.265 通道 CBR(Constant Bit Rate)码率控制模 式高级参数。

stParamH265Vbr

H.265 通道 VBR(Variable Bit Rate)码率控制模 式高级参数。

stParamH265AVbr

H.265 通道 AVBR(Adaptive Variable Bit Rate) 码率控制模式高级参数。

stParamH265QVbr

预留

stParamH265CVbr

预留

【注意事项】

无。

【相关数据类型及接口】

7.4.30. VENC_PARAM_H264_CBR_S

【说明】

定义H264 CBR高级参数。

【定义】

typedef struct _VENC_PARAM_H264_CBR_S {
  CVI_U32 u32MinIprop;
  CVI_U32 u32MaxIprop;
  CVI_U32 u32MaxQp;
  CVI_U32 u32MinQp;
  CVI_U32 u32MaxIQp;
  CVI_U32 u32MinIQp;
  CVI_S32 s32MaxReEncodeTimes;
  CVI_BOOL bQpMapEn;
} VENC_PARAM_H264_CBR_S;

【成员】

成员名称

描述

u32MinIprop

最小IP比

u32MaxIprop

最大IP比

u32MaxQp

最大QP

u32MinQp

最小QP

u32MaxIQp

I帧最大QP

u32MinIQp

I帧最小QP

s32MaxReEncodeTimes

预留

CVI_BOOL bQpMapEn

预留

【注意事项】

无。

【相关数据类型及接口】

7.4.31. VENC_PARAM_H264_VBR_S

【说明】

定义H264 VBR高级参数。

【定义】

typedef struct _VENC_PARAM_H264_VBR_S {
  CVI_S32 s32ChangePos;
  CVI_U32 u32MinIprop;
  CVI_U32 u32MaxIprop;
  CVI_S32 s32MaxReEncodeTimes;
  CVI_BOOL bQpMapEn;

  CVI_U32 u32MaxQp;
  CVI_U32 u32MinQp;
  CVI_U32 u32MaxIQp;
  CVI_U32 u32MinIQp;
} VENC_PARAM_H264_VBR_S;

【成员】

成员名称

描述

s32ChangePos

码率调节阈值

u32MinIprop

预留

u32MaxIprop

最大IP比

s32MaxReEncodeTimes

预留

CVI_BOOL bQpMapEn

预留

u32MaxQp

最大QP

u32MinQp

最小QP

u32MaxIQp

I帧最大QP

u32MinIQp

I帧最小QP

【注意事项】

无。

【相关数据类型及接口】

7.4.32. VENC_PARAM_H264_AVBR_S

【说明】

定义H264 AVBR高级参数。

【定义】

typedef struct _VENC_PARAM_H264_AVBR_S {
  CVI_S32 s32ChangePos;
  CVI_U32 u32MinIprop;
  CVI_U32 u32MaxIprop;
  CVI_S32 s32MaxReEncodeTimes;
  CVI_BOOL bQpMapEn;

  CVI_S32 s32MinStillPercent;
  CVI_U32 u32MaxStillQP;
  CVI_U32 u32MinStillPSNR;

  CVI_U32 u32MaxQp;
  CVI_U32 u32MinQp;
  CVI_U32 u32MaxIQp;
  CVI_U32 u32MinIQp;
  CVI_U32 u32MinQpDelta;

  CVI_U32 u32MotionSensitivity;
  CVI_S32 s32AvbrFrmLostOpen;
  CVI_S32 s32AvbrFrmGap;
  CVI_S32 s32AvbrPureStillThr;
} VENC_PARAM_H264_AVBR_S;

【成员】

成员名称

描述

s32ChangePos

码率调节阈值

u32MinIprop

预留

u32MaxIprop

最大IP比

s32MaxReEncodeTimes

预留

CVI_BOOL bQpMapEn

预留

s32MinStillPercent

静态场景最小码率百分比

u32MaxStillQP

静态场景最大QP

u32MinStillPSNR

预留

u32MaxQp

最大QP

u32MinQp

最小QP

u32MaxIQp

I帧最大QP

u32MinIQp

I帧最小QP

u32MinQpDelta

帧级最小QP和宏块级最小QP差值

u32MotionSensitivity

运动灵敏度

s32AvbrFrmLostOpen

丢帧使能

s32AvbrFrmGap

最大丢帧次数

s32AvbrPureStillThr

静止门限值

【注意事项】

无。

【相关数据类型及接口】

7.4.33. VENC_PARAM_H265_CBR_S

【说明】

定义H265 CBR高级参数。

【定义】

typedef struct _VENC_PARAM_H265_CBR_S {
  CVI_U32 u32MinIprop;
  CVI_U32 u32MaxIprop;
  CVI_U32 u32MaxQp;
  CVI_U32 u32MinQp;
  CVI_U32 u32MaxIQp;
  CVI_U32 u32MinIQp;
  CVI_S32 s32MaxReEncodeTimes;
  CVI_BOOL bQpMapEn;
  VENC_RC_QPMAP_MODE_E enQpMapMode;
} VENC_PARAM_H265_CBR_S;

【成员】

成员名称

描述

u32MinIprop

预留

u32MaxIprop

预留

u32MaxQp

最大QP

u32MinQp

最小QP

u32MaxIQp

I帧最大QP

u32MinIQp

I帧最小QP

s32MaxReEncodeTimes

预留

bQpMapEn

是否开启QPMAP功能

enQpMapMode

QpMap的模式

【注意事项】

无。

【相关数据类型及接口】

7.4.34. VENC_PARAM_H265_VBR_S

【说明】

定义H265 VBR高级参数。

【定义】

typedef struct _VENC_PARAM_H265_VBR_S {
  CVI_S32 s32ChangePos;
  CVI_U32 u32MinIprop;
  CVI_U32 u32MaxIprop;
  CVI_S32 s32MaxReEncodeTimes;

  CVI_U32 u32MaxQp;
  CVI_U32 u32MinQp;
  CVI_U32 u32MaxIQp;
  CVI_U32 u32MinIQp;

  CVI_BOOL bQpMapEn;
  VENC_RC_QPMAP_MODE_E enQpMapMode;
} VENC_PARAM_H265_VBR_S;

【成员】

成员名称

描述

s32ChangePos

码率调节阈值

u32MinIprop

预留

u32MaxIprop

预留

s32MaxReEncodeTimes

预留

u32MaxQp

最大QP

u32MinQp

最小QP

u32MaxIQp

I帧最大QP

u32MinIQp

I帧最小QP

CVI_BOOL bQpMapEn

预留

enQpMapMode

预留

【注意事项】

无。

【相关数据类型及接口】

7.4.35. VENC_PARAM_H265_AVBR_S

【说明】

定义H265 AVBR高级参数。

【定义】

typedef struct _VENC_PARAM_H265_AVBR_S {
  CVI_S32 s32ChangePos;
  CVI_U32 u32MinIprop;
  CVI_U32 u32MaxIprop;
  CVI_S32 s32MaxReEncodeTimes;

  CVI_S32 s32MinStillPercent;
  CVI_U32 u32MaxStillQP;
  CVI_U32 u32MinStillPSNR;

  CVI_U32 u32MaxQp;
  CVI_U32 u32MinQp;
  CVI_U32 u32MaxIQp;
  CVI_U32 u32MinIQp;
  CVI_U32 u32MinQpDelta;

  CVI_U32 u32MotionSensitivity;
  CVI_S32 s32AvbrFrmLostOpen;
  CVI_S32 s32AvbrFrmGap;
  CVI_S32 s32AvbrPureStillThr;
  CVI_BOOL bQpMapEn;
  VENC_RC_QPMAP_MODE_E enQpMapMode;
} VENC_PARAM_H265_AVBR_S;

【成员】

成员名称

描述

s32ChangePos

码率调节阈值

u32MinIprop

预留

u32MaxIprop

预留

s32MaxReEncodeTimes

预留

s32MinStillPercent

静态场景最小码率百分比

u32MaxStillQP

静态场景最大QP

u32MinStillPSNR

预留

u32MaxQp

最大QP

u32MinQp

最小QP

u32MaxIQp

I帧最大QP

u32MinIQp

I帧最小QP

u32MinQpDelta

帧级最小QP和宏块级最小QP差值

u32MotionSensitivity

运动灵敏度

s32AvbrFrmLostOpen

丢帧使能

s32AvbrFrmGap

最大丢帧次数

s32AvbrPureStillThr

静止门限值

bQpMapEn

预留

enQpMapMode

预留

【注意事项】

无。

【相关数据类型及接口】

7.4.36. VENC_PARAM_MOD_S

【说明】

编码相关模块参数。

【定义】

typedef struct _VENC_MODPARAM_S {
  VENC_MODTYPE_E enVencModType;
  union {
  VENC_MOD_VENC_S stVencModParam;
  VENC_MOD_H264E_S stH264eModParam;
  VENC_MOD_H265E_S stH265eModParam;
  VENC_MOD_JPEGE_S stJpegeModParam;
  VENC_MOD_RC_S stRcModParam;
  };
} VENC_PARAM_MOD_S;

【成员】

成员名称

描述

enVencModType

模块参数的类型

stVencModParam /stH264eModParam /stH265eModParam /stJpegeModParam /stRcModParam

Venc / H264e / H265e / Jpege / Rc 模块参数结构。

【注意事项】

无。

【相关数据类型及接口】

7.4.37. VENC_MOD_H264E_S

【说明】

H264编码相关模块参数。

【定义】

typedef struct _VENC_MOD_H264E_S {
  CVI_U32 u32OneStreamBuffer;
  CVI_U32 u32H264eMiniBufMode;
  CVI_U32 u32H264ePowerSaveEn;
  VB_SOURCE_E enH264eVBSource;
  CVI_BOOL bQpHstgrmEn;
  CVI_U32 u32UserDataMaxLen;
  CVI_BOOL bSingleEsBuf;
  CVI_U32 u32SingleEsBufSize;
} VENC_MOD_H264E_S;

【成员】

成员名称

描述

u32OneStreamBuffer

预留

u32H264eMiniBufMode

预留

u32H264ePowerSaveEn

预留

enH264eVBSource

VB模式

bQpHstgrmEn

预留

u32UserDataMaxLen

用户数据最大长度

bSingleEsBuf

多个通道使用一个streamBuffer

u32SingleEsBufSize

streamBuffer的大小

【注意事项】

无。

【相关数据类型及接口】

7.4.38. VENC_MOD_H265E_S

【说明】

H265编码相关模块参数。

【定义】

typedef struct _VENC_MOD_H265E_S {
  CVI_U32 u32OneStreamBuffer;
  CVI_U32 u32H265eMiniBufMode;
  CVI_U32 u32H265ePowerSaveEn;
  VB_SOURCE_E enH265eVBSource;
  CVI_BOOL bQpHstgrmEn;
  CVI_U32 u32UserDataMaxLen;
  CVI_BOOL bSingleEsBuf;
  CVI_U32 u32SingleEsBufSize;
  H265E_REFRESH_TYPE_E enRefreshType;
} VENC_MOD_H265E_S;

【成员】

成员名称

描述

u32OneStreamBuffer

预留

u32H265eMiniBufMode

预留

u32H265ePowerSaveEn

预留

enH265eVBSource

VB模式

bQpHstgrmEn

预留

u32UserDataMaxLen

用户数据最大长度

bSingleEsBuf

多个通道使用一个stream Buffer

u32SingleEsBufSize

streamBuffer的大小

enRefreshType

刷新类型

【注意事项】

无。

【相关数据类型及接口】

7.4.39. VENC_MOD_JPEGE_S

【说明】

JPEG编码相关模块参数。

【定义】

typedef struct _VENC_MOD_JPEGE_S {
  CVI_U32 u32OneStreamBuffer;
  CVI_U32 u32JpegeMiniBufMode;
  CVI_U32 u32JpegClearStreamBuf;
  CVI_BOOL bSingleEsBuf;
  CVI_U32 u32SingleEsBufSize;
  JPEGE_FORMAT_E enJpegeFormat;
  JPEGE_MARKER_TYPE_E JpegMarkerOrder[JPEG_MARKER_ORDER_CNT];
} VENC_MOD_JPEGE_S;

【成员】

成员名称

描述

u32OneStreamBuffer

预留

u32JpegeMiniBufMode

预留

u32JpegClearStreamBuf

预留

bSingleEsBuf

多个通道使用一个stream Buffer

u32SingleEsBufSize

streamBuffer的大小

enJpegeFormat

JPEG Header编码方式

JpegMarkerOrder

Header编码mark顺序

【注意事项】

无。

【相关数据类型及接口】

7.4.40. VENC_CHN_POOL_S

【说明】

定义编码通道绑定的 VB 池结构体。

【定义】

typedef struct _VENC_CHN_POOL_S {
  VB_POOL hPicVbPool;
  VB_POOL hPicInfoVbPool;
} VENC_CHN_POOL_S;

【成员】

成员名称

描述

hPicVbPool

用于存储 Picture 的 VB 池 Poold

hPicInfoVbPool

用于存储 Picture 信息的 VB 池PoolId。

【注意事项】

无。

【相关数据类型及接口】

7.4.41. VENC_FRAMELOST_S

【说明】

定义编码丢帧结构体。

【定义】

typedef struct _VENC_FRAMELOST_S {
  CVI_BOOL bFrmLostOpen;
  CVI_U32 u32FrmLostBpsThr;
  VENC_FRAMELOST_MODE_E enFrmLostMode;
  CVI_U32 u32EncFrmGaps;
} VENC_FRAMELOST_S;

【成员】

成员名称

描述

bFrmLostOpen

丢帧策略使能

u32FrmLostBpsThr

丢帧bitrate门限值

enFrmLostMode

丢帧模式

u32EncFrmGaps

允许最大连续丢帧数量

【注意事项】

无。

【相关数据类型及接口】

7.4.42. VENC_H264_ENTROPY_S

【说明】

定义H264熵编码结构体

【定义】

typedef struct _VENC_H264_ENTROPY_S {
  CVI_U32 u32EntropyEncModeI;
  CVI_U32 u32EntropyEncModeP;
  CVI_U32 u32EntropyEncModeB;
  CVI_U32 cabac_init_idc;
} VENC_H264_ENTROPY_S;

【成员】

成员名称

描述

u32EntropyEncModeI

I帧熵编码模式 0:cavlc, 1:cabac

u32EntropyEncModeP

P帧熵编码模式0:cavlc, 1:cabac

u32EntropyEncModeB

预留,暂未使用

cabac_init_idc

参看H264协议

【注意事项】

无。

【相关数据类型及接口】

7.4.43. VENC_CU_PREDICTION_S

【说明】

定义CU 预测属性结构体

【定义】

typedef struct _VENC_CU_PREDICTION_S {
  OPERATION_MODE_E enPredMode;

  CVI_U32 u32IntraCost;
  CVI_U32 u32Intra32Cost;
  CVI_U32 u32Intra16Cost;
  CVI_U32 u32Intra8Cost;
  CVI_U32 u32Intra4Cost;

  CVI_U32 u32Inter64Cost;
  CVI_U32 u32Inter32Cost;
  CVI_U32 u32Inter16Cost;
  CVI_U32 u32Inter8Cost;
} VENC_CU_PREDICTION_S;

【成员】

成员名称

描述

enPredMode

预留,暂未使用

u32IntraCost

默认为0,用于降低Intra Block出现的概率

u32Intra32Cost

预留,暂未使用

u32Intra16Cost

预留,暂未使用

u32Intra8Cost

预留,暂未使用

u32Intra4Cost

预留,暂未使用

u32Inter64Cost

预留,暂未使用

u32Inter32Cost

预留,暂未使用

u32Inter16Cost

预留,暂未使用

u32Inter8Cost

预留,暂未使用

【注意事项】

无。

【相关数据类型及接口】

7.4.44. VENC_H264_TRANS_S

【说明】

定义 H.264协议编码通道变换量化的结构体

【定义】

typedef struct _VENC_H264_TRANS_S {
  CVI_U32 u32IntraTransMode;
  CVI_U32 u32InterTransMode;
  CVI_BOOL bScalingListValid;
  CVI_U8 InterScalingList8X8[64];
  CVI_U8 IntraScalingList8X8[64];
  CVI_S32 chroma_qp_index_offset;
} VENC_H264_TRANS_S;

【成员】

成员名称

描述

u32IntraTransMode

预留,暂未使用

u32InterTransMode

预留,暂未使用

bScalingListValid

预留,暂未使用

InterScalingList8X8[64]

预留,暂未使用

IntraScalingList8X8[64]

预留,暂未使用

chroma_qp_index_offset

具体含义请参见 H.264 协议。
系统默认值为 0。
取值范围:[-12, 12]

【注意事项】

无。

【相关数据类型及接口】

7.4.45. VENC_H265_TRANS_S

【说明】

定义 H.265协议编码通道变换量化的结构体

【定义】

typedef struct _VENC_H265_TRANS_S {
  CVI_S32 cb_qp_offset;
  CVI_S32 cr_qp_offset;

  CVI_BOOL bScalingListEnabled;

  CVI_BOOL bScalingListTu4Valid;
  CVI_U8 InterScalingList4X4[2][16];
  CVI_U8 IntraScalingList4X4[2][16];

  CVI_BOOL bScalingListTu8Valid;
  CVI_U8 InterScalingList8X8[2][64];
  CVI_U8 IntraScalingList8X8[2][64];

  CVI_BOOL bScalingListTu16Valid;
  CVI_U8 InterScalingList16X16[2][64];
  CVI_U8 IntraScalingList16X16[2][64];

  CVI_BOOL bScalingListTU32Valid;
  CVI_U8 InterScalingList32X32[64];
  CVI_U8 IntraScalingList32X32[64];
} VENC_H265_TRANS_S;

【成员】

成员名称

描述

cb_qp_offset

具体含义请参见 H.265协议。
系统默认值为 0。
取值范围:[-12, 12]

cr_qp_offset

具体含义请参见 H.265协议。
系统默认值为 0。
取值范围:[-12, 12]

bScalingListEnabled

预留,暂未使用

bScalingListTu4Valid

预留,暂未使用

InterScalingList4X4[2][16]

预留,暂未使用

IntraScalingList4X4[2][16]

预留,暂未使用

bScalingListTu8Valid

预留,暂未使用

InterScalingList8X8[2][64]

预留,暂未使用

IntraScalingList8X8[2][64]

预留,暂未使用

bScalingListTu16Valid

预留,暂未使用

InterScalingList16X16[2][64]

预留,暂未使用

IntraScalingList16X16[2][64]

预留,暂未使用

bScalingListTu32Valid

预留,暂未使用

InterScalingList32X32[64]

预留,暂未使用

IntraScalingList32X32[64]

预留,暂未使用

【注意事项】

无。

【相关数据类型及接口】