下载
中文
注册

venc_set_roi_attr

c函数原型

hi_s32 hi_mpi_venc_set_roi_attr(hi_venc_chn chn, const hi_venc_roi_attr *roi_attr)

Python函数

ret = acl.himpi.venc_set_roi_attr(chn, roi_attr)

函数功能

设置H.264/H.265通道的ROI属性,用户可以通过配置ROI区域,对该区域的图像QP进行限制,从而实现图像中该区域的QP与其他图像区域的差异化。关于ROI编码功能的详细说明请参见ROI编码功能说明

Atlas 200/300/500 推理产品,不支持该接口。

Atlas 训练系列产品,不支持该接口。

Atlas A2训练系列产品/Atlas 800I A2推理产品,不支持该接口。

输入说明

chn:int,编码通道号。

  • Atlas 推理系列产品,编码通道号的取值范围:[0, 256),JPEGE功能和VENC功能共用通道,且通道总数最多256。
  • Atlas 200I/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。

roi_attr:dict,ROI区域参数字典。参见hi_venc_roi_attr

返回值说明

ret:int,错误码。

约束说明

  • 本接口用于设置H.264/H.265通道的ROI属性。
  • 本接口在编码通道创建之后,编码通道销毁之前设置。此接口在编码过程中被调用时,等到下一个帧时生效。
  • 建议用户在创建通道之后,启动编码之前调用此接口,减少在编码过程中调用的次数。
  • 建议用户在调用此接口之前先调用acl.himpi.venc_get_roi_attr接口,获取当前通道的ROI配置,然后再进行设置。
  • 设置该接口后,如果当前帧判断编码为pskip帧,以pskip帧效果优先。
  • 设置该接口后,可能会出现感兴趣区域QP值不全为设置值的现象,这是因为在编码过程中,有些编码块的残差会为0,没有数据需要被量化,QP值不生效所致,属于正常现象,不影响编码效果。

ROI编码功能说明

ROI(Region Of Interest)编码:对感兴趣区域编码。

用户可以通过配置ROI区域,对该区域的图像QP进行限制,从而实现图像中该区域的QP与其它图像区域的差异化。系统现仅支持对H.264/H.265通道进行ROI设置。系统提供了8个感兴趣区域,可供用户同时使用。

8个区域可以互相叠加,且叠加时的优先级按照0~7的索引号依次提高,这里,叠加优先级是指发生叠加时,图像区域的最终QP值的判定,最终的区域QP值按照优先级最高的区域设定。ROI区域可配置绝对QP和相对QP两种模式。

  • 绝对QP:ROI区域的QP为用户设定的QP值。
  • 相对QP:ROI区域的QP为码率控制产生的QP与用户设定的QP偏移值的和。

以下图为例,假如图像QP为25,即图像中所有宏块QP值为25。Roi区域0设置为绝对QP模式,QP值为10,索引为0;Roi区域1设置为相对QP模式,QP为-10,索引为1。区域0的index小于区域1的index,所以在发生互相重叠的图像区域按高优先级的区域(区域1)QP设置。区域0除了发生重叠的部分的QP值等于10。区域1 的QP值为25-10=15。