Skip to main content

hi_venc_chn

hi_vdec_supplement_info

说明

定义输出帧补充信息, 暂不支持。

定义

typedef struct {
hi_payload_type type;
union {
hi_vdec_video_supplement_info video_supplement_info;
};
} hi_vdec_supplement_info;

父主题: VDEC视频/JPEGD图像解码

hi_vdec_video_supplement_info

说明

定义输出视频帧补充信息, 暂不支持。

定义

typedef struct {
hi_vdec_frame_type frame_type;
hi_u32 err_rate;
hi_u32 poc;
}hi_vdec_video_supplement_info;

成员

成员名称描述
frame_type解码帧类型。预留参数,暂不支持。
err_rate错误率。预留参数,暂不支持。
pocpoc值。预留参数,暂不支持。

父主题: VDEC视频/JPEGD图像解码

hi_jpegd_precision_mode

说明

定义JPEGD解码输出图片的宽、高对齐模式。

定义

typedef enum {
YUVOUT_ALIGN_DOWN = 0,
YUVOUT_ALIGN_UP = 1,
YUVOUT_ALIGN_DOWN_COMPAT = 2,
} hi_jpegd_precision_mode;

对齐模式取值的含义如下:

  • YUVOUT_ALIGN_DOWN:默认值

    • 解码后的输出图片格式为YUV420SP时,若源图的宽、高为奇数时,将输出图片的宽、高向下2对齐
    • 解码后的输出图片格式为YUV422SP时,若源图的宽为奇数时,将输出图片的宽向下2对齐
    • 解码后的输出图片格式为YUV440SP时,若源图的高为奇数时,将输出图片高向下2对齐
  • YUVOUT_ALIGN_UP:

    • 解码后的输出图片格式为YUV420SP时,若源图的宽、高为奇数时,将输出图片的宽、高向上2对齐
    • 解码后的输出图片格式为YUV422SP时,若源图的宽为奇数时,将输出图片的宽向上2对齐
    • 解码后的输出图片格式为YUV440SP时,若源图的高为奇数时,将输出图片高向上2对齐
  • YUVOUT_ALIGN_DOWN_COMPAT :

    兼容旧版本,解码后的输出图片格式为YUV420SP/YUV422SP/YUV440SP时,若源图的宽、高为奇数时,将输出图片的宽、高向下2对齐。

父主题: VDEC视频/JPEGD图像解码

hi_venc_chn

说明

描述编码通道。

定义

typedef hi_s32 hi_venc_chn;

父主题: VENC视频/JPEGE图像编码

hi_venc_stream

说明

定义帧码流类型结构体。

定义

typedef struct {
hi_venc_pack ATTRIBUTE* pack;
hi_u32 ATTRIBUTE pack_cnt;
hi_u32 seq;

union {
hi_venc_h264_stream_info h264_info;
hi_venc_jpeg_stream_info jpeg_info;
hi_venc_h265_stream_info h265_info;
hi_venc_prores_stream_info prores_info;
};

union {
hi_venc_h264_adv_stream_info h264_adv_info;
hi_venc_h265_adv_stream_info h265_adv_info;
};
} hi_venc_stream;

成员

成员名称描述
pack帧码流包结构。
pack_cnt一帧码流的所有包的个数。
seq码流序列号。 按帧获取时,此处为帧序号;按包获取时,此处为包序号。
h264_info/h265_info码流特征信息。
jpeg_info/prores_info码流特征信息,暂不支持。
h264_adv_info/ h265_adv_info码流高级特征信息。

父主题: VENC视频/JPEGE图像编码

hi_venc_pack

说明

定义帧码流包结构体。

定义

typedef struct {
union {
hi_u64 phys_addr;
hi_u64 input_addr;
};
hi_u8 ATTRIBUTE* addr;
hi_u32 ATTRIBUTE len;
hi_u64 pts;
hi_bool is_frame_end;
hi_venc_data_type data_type;
hi_u32 offset;
hi_u32 data_num;
hi_venc_pack_info pack_info[HI_VENC_MAX_PACK_INFO_NUM];
} hi_venc_pack;

成员

成员名称描述
phys_addr码流包物理地址。
input_addr用户输入码流数据的内存地址。
addr码流包首地址。
len码流包长度。 当len=0,表示视频/图像编码失败。
pts时间戳。单位:us。
is_frame_end帧结束标识。 取值范围:
- HI_TRUE:该码流包是该帧的最后一个包。
- HI_FALSE:该码流包不是该帧的最后一个包。
data_type码流类型,支持 H.265/H.264/JPEG协议类型的数据包。
offset码流包中有效数据与码流包首地址addr的偏移。
data_num当前码流包(当前包的类型由 data_type 指定)数据中包含码流包的个数。
pack_info[HI_VENC_MAX_PACK_INFO_NUM]当前码流包数据中包含码流包数据信息。
text<br>#define HI_VENC_MAX_PACK_INFO_NUM 8<br>

父主题: VENC视频/JPEGE图像编码

hi_venc_chn_attr

说明

定义编码通道属性结构体。

定义

typedef struct &#123;
hi_venc_attr venc_attr;
hi_venc_rc_attr rc_attr;
hi_venc_gop_attr gop_attr;
&#125;hi_venc_chn_attr;

成员

成员名称描述
venc_attr编码器属性。 编码器属性中除通道宽高(pic_width和pic_height)外都是静态属性,一旦创建编码通道成功,静态属性不支持被修改,除非该通道被销毁,重新创建。
rc_attr码率控制器属性。 码率控制器属性首先需要配置RC(Rate Control)模式,JPEG不需要配置码率控制器属性,其它协议类型通道(H.264/H.265)都必须配置。码率控制器属性RC模式必须与编码器属性协议类型匹配。
gop_attrGOP Mode类型的结构体。 对于H264、H265协议,需要配置该参数。

