hi_quick_mark_mode
hi_img_align_info
说明
定义图片对齐信息。
定义
hi_img_align_info = {"width_stride": width_stride,
"height_stride": height_stride,
"img_buf_size": img_buf_size,
"reserved": [2]}
成员
| 成员名称 | 描述 |
|---|---|
| width_stride | 整型,图片宽度对齐后的值。 |
| height_stride | 整型,图片高度对齐后的值。 |
| img_buf_size | 整型,存放图片数据所需的内存大小,单位Byte。 |
| reserved | 列表,预留参数,为保证后续版本兼容性,请务必使用memset结构体方式进行清零初始化,在代码中必须避免显式对reserved字段进行访问。 |
父主题: 公共
hi_vdec_send_mode
说明
定义码流发送方式。
定义
HI_VDEC_SEND_MODE_STREAM = 0 # send by stream
HI_VDEC_SEND_MODE_FRAME = 1 # send by frame
HI_VDEC_SEND_MODE_COMPAT = 2 # One frame supports multiple packets sending.
HI_VDEC_SEND_MODE_BUTT = 3 # reserved
成员
| 成员名称 | 描述 |
|---|---|
| HI_VDEC_SEND_MODE_STREAM | 流模式,当前不支持。 |
| HI_VDEC_SEND_MODE_FRAME | 帧模式,当前仅支持按帧发送。 |
| HI_VDEC_SEND_MODE_COMPAT | 兼容模式,当前不支持。 |
| HI_VDEC_SEND_MODE_BUTT | 保留值。 |
注意事项
- 仅支持HI_VDEC_SEND_MODE_FRAME。
- 当一帧码流的最后一包没有把 end_of_frame 为 HI_TRUE 时,还可以再发送一个end_of_frame 为 HI_TRUE 的空包(注意带上当前帧的 PTS(Presentation Time Stamp))给解码器内部标识当前帧码流已发送完毕。
- 不支持一帧图像分多包进行发送的模式。
父主题: 视频/图像解码
hi_vdec_frame_type
说明
定义码流发送方式。
定义
HI_VDEC_FRAME_TYPE_I = 0
HI_VDEC_FRAME_TYPE_P = 1
HI_VDEC_FRAME_TYPE_B = 2
HI_VDEC_FRAME_TYPE_BUTT = 3
成员
| 成员名称 | 描述 |
|---|---|
| HI_VDEC_FRAME_TYPE_I | IDR帧。 |
| HI_VDEC_FRAME_TYPE_P | P帧。 |
| HI_VDEC_FRAME_TYPE_B | B帧。 |
| HI_VDEC_FRAME_TYPE_BUTT | 保留值。 |
父主题: 视频/图像解码
hi_quick_mark_mode
说明
定义快速释放参考帧模式。
定义
HI_QUICK_MARK_ADAPT = 0
HI_QUICK_MARK_FORCE = 1
HI_QUICK_MARK_NONE = 2
HI_QUICK_MARK_BUTT = 3
成员
| 成员名称 | 描述 |
|---|---|
| HI_QUICK_MARK_ADAPT | 自适应模式。预留参数,暂未支持。 |
| HI_QUICK_MARK_FORCE | 强制模式。预留参数,暂未支持。 |
| HI_QUICK_MARK_NONE | 普通模式。预留参数,暂未支持。 |
| HI_QUICK_MARK_BUTT | 保留值。 |
父主题: 视频/图像解码
hi_vdec_pic_info
说明
定义视频原始图像帧字典。
定义
hi_vdec_pic_info = {"width": width,
"height": height,
"width_stride": width_stride,
"height_stride": height_stride,
"pixel_format": hi_pixel_format,
"vir_addr": vir_addr,
"buffer_size": buffer_size,
"offset_top": offset_top,
"offset_bottom": offset_bottom,
"offset_left": offset_left,
"offset_right": offset_right}
成员
| 成员名称 | 描述 |
|---|---|
| width | 整型,图像宽度,视频解码时使用该参数。 - Atlas 200/500 A2推理产品,视频解码场景下,支持对输出图片进行缩放,缩放算法默认为业界通用的Bilinear算法(与OpenCV算法的计算过程类似),当输入码流宽度小于或等于4096时,解码图像经过缩放后的输出宽度范围为[10, 8192];当输入码流宽度大于4096时,解码图像经过缩放后的输出宽度范围为[128, 8192]。 以下场景,VDEC不对输出图片进行缩放:在hi_vdec_pic_info结构体内,将width参数值和height参数值同时设置为0。 |
| height | 整型,图像高度,视频解码时使用该参数。 - Atlas 200/500 A2推理产品,视频解码场景下,支持对输出图片进行缩放,缩放算法默认为业界通用的Bilinear算法(与OpenCV算法的计算过程类似),当输入码流宽度小于或等于4096时,解码图像经过缩放后的输出高度范围为[6, 8192];当输入码流宽度大于4096时,解码图像经过缩放后的输出高度范围为[128, 8192]。 |
| width_stride | 整型,图像宽度步长,视频解码时,YUV420 semi-planar/YVU420 semi-planar输出时,该值为宽向上16对齐;RGB888/BGR888输出时,该值为宽向上16对齐,再乘3。 取值范围:[32, 16384]。 |
| height_stride | 整型,图像高度步长,视频解码时,YUV420 semi-planar/YVU420 semi-planar输出时,该值为高向上2对齐;RGB888/BGR888输出时,该值等于高。 取值范围:[6, 16384]。 |
| pixel_format | 整型,图像像素格式。图像或视频解码时使用该参数。VDEC视频解码输出图片格式参见VDEC功能及约束说明,JPEGD图片解码输出图片格式参见JPEGD功能及约束说明。 |
| vir_addr | 整型,解码输出数据在内存中的起始地址。 隔行码流场景下,隔行码流每帧发送两场,带两块输出内存;解码时其中一块内存无图像输出,属于正常现象,用户需及时释放内存;隔行码流的解码输出数据都在奇数场对应的输出buffer中。 |
| buffer_size | 整型,存放解码图像的缓冲区大小。 |
| offset_top | 整型,解码区域相对原图的顶部偏移,JPEG图片解码场景下按指定区域解码时配置,如图1所示,若无需按指定区域解码,需将此值初始化为0。 |
| offset_bottom | 整型,解码区域相对原图的底部偏移,JPEG图片解码场景下按指定区域解码时配置,如图1所示,若无需按指定区域解码,需将此值初始化为0。 |
| offset_left | 整型,解码区域相对原图的左侧偏移,JPEG图片解码场景下按指定区域解码时配置,如图1所示,若无需按指定区域解码,需将此值初始化为0。 |
| offset_right | 整型,解码区域相对原图的右侧偏移,JPEG图片解码场景下按指定区域解码时配置,如图1所示,若无需按指定区域解码,需将此值初始化为0。 |
注意事项
10bit的数据经过VPC处理(图像处理)之后均会变成8bit。
参考信息
JPEG图片解码场景下,按区域解码的功能示意图如下。
使用区域解码存在以下约束:
- 对于jpeg图片解码进行区域解码,不支持旋转、软件解码图片。
- 区域解码的范围不能超出原图大小,并且最小支持32*32,最大支持16384*16384。
- 使用以下图片格式时,对各偏移值的约束如下:
- HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420或HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420格式:offset_top和offset_left必须为偶数,(height - offset_bottom)和(width - offset_right)必须为偶数。
- HI_PIXEL_FORMAT_YUV_SEMIPLANAR_422或HI_PIXEL_FORMAT_YVU_SEMIPLANAR_422格式:offset_left必须为偶数,(width - offset_right)必须为偶数。
- HI_PIXEL_FORMAT_YUV_SEMIPLANAR_440或HI_PIXEL_FORMAT_YVU_SEMIPLANAR_440:offset_top必须为偶数,(height - offset_bottom)必须为偶数。
图1 按区域解码功能示意图

