3. 感兴趣区域设置

3.1. ROI接口定义

ROI(Region Of Interest)编码:感兴趣区域编码。
用户可以通过配置ROI区域,调适该区域的图像Qp,实现图像中局部区域画质的差异化。
H.264和H.265均支持8个ROI设置,重复区域按照0~7的ROI索引号依次提高优先级
ROI区域可配置绝对Qp和相对Qp两种模式。
绝对Qp模式:ROI区域的Qp为用户设定的Qp值。
相对Qp模式:ROI区域的Qp为码率控制之Qp加上用户设定的Qp偏移值。
注意事项
当码率控制模式不为FixedQP模式时,ROI区域可配置。
H.264当ROI使能时,宏块级码率控制失效。
绝对QP模式因为码率控制调适宏块QP,实际编码QP与设置之QP可能会有差异。

3.1.1. CVI_VENC_SetRoiAttr

【描述】

设置H.264/H.265通道的ROI属性。

【语法】

CVI_S32 CVI_VENC_SetRoiAttr(VENC_CHN VeChn, const VENC_ROI_ATTR_S *pstRoiAttr)

【参数】

参数名称

描述

输入/输出

VeChn

VENC Channel号

输入

pstRoiAttr

ROI区域参数

输入

【返回值】

返回值

描述

CVI_SUCCESS

成功

非0

失败,其值为错误码

【需求】

  • 头文件:cvi_comm_venc.h、cvi_venc.h

  • 库文件:libvenc.a

【注意】

  • u32Index:支持每个通道可设置8个ROI区域,按照0~7索引号对ROI区域进行管理,u32Index表示用户设置的ROI的索引号。重复区域按照0~7的ROI索引号依次提高优先级。

  • bEnable:指定当前的ROI区域是否使能。

  • bAbsQp:指定当前的ROI区域使用绝对QP或是相对QP模式。

  • s32Qp:当bAbsQp为CVI_TRUE时,s32Qp为对ROI区域设定的Qp值,当bAbsQp为CVI_FALSE时,s32Qp表示对ROI区域内部码率控制之Qp加上设定的Qp偏移值。

  • stRect:指定当前的ROI区域的位置坐标和区域的大小。ROI区域必须在图像范围内。

  • 系统默认没有ROI区域使能,用户必须在编码通道创建之后,编码通道销毁之前设置调用此接口启动ROI。此接口在编码过程中被调用时,等到下一个帧时生效。

  • 建议用户在创建通道之后,启动编码之前调用此接口,减少在编码过程中调用的次数。建议用户在调用此接口之前,先调用CVI_VENC_GetRoiAttr接口,获取当前信道的ROI配置后再进行设置。

  • 设置该接口后,如果当前帧判断编码为pskip帧,以pskip帧效果优先。

  • 当码率控制模式不为FixedQP模式时,ROI区域可配置。

  • H.264当ROI始能时,宏块级码率控制失效。

  • 绝对Qp模式因为码率控制调适宏块QP,实际编码QP与设置之QP可能会有些差异。

【举例】

3.1.2. CVI_VENC_GetRoiAttr

【描述】

获取H.264/H.265通道的ROI属性。

【语法】

CVI_S32 CVI_VENC_GetRoiAttr(VENC_CHN VeChn, CVI_U32 u32Index, VENC_ROI_ATTR_S *pstRoiAttr);

【参数】

参数名称

描述

输入/输出

VeChn

VENC Channel号

输入

u32Index

道ROI区域索引

输入

pstRoiAttr

ROI区域参数

输入

【返回值】

返回值

描述

CVI_SUCCESS

成功

非0

失败,其值为错误码

【需求】

  • 头文件:cvi_comm_venc.h、cvi_venc.h

  • 库文件:libvenc.a

【注意】

  • 依照u32Index索引获取该ROI区域配置

  • 用户必须在编码通道创建之后,编码通道销毁之前设置调用此接口

  • 建议用户在调用CVI_VENC_SetRoiAttr接口之前,先调用此接口,获取当前信道的ROI配置后再进行设置

【举例】