父主题: VENC视频/JPEGE图像编码

hi_venc_attr

说明

定义编码器属性结构体。

定义

typedef struct &#123;
hi_payload_type type;
hi_u32 max_pic_width;
hi_u32 max_pic_height;
hi_u32 buf_size;
hi_u32 profile;
hi_bool is_by_frame;
hi_u32 pic_width;
hi_u32 pic_height;
union &#123;
hi_venc_h264_attr h264_attr;
hi_venc_h265_attr h265_attr;
hi_venc_jpeg_attr jpeg_attr;
hi_venc_prores_attr prores_attr;
&#125;;
&#125;hi_venc_attr;

成员

成员名称描述
type编码协议类型。
max_pic_width编码图像最大宽度,静态属性,必须是2的整数倍。 取值范围:[MIN_WIDTH, MAX_WIDTH],以像素为单位。MIN_WIDTH、MAX_WIDTH,分别表示编码通道支持的最小宽度、最大宽度,参见表1
max_pic_height除jpeg协议外,编码图像最大高度,静态属性,必须是2的整数倍。 取值范围:[MIN_HEIGHT, MAX_HEIGHT],以像素为单位。MIN_HEIGHT、MAX_HEIGHT分别表示编码通道支持的最小高度、最大高度,参见表1
buf_size码流buffer大小,单位为Byte,静态属性。
- 调用hi_mpi_venc_send_jpege_frame接口发送原始图像进行图像编码时,在创建通道时,buf_size参数值必须设置为0。
- 调用hi_mpi_venc_send_frame接口发送原始图像进行视频或图像编码时,在创建通道时,buf_size参数值必须设置为64的整数倍,取值范围:[Min, Max],以Byte为单位。 (1)视频编码场景下,Min当前表示32*1024,Max当前表示1*1024*1024*1024。 用户可以在创建通道时,合理设置每个通道的buf_size,以节省内存使用开销,推荐将buf_size设置为:原图宽*原图高*3/2后再64对齐,但buf_size依然需要在[Min, Max]范围内。 视频编码场景下,若buf_size设置的不合理,可能出现以下异常情况: - 反复重编,进而导致编码时延变长、性能下降、图像质量下降; - 编码失败,获取不到编码结果。 (2)图像编码场景下,如果原图格式为YUV420,Min值为原图宽16对齐*原图高16对齐*3/2 ;如果原图格式为YUV422 Packed,Min值为原图宽16对齐*原图高16对齐*2。Max当前表示1*1024*1024*1024。 用户可以在创建通道时根据业务场景中图片的实际最大分辨率,合理设置每个通道的buf_size,以节省内存使用开销,推荐将buf_size设置为**:原图宽*原图高*倍数**,倍数推荐为5。 例如:用户图片的分辨率有720p(1280*720)、1080p(1080*1920)、4K(3840*2160)大小的图片,需要的buf_size应按照4k配置:3840*2160*5。 图片编码场景下,buf_size最小值为320*240*5 ,防止小分辨率场景下,buffer容易被占满,影响编码功能执行,例如:用户图片的最大分辨率为128*128,推荐用户将buf_size设置为320*240*5。
profile编码的等级,数字越大编码质量越好,静态属性。
- H.264 取值范围:[0, 3]。
- 0:Baseline。当取值为该值时,不支持编码B帧。
- 1:Main Profile。
- 2:High Profile。
- H.265 取值范围:[0,1]。
- 0:Main Profile。
- 1:Main 10 Profile,预留值,暂不支持。
- Jpeg 取值范围:0(表示Baseline)。
is_by_frame帧/包模式获取码流,静态属性。
- HI_TRUE:按帧获取。
- HI_FALSE:按包获取。
pic_width编码通道宽度,必须是MIN_ALIGN的整数倍。通道创建后,不支持修改。 取值范围:[MIN_WIDTH, MAX_WIDTH],以像素为单位。MIN_WIDTH、MAX_WIDTH、MIN_ALIGN分别表示编码通道支持的最小宽度、最大宽度、最小对齐单元(像素),参见表1。 JPEG通道宽高的设置要满足:pic_width*pic_height<= max_pic_width*max_pic_height。
pic_height除jpeg协议外,编码通道高度,必须是MIN_ALIGN的整数倍。通道创建后,不支持修改。 取值范围:[MIN_HEIGHT, MAX_HEIGHT],以像素为单位。MIN_HEIGHT、MAX_HEIGHT、MIN_ALIGN分别表示编码通道支持的最小高度、最大高度、最小对齐单元(像素),参见表1。 JPEG通道宽高的设置要满足:pic_width*pic_height<= max_pic_width*max_pic_height。
h264_attr编码协议的属性。
h265_attr编码协议的属性。
jpeg_attr编码协议的属性。 预留参数,暂不支持。
prores_attr编码协议的属性。 预留参数,暂不支持。

参考信息

MIN_WIDTH、MAX_WIDTH、MIN_HEIGHT、MAX_HEIGHT、MIN_ALIGN分别表示编码通道支持的最小宽度、最大宽度、最小高度、最大高度、最小对齐单元(像素)。

表1 编码通道宽高

W/H (pixel)H.264H.265JPEG
MIN_WIDTH12812832
MAX_WIDTH409640968192
MIN_HEIGHT12812832
MAX_HEIGHT409640968192
MIN_ALIGN222

父主题: VENC视频/JPEGE图像编码

在线提单