Skip to main content

功能说明

hi_mpi_hdmi_set_infoframe

函数功能

设置信息帧。

约束说明

  • 调用该接口前,前必须先打开HDMI(调用hi_mpi_hdmi_open),再调用hi_mpi_hdmi_set_attr接口设置基本属性,最后调用本接口补充设置输出颜色空间、宽高比、时序属性(若无需指定上述参数,使用默认值,可不调用本接口),且保持三个接口入参中的hi_hdmi_id值一致。
  • 该API 目前只支持HI_INFOFRAME_TYPE_AUDIO和HI_INFOFRAME_TYPE_AVI信息帧。
  • HI_INFOFRAME_TYPE_AVI信息帧中只支持修改hi_hdmi_infoframe结构体的timing_mode参数(必须与VO输入的具体时序保持一致)、color_space参数(用户送图时需要设置为YUV444)、aspect_ratio参数(仅支持设置为16比9、4比3)为非默认值,
  • HI_INFOFRAME_TYPE_AUDIO信息帧中均需要设置为默认参数,暂不支持修改,详细赋值要求请见hi_hdmi_audio_infoframe数据类型描述。
  • 该接口的部分属性不支持设置,详情请见hi_hdmi_infoframe结构体及其成员说明。
  • 调用该接口设置信息帧相关属性后,会生效成attr属性。
  • 该接口属于高级接口,一般不需要调用。若用户使用,则应根据已设置的音视频相关属性(如enVideoFmt),及遵从《High-Definition Multimedia Interface Specification Version 1.4b》、《High-Definition Multimedia Interface SpecificationVersion 2.0》、《CEA-861-D 》与《CEA-861-F》标准基础上设置信息帧,不依据音视频属性遵从标准发送信息帧的行为是未定义的,暂不支持。
  • 该接口暂时不支持多进程场景。

函数原型

hi_s32 hi_mpi_hdmi_set_infoframe(hi_hdmi_id hdmi, const hi_hdmi_infoframe *infoframe)

参数说明

参数名输入/输出说明
hdmi输入HDMI接口号。 取值范围:[0, 2)。
infoframe输入HDMI信息帧结构体指针。

返回值说明

父主题: HDMI外设

功能说明

功能说明

VPC(Vision Preprocessing Core)各功能的介绍、各版本的功能支持度如下表所示。

功能描述Atlas 200/500 A2推理产品
抠图从输入图片中抠出需要用的图片区域,支持一图多框和多图多框。
缩放- 针对不同分辨率的图像,支持8K缩放、非8K缩放。
- 支持单图裁剪缩放(支持非压缩格式)、一图多框裁剪缩放(支持非压缩格式)。
- 其它缩放方式,如:原图缩放、等比例缩放(缩放前后图片的宽高比例相同)。
叠加从输入图片中抠出来的图,对抠出的图进行缩放后,放在用户输出图片的指定区域,输出图片可以是空白图片(由用户申请的空输出内存产生的),也可以是已有图片(由用户申请输出内存后将已有图片读入输出内存),只有当输出图片是已有图片时,才表示叠加。
拼接从输入图片中抠多张图片,对抠出的图进行缩放后,放到输出图片的指定区域。
图像金字塔对原图进行多次高斯滤波之后向下采样产生不同尺寸的图像。x
直方图统计统计图像每个通道(RGB/YUV)的像素值分布。
色彩重映射根据配置信息将图片从原图映射为另一张图。
边界填充对图像进行边界填充。
格式转换支持RGB格式、YUV格式之间的格式转换。
图像灰度化将彩色图像转化为灰度图像。需注意,输入为灰度图像、输出只能为灰度图像。 实现图像灰度化的操作是输出YUV400格式的输出图片。
环视拼接主要用于车载场景生成全景图。 使用该功能时,输入图片为4张,一般为前、左、后、右四个方向的图像,经过畸变矫正、增益补偿、图像融合,最终将4张图片融合成一张全景图片。其中,增益补偿是可选步骤,可在调用参数设置接口时选择是否进行增益补偿,通过增益补偿可平衡不同摄像头光照,达到更好的效果;图像融合当前采用的是加权融合方式,即像素加权平均法。x
Remap变换根据像素位置LUT对输入图像进行几何形变,典型的用途包括:镜头畸变校正、仿射变换、透视变换,功能示意图请参见图4。 形变方式可以用下述公式描述:dst(x,y)=src(LUT(x,y))。 其中,dst(x,y)为输出图像在坐标(x,y)处的像素值,像素位置LUT(x,y)是输出图像在(x,y)处的像素对应输入图像中的横、纵坐标值,src(LUT(x,y))为输入图像在坐标LUT(x,y)处的像素值。通用的像素位置LUT可通过用户提供的map1(横坐标映射矩阵)和map2(纵坐标映射矩阵)生成,仿射变换或透视变换的像素位置LUT也可通过用户提供的3个点对或4个点对信息计算生成。
滤波对输入图片做滤波处理,当前可支持中值滤波/腐蚀/膨胀/高斯滤波/均值滤波/卷积滤波。
旋转对输入图片做固定角度的旋转,支持90度/180度/270度。
马赛克对输入图片做马赛克处理。
覆盖对输入图片做局部覆盖操作。
画线对输入图片做画线处理。
添加水印对输入图片做添加水印的处理。