父主题: 视频/图像解码
hi_vdec_video_attr
说明
定义视频解码视频属性。
定义
hi_vdec_video_attr = {"ref_frame_num": ref_frame_num, "temporal_mvp_en": temporal_mvp_en, "tmv_buf_size": tmv_buf_size}
成员
| 成员名称 | 描述 |
|---|---|
| ref_frame_num | 整型,参考帧的数目,用于决定解码时需要的参考帧个数,会较大的影响内存 VB 块占用,根据实际情况设置合适的值。如果此处设置的值大于实际码流中的参考帧数量,系统内部会根据实际码流的参考帧数量进行调整,以节省内存,但不超过当前所设置的参数值。 取值范围:[0, 16],以帧为单位。 不知情的情况下,其他码流:推荐设为 5。 测试码流:推荐设为 16。 静态属性。 |
| temporal_mvp_en | 整型,是否支持时域运动矢量预测。 取值范围:[0, 1]。 如果H.264解码不需要解码B帧,或者H.265解码不需要解码支持时域运动矢量预测(sps_temporal_mvp_enabled_flag =1)的码流,则配置temporal_mvp_en为0,否则配置为1。 当配置为0时,可不分配输出Tmv信息的VB块,节省内存。 注意:调用acl.himpi.vdec_set_chn_param接口设置通道参数时,只支持将hi_video_dec_mode设置为HI_VIDEO_DEC_MODE_IPB(表示解码I、P、B帧),因此解码H.264码流时只能将temporal_mvp_en配置为1。 |
| tmv_buf_size | 整型,视频解码图像Tmv(Temporal Motion Vector)Buffer大小,temporal_mvp_en为1时有效。 用户可先调用acl.himpi.vdec_get_tmv_buf_size接口获取视频解码图像TMV缓存大小*。* |
父主题: 视频/图像解码
hi_vdec_chn_attr
说明
定义解码通道属性字典。
定义
hi_vdec_chn_attr= {"type": hi_payload_type, # RW; video type to be decoded
"mode": hi_vdec_send_mode, # RW; send by stream or by frame
"pic_width": pic_width, # RW; max pic width
"pic_height": pic_height, # RW; max pic height
"stream_buf_size": stream_buf_size, # stream buf size(Byte)
"frame_buf_size": frame_buf_size, # RW; frame buf size(Byte)
"frame_buf_cnt": frame_buf_cnt, # RW; frame buf num
"video_attr": hi_vdec_video_attr} # RW; structure with video
成员
| 成员名称 | 描述 |
|---|---|
| type | 整型,解码协议类型值,静态属性。 |
| mode | 整型,码流发送方式,静态属性。 Atlas 200/500 A2推理产品上,VDEC视频解码场景下,H.264/H.265仅支持按帧发送码流;JPEG图片解码场景下,该参数预留。 |
| pic_width | 整型,通道支持的解码图像最大宽(以像素为单位),静态属性。 Atlas 200/500 A2推理产品上,JPEG图片解码场景下,该参数预留。 |
| pic_height | 整型,通道支持的解码图像最大高(以像素为单位),静态属性。 Atlas 200/500 A2推理产品上,JPEG图片解码场景下,该参数预留。 |
| stream_buf_size | 整型,码流缓存的大小,静态属性。 取值范围:大于或等于解码通道大小(宽*高)的 3/4倍,即YUV420图像大小的一半(宽*高*3/2*1/2),小于或等于1024*1024*1024,以 Byte 为单位。 推荐值:一幅YUV420解码图像大小。即:宽*高*1.5。 |
| frame_buf_size | 整型,解码图像帧存 buffer 大小,以 byte 为单位。JPEGD图像解码不需要设置该参数。 取值范围:大于或等于0,取值为0时,VDEC内部将根据实际码流信息自动分配合适的帧存大小;取值大于0时,用户需保证(帧存大小 * 参考帧个数 >= 实际所需最小帧存大小 * 实际所需最小参考帧个数),否则不能正常解码。实际所需最小帧存大小,用户需先根据码流中的SPS(Sequence Parameter Set)信息获取输入码流的宽、高、比特位宽,再调用hi_vdec_get_pic_buf_size接口获取实际所需最小帧存大小。 |
| frame_buf_cnt | 整型,解码图像帧存个数。JPEGD图像解码不需要设置该参数。 取值范围:大于或等于0。 - 一般情况下,设置为0,VDEC内部将根据实际码流信息自动分配合适的帧存个数。 - 如果客户需要限制VDEC解码帧存大小,则设置为大于0的值,用户需保证(帧存大小*参考帧个数 >= 实际需要最小帧存大小*实际需要最小参考帧个数),否则不能正常解码。实际所需最小参考帧个数,用户需先根据码流中的SPS(Sequence Parameter Set)信息获取码流参考帧个数,H.264/H.265解码所需帧存个数=参考帧+显示帧+1。 |
| video_attr | 字典,视频(H.264/H.265)解码通道属性。 |
注意事项
设置通道属性的图像宽和高,若用户清楚码流的具体宽高,建议以实际值来设置。若是不清楚,建议以此码流的最大规格来创建。但是最大规格是4096*4096,不能超过此值。
父主题: 视频/图像解码
在线提单