功能示意图(Atlas 200/500 A2推理产品)

图1 VPC功能示意图(抠图+缩放+叠加)

图2 VPC功能示意图(拼接)

图3 等比例缩放(贴图区域在输出图片的中心位置),即缩放前后图片的宽高比例相同

图4 Remap功能

参考说明

RGB、YUV格式图像的各分量排布示意图。示例:SP图像以YUV420SP为例,Packed和RGB图像以ARGB图像为例。

父主题: VPC图像处理功能

约束说明

图片分辨率约束

  • 输入图片分辨率

    VPC处理图片时,通用的输入分辨率范围为10*6~8192*8192,其中部分接口的分辨率限制可能不同,请以具体接口内的说明为准,请参见VPC图像处理功能下各接口的说明。其中,当输入图片格式为YUV440SP、YUV440P时,输入图片的宽最大值为4096。

  • 输出图片分辨率

    版本分辨率范围
    Atlas 200/500 A2推理产品10*6~4096*8192

内存申请/释放接口说明

输入、输出内存大小要求请参见图片格式、宽高对齐、内存约束中的计算公式。

版本内存申请接口
Atlas 200/500 A2推理产品VPC在处理图片时,支持以下两种内存申请接口:
- 调用aclrtMalloc[aclrtFree](./aclcppdevg_03_0101.md)接口申请\释放Device上的输入、输出内存,这部分内存的生命周期由用户自行管理。
- 调用hi_mpi_dvpp_malloc[hi_mpi_dvpp_free](./aclcppdevg_03_0726.md)接口申请\释放Device上的输入、输出内存,这部分内存的生命周期由用户自行管理。
注意:调用hi_mpi_dvpp_malloc接口申请的内存为媒体数据处理的专用内存,但专用内存的地址空间有限,若关注内存规划或内存资源有限时,建议调用aclrtMalloc接口申请内存。

图片格式、宽高对齐、内存约束

:::note 说明 在调用接口实现VPC功能时:

  • 图片格式的定义请参见hi_pixel_format,宽stride、高stride等概念请参见基本概念
  • 不同版本中,宽stride、高stride的最小值、最大值不同,如下:
    • Atlas 200/500 A2推理产品上,宽stride最小10、高stride最小6。
  • 各接口对图片格式的要求可能不同,请参见VPC图像处理功能下各接口的说明。 :::

表1 输入图片格式、宽高对齐、内存大小约束

版本

图片格式

图片宽、高对齐要求

图片宽stride、高stride对齐要求

Atlas 200/500 A2推理产品

内存大小要求(单位Byte)

通用格式,各版本都支持

YUV400 8bit

无对齐要求

宽stride无对齐要求,与宽相同即可;

高stride无对齐要求,与高相同即可。

宽stride * 高stride

YUV420SP NV12 8bit

YUV420SP NV21 8bit

宽2对齐

高2对齐

宽stride无对齐要求,与宽相同即可;

高stride为高2对齐后的值。

宽stride * 高stride * 3/2

YUV422SP 8bit

YVU422SP 8bit

宽2对齐

高无对齐要求

宽stride无对齐要求,与宽相同即可;

高stride无对齐要求,与高相同即可。

宽stride * 高stride * 2

YUV444SP 8bit

YVU444SP 8bit

无对齐要求

宽stride无对齐要求,与宽相同即可;

高stride无对齐要求,与高相同即可。

宽stride * 高stride * 3

YUV422Packed YUYV 8bit

YUV422Packed UYVY 8bit

YUV422Packed YVYU 8bit

YUV422Packed VYUY 8bit

宽2对齐

高无对齐要求

宽stride为宽*2的值;

高stride无对齐要求,与高相同即可。

宽stride * 高stride

YUV444Packed 8bit

RGB888

BGR888

无对齐要求

宽stride为宽*3的值;

高stride无对齐要求,与高相同即可。

宽stride * 高stride

ARGB8888

ABGR8888

RGBA8888

BGRA8888

无对齐要求

宽stride为宽*4的值;

高stride无对齐要求,与高相同即可。

宽stride * 高stride

YUV440SP 8bit

YVU440SP 8bit

宽无对齐要求,但宽≤4096

高2对齐

宽stride无对齐要求,与宽相同即可;

高stride为高2对齐后的值。

宽stride * 高stride * 2

该部分格式仅以下版本支持:

Atlas 200/500 A2推理产品

YVU420Planar

YUV420Planar

宽2对齐,高2对齐

宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。

宽stride * 高stride * 3/2

YVU422Planar

YUV422Planar

无对齐要求

宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。

宽stride * 高stride * 2

YVU444Planar

YUV444Planar

无对齐要求

宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。

宽stride * 高stride * 3

YVU444Packed 8bit

无对齐要求

宽stride无对齐要求,宽stride为宽*3的值;高stride无对齐要求,与高相同即可。

宽stride * 高stride

YUV440Planar

YVU440Planar

宽无对齐要求,但宽≤4096

高2对齐

宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。

宽stride * 高stride * 2

RGB888Planar

BGR888Planar

无对齐要求

宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。

宽stride * 高stride * 3

表2 输出图片格式、宽高对齐、内存大小约束

-

图片格式

图片宽、高对齐要求

图片宽stride、高stride对齐要求

Atlas 200/500 A2推理产品

内存大小要求(单位Byte)

通用格式,各版本都支持

YUV400 8bit

无对齐要求

宽stride无对齐要求,与宽相同即可;

高stride无对齐要求,与高相同即可。

宽stride * 高stride

YUV420SP NV12 8bit

YUV420SP NV21 8bit

宽2对齐

高2对齐

宽stride无对齐要求,与宽相同即可;

高stride为高2对齐后的值。

宽stride * 高stride * 3/2

YUV422SP 8bit

YVU422SP 8bit

宽2对齐

高无对齐要求

宽stride无对齐要求,与宽相同即可;

高stride无对齐要求,与高相同即可。

宽stride * 高stride * 2

YUV444Packed 8bit

RGB888

BGR888

无对齐要求

宽stride为宽*3的值;

高stride无对齐要求,与高相同即可。

宽stride * 高stride

ARGB8888

ABGR8888

RGBA8888

BGRA8888

无对齐要求

宽stride为宽*4的值;

高stride无对齐要求,与高相同即可。

宽stride * 高stride

该部分格式仅以下版本支持:

Atlas 200/500 A2推理产品

YUV422Packed YUYV 8bit

YUV422Packed UYVY 8bit

YUV422Packed YVYU 8bit

YUV422Packed VYUY 8bit

宽无对齐要求

高2对齐

宽stride为宽*2的值;

高stride无对齐要求,与高相同即可。

宽stride * 高stride

该部分格式仅以下版本支持:

Atlas 200/500 A2推理产品

YVU444Packed

无对齐要求

宽stride为宽*3的值;

高stride无对齐要求,与高相同即可。

宽stride * 高stride

RGB888Planar

BGR888Planar

无对齐要求

宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。

宽stride * 高stride * 3

抠图、贴图约束

  • 抠图区域不超出输入图片区域。

  • 抠图、贴图区域的奇数、偶数限制为:

    输出图片格式为YUV420SP,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。

    输出图片格式为YUV422SP,贴图区域奇数、偶数限制为:左偏移为偶数、右偏移为奇数。

    其它格式,贴图区域没有偏移奇偶数的限制。

  • 贴图区域不超出输出图片区域,最大贴图个数256个。

YUV格式图像下采样约束

VPC在处理图片时,会根据输入或输出图片格式,将输入图片格式转换为YUV444或RGB用于内部处理,YUV444或RGB没有宽高奇偶数的限制,但当输出图片格式为YUV420SP或YUV422SP格式时,会进行下采样处理,由于YUV420SP或YUV422SP格式本身的数据排布导致宽高存在奇偶数限制,因此输出图片的边缘可能存在异常数据。

图1 异常效果图片举例

出现异常数据的根因在于,在计算过程中,出现输出图片位置处于奇数起始点时,此时YUV444格式的图片是正确的,但是下采样到YUV420SP格式时,由于奇数行和偶数行是共用同一个uv的,导致图片起始行的Y与上一行的UV组成新的像素,产生异常数据。

父主题: VPC图像处理功能

性能指标说明

性能指标说明(Atlas 200/500 A2推理产品)

单个Device场景下的性能指标参考如下(1路对应一个通道,一个通道对应一个线程,或者n路对应一个通道,一个通道对应n个线程):

场景举例总帧率
- 输入图片分辨率:1080p(1920*1080)
- 输出图片分辨率:1080p(1920*1080)
- 输入/输出图片格式:YUV420SP
- n路(n<2)
n*800fps
- 输入图片分辨率:1080p(1920*1080)
- 输出图片分辨率:1080p(1920*1080)
- 输入/输出图片格式:YUV420SP
- n路(n≥2)
1600fps
- 输入图片分辨率:4K图像(3840*2160)
- 输出图片分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n<2)
n*200fps
- 输入图片分辨率:4K图像(3840*2160)
- 输出图片分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n≥2)
400fps
- 输入图片分辨率:8K图像(7680*4320)
- 输出图片分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n<2)
n*100fps
- 输入图片分辨率:8K图像(7680*4320)
- 输出图片分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n≥2)
200fps

:::note 说明

  • VPC处理性能与处理过程中的图像分辨率强相关,以输入图像和输出图像中的最大分辨率作为基准分辨率,基准分辨率越大,处理耗时越久,性能越低。
  • 调用VPC批处理接口(接口命名中包含batch,例如hi_mpi_vpc_batch_crop_resize_paste接口)时,由于图像处理单元DVPP(Digital Video Pre-Processing)内部多个VPC硬件单元会并行处理图片任务,因此单路就可以达到最大总帧率。 :::

父主题: VPC图像处理功能

在线提单