VENC(视频编码)接口说明文档
| 文档版本 | V1.1 |
|---|---|
| 修订日期 | 2026-08-21 |
| 代码基线 | hi_aiot_solution 8.18 |
| 对应头文件 | components/media/pipeline/include/hi_mapi_venc.h |
| 类型定义 | components/media/pipeline/include/hi_mapi_venc_define.h、include/adapt/*_adapt_define.h |
| 适用模块 | VENC / HI3516CV610 |
1 概述
VENC 模块负责将 YUV 视频帧编码为 H.264 / H.265 / JPEG / MJPEG / SVAC3 码流。平台 HI3516CV610 最多支持 8 路编码通道(通道号 0~7),每路通道在调用 hi_mapi_venc_init 后独立运行,内部由数据线程通过 select 轮询 SDK fd 拉取码流并通过注册的回调函数上报。所有 API 调用前必须先完成 media 系统初始化(g_venc_ctx.venc_inited == TD_TRUE)。
2 接口总览
| 编号 | 接口 | 功能概述 |
|---|---|---|
| 1 | hi_mapi_venc_get_default_attr |
根据基础属性(编码类型、分辨率、码率等)派生出一套可用的默认编码属性。 |
| 2 | hi_mapi_venc_init |
初始化指定通道的视频编码实例(创建 SDK 编码通道并启动内部数据线程)。 |
| 3 | hi_mapi_venc_deinit |
去初始化指定通道的视频编码实例(停止编码、销毁 SDK 通道、停止数据线程)。 |
| 4 | hi_mapi_venc_register_callback |
为指定 VENC 通道注册码流数据回调。回调在内部数据线程拉取到码流后被调用。 |
| 5 | hi_mapi_venc_un_register_callback |
注销指定 VENC 通道上已注册的码流数据回调。 |
| 6 | hi_mapi_venc_start |
启动指定 VENC 通道的编码接收。 |
| 7 | hi_mapi_venc_stop |
停止指定 VENC 通道的编码接收并复位通道。 |
| 8 | hi_mapi_venc_set_attr |
设置指定 VENC 通道的编码属性(含编码类型属性与码率控制属性)。 |
| 9 | hi_mapi_venc_get_attr |
获取指定 VENC 通道当前的编码属性。 |
| 10 | hi_mapi_venc_request_idr |
请求指定 VENC 通道在下一帧编码 IDR 帧。 |
| 11 | hi_mapi_venc_set_param |
设置指定 VENC 通道的扩展属性(码率控制参数、GOP 模式、帧内刷新、帧率、分层 QP、丢帧策略等),通道运行中可动态调整。 |
| 12 | hi_mapi_venc_get_param |
获取指定 VENC 通道的扩展属性。命令及参数类型与 hi_mapi_venc_set_param 相同。 |
| 13 | hi_mapi_venc_set_config |
设置 VENC 通道的静态配置(在通道 init 之前调用)。支持按通道配置 RCN/REF 共享 buffer,也支持模块全局的 mini_buf_mode(按协议生效,忽略通道号)。 |
| 14 | hi_mapi_venc_get_config |
获取 VENC 通道的静态配置。RCN/REF 共享可在通道初始化前后读取;mini_buf_mode 为模块全局配置,只需 media 系统已初始化。 |
| 15 | hi_mapi_venc_send_frame |
向指定 VENC 通道主动发送一帧视频数据(替代绑定方式获取帧)。通道必须处于 started 状态。 |
3 API 参考
1 hi_mapi_venc_get_default_attr
【描述】 根据基础属性(编码类型、分辨率、码率等)派生出一套可用的默认编码属性。
【语法】
td_s32 hi_mapi_venc_get_default_attr(const hi_mapi_venc_base_attr *base_attr, hi_mapi_venc_attr *venc_attr);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
base_attr |
输入 | const hi_mapi_venc_base_attr * |
基础属性指针,用于推导默认编码属性。不可为 NULL。 |
venc_attr |
输出 | hi_mapi_venc_attr * |
编码属性输出指针,函数内部先清零再填充。不可为 NULL。 |
成员名称(hi_mapi_venc_base_attr) |
描述 |
|---|---|
type |
负载类型:HI_MAPI_PAYLOAD_TYPE_H264 / H265 / JPEG / MJPEG / SVAC3。 |
width |
编码图像宽度(像素)。H.264/H.265 上限 4096,JPEG 上限 16384。 |
height |
编码图像高度(像素)。同 width 上限。 |
src_frame_rate |
输入帧率,范围 [1, 240]。 |
dst_frame_rate |
目标帧率,范围 [1, 240],不可大于 src_frame_rate。 |
bit_rate |
目标码率(kbps),仅 H.264/H.265/MJPEG 有效。 |
qfactor |
JPEG 量化因子 [1, 99],仅 JPEG 有效。 |
成员名称(hi_mapi_venc_attr) |
描述 |
|---|---|
payload_type_attr |
编码类型属性,包含 type/width/height/buf_size/profile/scene_mode/by_frame 及按协议的联合成员。 |
rc_attr |
码率控制属性,包含 rc_mode 及按模式的联合成员。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_ENULL_PTR |
base_attr 或 venc_attr 为 NULL。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- H.264 默认
profile = 1(Main Profile),其他协议默认profile = 0。 buf_size默认 =width * height * 3 / 4。by_frame默认为TD_TRUE(帧模式)。scene_mode默认为HI_MAPI_VENC_SCENE_MODE_NORMAL。- JPEG 模式下仅填充
jpeg_attr.qfactor;非 JPEG 模式下填充rc_attr为 CBR 模式,stat_time = 1,gop = dst_frame_rate * 5。
【举例】无
【相关主题】
hi_mapi_venc_init、hi_mapi_venc_set_attr
2 hi_mapi_venc_init
【描述】 初始化指定通道的视频编码实例(创建 SDK 编码通道并启动内部数据线程)。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
venc_attr |
输入 | const hi_mapi_venc_attr * |
编码属性指针。不可为 NULL。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENULL_PTR |
venc_attr 为 NULL。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_EEXIST |
该通道已初始化。 |
HI_MAPI_VENC_EILLEGAL_PARAM |
属性校验失败(profile 越界或 JPEG 缩略图数量超限等)。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 必须先调用 media 系统初始化,再调用本接口。
- 同一通道重复初始化会返回
EEXIST。 - 初始化成功后会创建内部数据拉取线程
pTVData_ChnX。 - 若
rc_attr.rc_mode非法(非 JPEG 且>= HI_MAPI_VENC_RC_MODE_BUTT),会自动回退为 CBR。 - 若创建通道或属性设置失败,内部会自动销毁通道并回滚。
【举例】无
【相关主题】
hi_mapi_venc_deinit、hi_mapi_venc_get_default_attr
3 hi_mapi_venc_deinit
【描述】 去初始化指定通道的视频编码实例(停止编码、销毁 SDK 通道、停止数据线程)。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_EBUSY |
停止或销毁通道时存在子步骤失败(已尽力完成)。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 若通道处于
started状态,内部会先调用hi_mapi_venc_stop。 - 若通道未初始化,视为成功直接返回。
- 内部会自动解绑所有指向本通道的源端绑定。
【举例】无
【相关主题】
hi_mapi_venc_init
4 hi_mapi_venc_register_callback
【描述】 为指定 VENC 通道注册码流数据回调。回调在内部数据线程拉取到码流后被调用。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
venc_cb |
输入 | const hi_mapi_venc_call_back * |
回调结构指针。不可为 NULL。 |
成员名称(hi_mapi_venc_call_back) |
描述 |
|---|---|
proc_data_cb |
码流数据回调函数指针,原型为 td_s32 (*)(td_handle venc_hdl, hi_mapi_venc_data_attr *stream_data, td_void *private_data)。 |
private_data |
用户私有数据指针,原样透传给回调。可为 NULL。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENULL_PTR |
venc_cb 为 NULL。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_ENOT_PERM |
通道未初始化或所有回调槽位已满(最多 5 个)。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 必须先调用
hi_mapi_venc_init完成通道初始化。 - 相同函数指针 + 私有数据的回调重复注册视为成功(去重)。
- 每个通道最多注册
HI_MAPI_VENC_CALLBACK_MAX_NUM= 5 个回调。
【举例】无
【相关主题】
hi_mapi_venc_un_register_callback
5 hi_mapi_venc_un_register_callback
【描述】 注销指定 VENC 通道上已注册的码流数据回调。
【语法】
td_s32 hi_mapi_venc_un_register_callback(td_handle venc_hdl, const hi_mapi_venc_call_back *venc_cb);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
venc_cb |
输入 | const hi_mapi_venc_call_back * |
要注销的回调结构指针,需与注册时的函数指针和私有数据完全一致。不可为 NULL。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENULL_PTR |
venc_cb 为 NULL。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_ENOT_PERM |
通道未初始化或未找到匹配的回调。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】无
【相关主题】
hi_mapi_venc_register_callback
6 hi_mapi_venc_start
【描述】 启动指定 VENC 通道的编码接收。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
frame_cnt |
输入 | td_s32 |
待编码帧数。传 HI_MAPI_VENC_LIMITLESS_FRAME_COUNT(-1)表示不自动停止;传正整数 N 表示编码 N 帧后自动停止。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_EILLEGAL_PARAM |
frame_cnt 非法(既非 -1 也非正数)。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_ENOT_PERM |
通道未初始化。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 必须先调用
hi_mapi_venc_init完成通道初始化。 - 若通道已处于
started状态且frame_cnt == -1,视为成功直接返回。
【举例】无
【相关主题】
hi_mapi_venc_stop
7 hi_mapi_venc_stop
【描述】 停止指定 VENC 通道的编码接收并复位通道。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_ENOT_PERM |
通道未初始化。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 若通道已经处于停止状态,视为成功直接返回。
- 内部依次调用 SDK 的停止接收帧和复位通道。
【举例】无
【相关主题】
hi_mapi_venc_start
8 hi_mapi_venc_set_attr
【描述】 设置指定 VENC 通道的编码属性(含编码类型属性与码率控制属性)。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
venc_attr |
输入 | const hi_mapi_venc_attr * |
编码属性指针。不可为 NULL。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENULL_PTR |
venc_attr 为 NULL。 |
HI_MAPI_VENC_EILLEGAL_PARAM |
属性校验失败(profile 越界等)。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_ENOT_PERM |
通道未初始化。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 必须先完成通道初始化(
hi_mapi_venc_init)。 - 非 JPEG 模式下若
rc_mode >= HI_MAPI_VENC_RC_MODE_BUTT,会自动回退为 CBR。
【举例】无
【相关主题】
hi_mapi_venc_get_attr
9 hi_mapi_venc_get_attr
【描述】 获取指定 VENC 通道当前的编码属性。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
venc_attr |
输出 | hi_mapi_venc_attr * |
编码属性输出指针。不可为 NULL。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENULL_PTR |
venc_attr 为 NULL。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化或通道未初始化。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】无
【相关主题】
hi_mapi_venc_set_attr
10 hi_mapi_venc_request_idr
【描述】 请求指定 VENC 通道在下一帧编码 IDR 帧。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_ENOT_PERM |
通道未初始化或通道尚未启动编码。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 通道必须处于
started状态(已调用hi_mapi_venc_start),否则返回ENOT_PERM。
【举例】无
【相关主题】
hi_mapi_venc_start
11 hi_mapi_venc_set_param
【描述】 设置指定 VENC 通道的扩展属性(码率控制参数、GOP 模式、帧内刷新、帧率、分层 QP、丢帧策略等),通道运行中可动态调整。
【语法】
td_s32 hi_mapi_venc_set_param(td_handle venc_hdl, hi_mapi_venc_cmd cmd, const td_void *attr, td_u32 attr_len);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
cmd |
输入 | hi_mapi_venc_cmd |
扩展属性命令,决定 attr 的解释方式。 |
attr |
输入 | const td_void * |
属性数据指针,具体类型由 cmd 决定。不可为 NULL。 |
attr_len |
输入 | td_u32 |
attr 缓冲区长度(字节),必须 ≥ 对应结构体大小。 |
cmd 与 attr 类型对应关系:
cmd 值 |
attr 实际类型 |
|---|---|
HI_MAPI_VENC_CMD_H264_RC_ATTR_EX |
hi_mapi_venc_rc_param * |
HI_MAPI_VENC_CMD_H265_RC_ATTR_EX |
hi_mapi_venc_rc_param * |
HI_MAPI_VENC_CMD_MJPEG_RC_ATTR_EX |
hi_mapi_venc_rc_param * |
HI_MAPI_VENC_CMD_GOP_MODE |
hi_mapi_venc_gop_attr * |
HI_MAPI_VENC_CMD_INTRA_REFRESH |
hi_mapi_venc_intra_refresh * |
HI_MAPI_VENC_CMD_FRAME_RATE |
hi_mapi_frame_rate_ctrl * |
HI_MAPI_VENC_CMD_HIERARCHICAL_QP |
hi_mapi_venc_hierarchical_qp * |
HI_MAPI_VENC_CMD_FRAMELOST_STRATEGY |
td_bool *(仅 H.264/H.265/MJPEG 有效) |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENULL_PTR |
attr 为 NULL。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_ENOT_PERM |
通道未初始化。 |
HI_MAPI_VENC_EILLEGAL_PARAM |
attr_len 不足、cmd 不受支持,或 FRAMELOST_STRATEGY 用于不支持的协议。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 必须先完成通道初始化。
HI_MAPI_VENC_CMD_FRAMELOST_STRATEGY仅适用于 H.264/H.265/MJPEG 协议,其他协议调用返回EILLEGAL_PARAM。
【举例】无
【相关主题】
hi_mapi_venc_get_param
12 hi_mapi_venc_get_param
【描述】
获取指定 VENC 通道的扩展属性。命令及参数类型与 hi_mapi_venc_set_param 相同。
【语法】
td_s32 hi_mapi_venc_get_param(td_handle venc_hdl, hi_mapi_venc_cmd cmd, td_void *attr, td_u32 attr_len);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
cmd |
输入 | hi_mapi_venc_cmd |
扩展属性命令。 |
attr |
输出 | td_void * |
属性数据输出指针。不可为 NULL。 |
attr_len |
输入 | td_u32 |
attr 缓冲区长度(字节),必须 ≥ 对应结构体大小。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENULL_PTR |
attr 为 NULL。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_ENOT_PERM |
通道未初始化。 |
HI_MAPI_VENC_EILLEGAL_PARAM |
attr_len 不足、cmd 不受支持,或 FRAMELOST_STRATEGY 用于不支持的协议。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 参数语义与
hi_mapi_venc_set_param相同。
【举例】无
【相关主题】
hi_mapi_venc_set_param
13 hi_mapi_venc_set_config
【描述】
设置 VENC 通道的静态配置(在通道 init 之前调用)。支持按通道配置 RCN/REF 共享 buffer,也支持模块全局的 mini_buf_mode(按协议生效,忽略通道号)。
【语法】
td_s32 hi_mapi_venc_set_config(td_handle venc_hdl, hi_mapi_venc_cfg_cmd cmd, const td_void *attr, td_u32 attr_len);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7];mini_buf_mode 类命令忽略该值。 |
cmd |
输入 | hi_mapi_venc_cfg_cmd |
静态配置命令。 |
attr |
输入 | const td_void * |
配置属性指针。不可为 NULL。 |
attr_len |
输入 | td_u32 |
attr 缓冲区长度(字节),必须等于对应结构体大小。 |
cmd 与 attr 类型对应关系:
cmd 值 |
attr 实际类型 |
生效范围 |
|---|---|---|
HI_MAPI_VENC_CFG_RCN_REF_SHARE |
const hi_mapi_venc_rcn_ref_share_attr * |
按通道 |
HI_MAPI_VENC_CFG_H264_MINI_BUF_MODE |
const hi_mapi_venc_mini_buf_mode_attr * |
模块全局(H.264) |
HI_MAPI_VENC_CFG_H265_MINI_BUF_MODE |
const hi_mapi_venc_mini_buf_mode_attr * |
模块全局(H.265) |
HI_MAPI_VENC_CFG_JPEG_MINI_BUF_MODE |
const hi_mapi_venc_mini_buf_mode_attr * |
模块全局(JPEG/MJPEG) |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_ENULL_PTR |
attr 为 NULL。 |
HI_MAPI_VENC_EILLEGAL_PARAM |
cmd 越界或 attr_len 不匹配。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围(仅非 mini_buf 命令)。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
HI_MAPI_VENC_ENOT_PERM |
通道已初始化(仅 RCN_REF_SHARE)。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
HI_MAPI_VENC_CFG_RCN_REF_SHARE必须在通道init之前调用,否则返回ENOT_PERM。mini_buf_mode命令为模块全局配置,忽略venc_hdl,立即按协议写回 SDKmod_param生效。mini_buf_mode值含义:0禁用,1启用。
【举例】无
【相关主题】
hi_mapi_venc_get_config
14 hi_mapi_venc_get_config
【描述】
获取 VENC 通道的静态配置。RCN/REF 共享可在通道初始化前后读取;mini_buf_mode 为模块全局配置,只需 media 系统已初始化。
【语法】
td_s32 hi_mapi_venc_get_config(td_handle venc_hdl, hi_mapi_venc_cfg_cmd cmd, td_void *attr, td_u32 attr_len);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7];mini_buf_mode 类命令忽略该值。 |
cmd |
输入 | hi_mapi_venc_cfg_cmd |
静态配置命令,同 set_config。 |
attr |
输出 | td_void * |
配置属性输出指针。不可为 NULL。 |
attr_len |
输入 | td_u32 |
attr 缓冲区长度(字节),必须等于对应结构体大小。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_ENULL_PTR |
attr 为 NULL。 |
HI_MAPI_VENC_EILLEGAL_PARAM |
cmd 越界或 attr_len 不匹配。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围(仅非 mini_buf 命令)。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 若
RCN/REF共享未被显式设置过,返回值来自 HAL 层默认值(hal_mapi_venc_get_rcn_ref_share_buf_mode())。
【举例】无
【相关主题】
hi_mapi_venc_set_config
15 hi_mapi_venc_send_frame
【描述】
向指定 VENC 通道主动发送一帧视频数据(替代绑定方式获取帧)。通道必须处于 started 状态。
【语法】
td_s32 hi_mapi_venc_send_frame(td_handle venc_hdl, const hi_mapi_frame_data *framedata, td_s32 timeout);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
venc_hdl |
输入 | td_handle |
VENC 通道号,范围 [0, 7]。 |
framedata |
输入 | const hi_mapi_frame_data * |
视频帧数据指针。不可为 NULL。 |
timeout |
输入 | td_s32 |
超时时间(毫秒)。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
venc_hdl 超出范围。 |
HI_MAPI_VENC_ENULL_PTR |
framedata 为 NULL。 |
HI_MAPI_VENC_ENOT_INITED |
media 系统尚未初始化或通道未初始化。 |
HI_MAPI_VENC_ENOT_PERM |
通道未启动(未调用 hi_mapi_venc_start)。 |
【需求】
- 头文件:
hi_mapi_venc.h - 库文件:
libhi_mapi.so
【注意】
- 通道必须处于
started状态。 - 每次成功发送后,内部
time_ref自增 2(帧序号步长)。 hi_mapi_frame_data中包含物理地址、虚拟地址、宽高、像素格式、时间戳等字段。
【举例】无
【相关主题】
hi_mapi_venc_start、hi_mapi_venc_register_callback
4 数据类型
1 hi_mapi_venc_base_attr
【说明】
VENC 基础属性,用于 hi_mapi_venc_get_default_attr 中由调用方传入编码类型、分辨率、码率等基础参数以派生完整的 hi_mapi_venc_attr。
【定义】
typedef struct {
hi_mapi_payload_type type;
td_u32 width;
td_u32 height;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 bit_rate;
td_u32 qfactor;
} hi_mapi_venc_base_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
type |
编码协议类型,详见 hi_mapi_payload_type(如 HI_MAPI_PAYLOAD_TYPE_H264/H265/JPEG/MJPEG)。 |
width |
编码图像宽度,单位像素。 |
height |
编码图像高度,单位像素。 |
src_frame_rate |
输入帧率;取值范围 [1, 240]。 |
dst_frame_rate |
目标帧率;取值范围 [0.015625, 240],不可大于 src_frame_rate。 |
bit_rate |
码率,单位 kbps。 |
qfactor |
JPEG 图像质量因子;取值范围 [1, 99],仅 JPEG 编码时有效。 |
【注意事项】
- 通过
hi_mapi_venc_get_default_attr派生出完整的hi_mapi_venc_attr,再按需修改。
【相关数据类型及接口】
hi_mapi_venc_attr;hi_mapi_venc_get_default_attr。
2 hi_mapi_venc_scene_mode
【说明】 VENC 编码场景模式枚举。
【定义】
typedef enum {
HI_MAPI_VENC_SCENE_MODE_NORMAL,
HI_MAPI_VENC_SCENE_MODE_DV,
HI_MAPI_VENC_SCENE_MODE_CAR,
HI_MAPI_VENC_SCENE_MODE_BUTT,
} hi_mapi_venc_scene_mode;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_SCENE_MODE_NORMAL |
普通场景模式。 |
HI_MAPI_VENC_SCENE_MODE_DV |
DV(数码摄像)场景模式。 |
HI_MAPI_VENC_SCENE_MODE_CAR |
车载场景模式。 |
HI_MAPI_VENC_SCENE_MODE_BUTT |
哨兵值,无效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_payload_type_attr。
3 hi_mapi_venc_h264_attr
【说明】 H.264 编码器协议特有属性(当前为空结构体,预留扩展)。
【定义】
【成员】 无
【注意事项】
- 作为
hi_mapi_venc_payload_type_attr联合体成员使用。
【相关数据类型及接口】
hi_mapi_venc_payload_type_attr。
4 hi_mapi_venc_h265_attr
【说明】 H.265 编码器协议特有属性(当前为空结构体,预留扩展)。
【定义】
【成员】 无
【注意事项】
- 作为
hi_mapi_venc_payload_type_attr联合体成员使用。
【相关数据类型及接口】
hi_mapi_venc_payload_type_attr。
5 hi_mapi_venc_svac3_attr
【说明】 SVAC 3.0 编码器协议特有属性(当前为空结构体,预留扩展)。
【定义】
【成员】 无
【注意事项】
- 作为
hi_mapi_venc_payload_type_attr联合体成员使用。
【相关数据类型及接口】
hi_mapi_venc_payload_type_attr。
6 hi_mapi_venc_pic_receive_mode
【说明】 JPEG 编码器图像接收模式枚举。
【定义】
typedef enum {
HI_MAPI_VENC_PIC_RECEIVE_SINGLE = 0,
HI_MAPI_VENC_PIC_RECEIVE_MULTI,
HI_MAPI_VENC_PIC_RECEIVE_BUTT
} hi_mapi_venc_pic_receive_mode;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_PIC_RECEIVE_SINGLE |
单帧接收模式。 |
HI_MAPI_VENC_PIC_RECEIVE_MULTI |
多帧接收模式。 |
HI_MAPI_VENC_PIC_RECEIVE_BUTT |
哨兵值,无效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_jpeg_attr。
7 hi_mapi_venc_jpeg_encode_mode
【说明】 JPEG 编码模式枚举。
【定义】
typedef enum {
HI_MAPI_JPEG_ENCODE_ALL = 0,
HI_MAPI_JPEG_ENCODE_SNAP = 1,
HI_MAPI_JPEG_ENCODE_BUTT,
} hi_mapi_venc_jpeg_encode_mode;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_JPEG_ENCODE_ALL |
JPEG 通道启动后编码所有图片。 |
HI_MAPI_JPEG_ENCODE_SNAP |
JPEG 通道启动后仅编码抓拍图片。 |
HI_MAPI_JPEG_ENCODE_BUTT |
哨兵值,无效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_jpeg_attr。
8 hi_mapi_venc_jpeg_attr
【说明】 JPEG 编码器协议特有属性,包含 DCF 支持、MPF 配置、图像质量因子等。
【定义】
typedef struct {
td_bool enable_dcf;
hi_mapi_venc_mpf_config mpf_attr;
td_u32 qfactor;
hi_mapi_venc_pic_receive_mode receive_mode;
hi_mapi_venc_jpeg_encode_mode jpeg_encode_mode;
} hi_mapi_venc_jpeg_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
enable_dcf |
是否支持 DCF(Design rule for Camera File system);TD_TRUE 启用。 |
mpf_attr |
MPF(Multi-Picture Format)配置,详见 hi_mapi_venc_mpf_config。 |
qfactor |
JPEG 图像质量因子;取值范围 [1, 99]。 |
receive_mode |
图像接收模式,详见 hi_mapi_venc_pic_receive_mode。 |
jpeg_encode_mode |
JPEG 编码模式,详见 hi_mapi_venc_jpeg_encode_mode。 |
【注意事项】
- 作为
hi_mapi_venc_payload_type_attr联合体成员使用。
【相关数据类型及接口】
hi_mapi_venc_mpf_config、hi_mapi_venc_payload_type_attr。
9 hi_mapi_venc_mjpeg_attr
【说明】 MJPEG 编码器协议特有属性(当前为空结构体,预留扩展)。
【定义】
【成员】 无
【注意事项】
- 作为
hi_mapi_venc_payload_type_attr联合体成员使用。
【相关数据类型及接口】
hi_mapi_venc_payload_type_attr。
10 hi_mapi_venc_mpf_config
【说明】 MPF(Multi-Picture Format)配置,用于 JPEG 多图片格式中缩略图的配置。
【定义】
typedef struct {
td_u8 large_thumb_nail_num;
hi_mapi_size large_thumb_nail_size[HI_MAPI_VENC_MPF_MAX_CNT];
} hi_mapi_venc_mpf_config;
【成员】
| 成员名称 | 描述 |
|---|---|
large_thumb_nail_num |
大缩略图数量;取值范围 [0, 2](HI_MAPI_VENC_MPF_MAX_CNT = 2)。 |
large_thumb_nail_size[] |
各大缩略图的分辨率,详见 hi_mapi_size。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_jpeg_attr。
11 hi_mapi_venc_payload_type_attr
【说明】 VENC 编码协议类型属性,包含编码类型、分辨率、buffer 大小、profile、场景模式及协议特有属性的联合体。
【定义】
typedef struct {
hi_mapi_payload_type type;
td_u32 width;
td_u32 height;
td_u32 buf_size;
td_u32 profile;
hi_mapi_venc_scene_mode scene_mode;
td_bool by_frame;
union {
hi_mapi_venc_h264_attr h264e_attr;
hi_mapi_venc_h265_attr h265e_attr;
hi_mapi_venc_svac3_attr svac3e_attr;
hi_mapi_venc_jpeg_attr jpeg_attr;
hi_mapi_venc_mjpeg_attr mjpeg_attr;
};
} hi_mapi_venc_payload_type_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
type |
编码协议类型,详见 hi_mapi_payload_type。 |
width |
编码图像宽度,单位像素。 |
height |
编码图像高度,单位像素。 |
buf_size |
码流缓冲区大小,单位字节。 |
profile |
编码 profile:H.264 — 0: Baseline, 1: MP, 2: HP;H.265 — 0: MP;JPEG/MJPEG — 0: Baseline。 |
scene_mode |
场景模式,详见 hi_mapi_venc_scene_mode。 |
by_frame |
编码模式;TD_TRUE 按帧编码,TD_FALSE 按 Slice 编码。 |
h264e_attr / h265e_attr / svac3e_attr / jpeg_attr / mjpeg_attr |
协议特有属性联合体,根据 type 选择对应成员。 |
【注意事项】
- 联合体中仅有一个成员有效,取决于
type的值。
【相关数据类型及接口】
hi_mapi_venc_attr、hi_mapi_venc_rc_attr。
12 hi_mapi_venc_rc_mode
【说明】 VENC 码率控制模式枚举。
【定义】
typedef enum {
HI_MAPI_VENC_RC_MODE_CBR,
HI_MAPI_VENC_RC_MODE_VBR,
HI_MAPI_VENC_RC_MODE_QVBR,
HI_MAPI_VENC_RC_MODE_CVBR,
HI_MAPI_VENC_RC_MODE_AVBR,
HI_MAPI_VENC_RC_MODE_BUTT,
} hi_mapi_venc_rc_mode;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_RC_MODE_CBR |
固定码率(CBR)。 |
HI_MAPI_VENC_RC_MODE_VBR |
可变码率(VBR)。 |
HI_MAPI_VENC_RC_MODE_QVBR |
质量可变码率(QVBR)。 |
HI_MAPI_VENC_RC_MODE_CVBR |
约束可变码率(CVBR)。 |
HI_MAPI_VENC_RC_MODE_AVBR |
自适应可变码率(AVBR)。 |
HI_MAPI_VENC_RC_MODE_BUTT |
哨兵值,无效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_attr。
13 hi_mapi_venc_cbr_attr
【说明】 CBR(固定码率)控制属性。
【定义】
typedef struct {
td_u32 gop;
td_u32 stat_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 bit_rate;
} hi_mapi_venc_cbr_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
gop |
I 帧间隔;取值范围 [1, 65536],MJPEG 无效。 |
stat_time |
码率统计周期,单位秒;取值范围 [1, 60]。 |
src_frame_rate |
输入帧率;取值范围 [1, 240]。 |
dst_frame_rate |
目标帧率;取值范围 [0.015625, 240],不可大于 src_frame_rate。 |
bit_rate |
平均码率,单位 kbps;取值范围 [2, 614400]。 |
【注意事项】
- H.264/H.265/MJPEG 使用相同的数据结构。
【相关数据类型及接口】
hi_mapi_venc_rc_attr。
14 hi_mapi_venc_vbr_attr
【说明】 VBR(可变码率)控制属性。
【定义】
typedef struct {
td_u32 gop;
td_u32 stat_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 max_bit_rate;
} hi_mapi_venc_vbr_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
gop |
I 帧间隔;取值范围 [1, 65536],MJPEG 无效。 |
stat_time |
码率统计周期,单位秒;取值范围 [1, 60]。 |
src_frame_rate |
输入帧率;取值范围 [1, 240]。 |
dst_frame_rate |
目标帧率;取值范围 [0.015625, 240],不可大于 src_frame_rate。 |
max_bit_rate |
最大码率,单位 kbps;取值范围 [2, 614400]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_attr。
15 hi_mapi_venc_qvbr_attr
【说明】 QVBR(质量可变码率)控制属性。
【定义】
typedef struct {
td_u32 gop;
td_u32 stat_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 target_bit_rate;
} hi_mapi_venc_qvbr_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
gop |
I 帧间隔;取值范围 [1, 65536]。 |
stat_time |
码率统计周期,单位秒;取值范围 [1, 60]。 |
src_frame_rate |
输入帧率;取值范围 [1, 240]。 |
dst_frame_rate |
目标帧率;取值范围 [0.015625, 240]。 |
target_bit_rate |
目标码率,单位 kbps;取值范围 [2, 614400]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_attr。
16 hi_mapi_venc_cvbr_attr
【说明】 CVBR(约束可变码率)控制属性,支持长短期统计。
【定义】
typedef struct {
td_u32 gop;
td_u32 stat_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 max_bit_rate;
td_u32 short_term_stat_time;
td_u32 long_term_stat_time;
td_u32 long_term_max_bitrate;
td_u32 long_term_min_bitrate;
} hi_mapi_venc_cvbr_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
gop |
I 帧间隔;取值范围 [1, 65536]。 |
stat_time |
码率统计周期,单位秒;取值范围 [1, 60]。 |
src_frame_rate |
输入帧率;取值范围 [1, 240]。 |
dst_frame_rate |
目标帧率;取值范围 [0.015625, 240]。 |
max_bit_rate |
最大码率,单位 kbps;取值范围 [2, 614400]。 |
short_term_stat_time |
短期码率统计周期,单位秒;取值范围 [1, 120]。 |
long_term_stat_time |
长期码率统计周期;取值范围 [1, 1440]。 |
long_term_max_bitrate |
长期最大码率,单位 kbps;取值范围 [2, 614400],不可大于 max_bit_rate。 |
long_term_min_bitrate |
长期最小码率,单位 kbps;取值范围 [0, 614400],不可大于 long_term_max_bitrate。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_attr。
17 hi_mapi_venc_avbr_attr
【说明】 AVBR(自适应可变码率)控制属性。
【定义】
typedef struct {
td_u32 gop;
td_u32 stat_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 max_bit_rate;
} hi_mapi_venc_avbr_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
gop |
I 帧间隔;取值范围 [1, 65536]。 |
stat_time |
码率统计周期,单位秒;取值范围 [1, 60]。 |
src_frame_rate |
输入帧率;取值范围 [1, 240]。 |
dst_frame_rate |
目标帧率;取值范围 [0.015625, 240]。 |
max_bit_rate |
最大码率,单位 kbps;取值范围 [2, 614400]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_attr。
18 hi_mapi_venc_rc_attr
【说明】 VENC 码率控制属性,包含码率控制模式及对应的模式参数联合体。
【定义】
typedef struct {
hi_mapi_venc_rc_mode rc_mode;
union {
hi_mapi_venc_cbr_attr cbr_attr;
hi_mapi_venc_vbr_attr vbr_attr;
hi_mapi_venc_qvbr_attr qvbr_attr;
hi_mapi_venc_cvbr_attr cvbr_attr;
hi_mapi_venc_avbr_attr avbr_attr;
};
} hi_mapi_venc_rc_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
rc_mode |
码率控制模式,详见 hi_mapi_venc_rc_mode。 |
cbr_attr |
CBR 参数,当 rc_mode 为 CBR 时有效。 |
vbr_attr |
VBR 参数,当 rc_mode 为 VBR 时有效。 |
qvbr_attr |
QVBR 参数,当 rc_mode 为 QVBR 时有效。 |
cvbr_attr |
CVBR 参数,当 rc_mode 为 CVBR 时有效。 |
avbr_attr |
AVBR 参数,当 rc_mode 为 AVBR 时有效。 |
【注意事项】
- 联合体中仅有一个成员有效,取决于
rc_mode的值。
【相关数据类型及接口】
hi_mapi_venc_attr。
19 hi_mapi_venc_attr
【说明】 VENC 编码通道完整属性,包含编码协议类型属性与码率控制属性。
【定义】
typedef struct {
hi_mapi_venc_payload_type_attr payload_type_attr;
hi_mapi_venc_rc_attr rc_attr;
} hi_mapi_venc_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
payload_type_attr |
编码协议类型属性,详见 hi_mapi_venc_payload_type_attr。 |
rc_attr |
码率控制属性,详见 hi_mapi_venc_rc_attr。 |
【注意事项】
- 通过
hi_mapi_venc_get_default_attr可获取默认值,再按需修改。 - 通过
hi_mapi_venc_set_attr/hi_mapi_venc_get_attr设置/获取。
【相关数据类型及接口】
hi_mapi_venc_payload_type_attr、hi_mapi_venc_rc_attr;hi_mapi_venc_init、hi_mapi_venc_set_attr、hi_mapi_venc_get_attr。
20 hi_mapi_venc_h264e_nalu_type
【说明】 H.264 编码 NALU 类型枚举。
【定义】
typedef enum {
HI_MAPI_VENC_H264E_NALU_BSLICE = 0,
HI_MAPI_VENC_H264E_NALU_PSLICE = 1,
HI_MAPI_VENC_H264E_NALU_ISLICE = 2,
HI_MAPI_VENC_H264E_NALU_IDRSLICE = 5,
HI_MAPI_VENC_H264E_NALU_SEI = 6,
HI_MAPI_VENC_H264E_NALU_SPS = 7,
HI_MAPI_VENC_H264E_NALU_PPS = 8,
HI_MAPI_VENC_H264E_NALU_BUTT
} hi_mapi_venc_h264e_nalu_type;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_H264E_NALU_BSLICE |
B Slice 类型。 |
HI_MAPI_VENC_H264E_NALU_PSLICE |
P Slice 类型。 |
HI_MAPI_VENC_H264E_NALU_ISLICE |
I Slice 类型。 |
HI_MAPI_VENC_H264E_NALU_IDRSLICE |
IDR Slice 类型。 |
HI_MAPI_VENC_H264E_NALU_SEI |
SEI 类型。 |
HI_MAPI_VENC_H264E_NALU_SPS |
SPS 类型。 |
HI_MAPI_VENC_H264E_NALU_PPS |
PPS 类型。 |
HI_MAPI_VENC_H264E_NALU_BUTT |
哨兵值,无效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_data_type。
21 hi_mapi_venc_h265e_nalu_type
【说明】 H.265 编码 NALU 类型枚举。
【定义】
typedef enum {
HI_MAPI_VENC_H265E_NALU_BSLICE = 0,
HI_MAPI_VENC_H265E_NALU_PSLICE = 1,
HI_MAPI_VENC_H265E_NALU_ISLICE = 2,
HI_MAPI_VENC_H265E_NALU_IDRSLICE = 19,
HI_MAPI_VENC_H265E_NALU_VPS = 32,
HI_MAPI_VENC_H265E_NALU_SPS = 33,
HI_MAPI_VENC_H265E_NALU_PPS = 34,
HI_MAPI_VENC_H265E_NALU_SEI = 39,
HI_MAPI_VENC_H265E_NALU_ENHANCE = 64,
HI_MAPI_VENC_H265E_NALU_BUTT
} hi_mapi_venc_h265e_nalu_type;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_H265E_NALU_BSLICE |
B Slice 类型。 |
HI_MAPI_VENC_H265E_NALU_PSLICE |
P Slice 类型。 |
HI_MAPI_VENC_H265E_NALU_ISLICE |
I Slice 类型。 |
HI_MAPI_VENC_H265E_NALU_IDRSLICE |
IDR Slice 类型。 |
HI_MAPI_VENC_H265E_NALU_VPS |
VPS 类型。 |
HI_MAPI_VENC_H265E_NALU_SPS |
SPS 类型。 |
HI_MAPI_VENC_H265E_NALU_PPS |
PPS 类型。 |
HI_MAPI_VENC_H265E_NALU_SEI |
SEI 类型。 |
HI_MAPI_VENC_H265E_NALU_ENHANCE |
增强层类型。 |
HI_MAPI_VENC_H265E_NALU_BUTT |
哨兵值,无效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_data_type。
22 hi_mapi_venc_svac3e_nalu_type
【说明】 SVAC 3.0 编码 NALU 类型枚举。
【定义】
typedef enum {
HI_MAPI_VENC_SVAC3_NALU_FORBIDDEN = 0,
HI_MAPI_VENC_SVAC3_NALU_NRAP_PATCH = 1,
HI_MAPI_VENC_SVAC3_NALU_RAPI_PATCH = 2,
HI_MAPI_VENC_SVAC3_NALU_PIC_HEAD = 3,
HI_MAPI_VENC_SVAC3_NALU_IDR_PATCH = 4,
HI_MAPI_VENC_SVAC3_NALU_EXTENSION = 5,
HI_MAPI_VENC_SVAC3_NALU_SEI = 6,
HI_MAPI_VENC_SVAC3_NALU_SPS = 7,
HI_MAPI_VENC_SVAC3_NALU_PPS = 8,
HI_MAPI_VENC_SVAC3_NALU_SEC_PS = 9,
HI_MAPI_VENC_SVAC3_NALU_AUTH_DATA = 10,
HI_MAPI_VENC_SVAC3_NALU_EOS = 11,
HI_MAPI_VENC_SVAC3_NALU_CRR_NDP_PATCH = 12,
HI_MAPI_VENC_SVAC3_NALU_RL_PATCH = 14,
HI_MAPI_VENC_SVAC3_NALU_PIC_DL = 15,
HI_MAPI_VENC_SVAC3_NALU_EOCVS = 16,
HI_MAPI_VENC_SVAC3_NALU_CRR_DP_PATCH = 17,
HI_MAPI_VENC_SVAC3_NALU_CRR_DL_PATCH = 18,
HI_MAPI_VENC_SVAC3_NALU_CRR_PRIVACY = 19,
HI_MAPI_VENC_SVAC3_NALU_BUTT
} hi_mapi_venc_svac3e_nalu_type;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_SVAC3_NALU_FORBIDDEN |
禁用类型。 |
HI_MAPI_VENC_SVAC3_NALU_NRAP_PATCH |
非参考可伸缩补丁。 |
HI_MAPI_VENC_SVAC3_NALU_RAPI_PATCH |
参考可伸缩补丁。 |
HI_MAPI_VENC_SVAC3_NALU_PIC_HEAD |
图像头。 |
HI_MAPI_VENC_SVAC3_NALU_IDR_PATCH |
IDR 补丁。 |
HI_MAPI_VENC_SVAC3_NALU_EXTENSION |
扩展。 |
HI_MAPI_VENC_SVAC3_NALU_SEI |
SEI。 |
HI_MAPI_VENC_SVAC3_NALU_SPS |
SPS。 |
HI_MAPI_VENC_SVAC3_NALU_PPS |
PPS。 |
HI_MAPI_VENC_SVAC3_NALU_SEC_PS |
二级参数集。 |
HI_MAPI_VENC_SVAC3_NALU_AUTH_DATA |
认证数据。 |
HI_MAPI_VENC_SVAC3_NALU_EOS |
码流结束。 |
HI_MAPI_VENC_SVAC3_NALU_CRR_NDP_PATCH |
CRR 非数据补丁。 |
HI_MAPI_VENC_SVAC3_NALU_RL_PATCH |
RL 补丁。 |
HI_MAPI_VENC_SVAC3_NALU_PIC_DL |
图像时延。 |
HI_MAPI_VENC_SVAC3_NALU_EOCVS |
视频序列结束。 |
HI_MAPI_VENC_SVAC3_NALU_CRR_DP_PATCH |
CRR 数据补丁。 |
HI_MAPI_VENC_SVAC3_NALU_CRR_DL_PATCH |
CRR 时延补丁。 |
HI_MAPI_VENC_SVAC3_NALU_CRR_PRIVACY |
CRR 隐私。 |
HI_MAPI_VENC_SVAC3_NALU_BUTT |
哨兵值,无效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_data_type。
23 hi_mapi_venc_jpeg_pack_type
【说明】 JPEG 编码数据包类型枚举。
【定义】
typedef enum {
HI_MAPI_VENC_JPEGE_PACK_ECS = 5,
HI_MAPI_VENC_JPEGE_PACK_APP = 6,
HI_MAPI_VENC_JPEGE_PACK_VDO = 7,
HI_MAPI_VENC_JPEGE_PACK_PIC = 8,
HI_MAPI_VENC_JPEGE_PACK_DCF = 9,
HI_MAPI_VENC_JPEGE_PACK_DCF_PIC = 10,
HI_MAPI_VENC_JPEGE_PACK_BUTT
} hi_mapi_venc_jpeg_pack_type;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_JPEGE_PACK_ECS |
ECS 类型。 |
HI_MAPI_VENC_JPEGE_PACK_APP |
APP 类型。 |
HI_MAPI_VENC_JPEGE_PACK_VDO |
VDO 类型。 |
HI_MAPI_VENC_JPEGE_PACK_PIC |
PIC 类型。 |
HI_MAPI_VENC_JPEGE_PACK_DCF |
DCF 类型。 |
HI_MAPI_VENC_JPEGE_PACK_DCF_PIC |
DCF PIC 类型。 |
HI_MAPI_VENC_JPEGE_PACK_BUTT |
哨兵值,无效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_data_type。
24 hi_mapi_venc_data_type
【说明】 VENC 码流数据类型,标识当前数据包的协议类型与 NALU/PACK 类别。
【定义】
typedef struct {
hi_mapi_payload_type payload_type;
union {
hi_mapi_venc_h264e_nalu_type h264e_type;
hi_mapi_venc_h265e_nalu_type h265e_type;
hi_mapi_venc_svac3e_nalu_type svac3e_type;
hi_mapi_venc_jpeg_pack_type jpeg_type;
};
} hi_mapi_venc_data_type;
【成员】
| 成员名称 | 描述 |
|---|---|
payload_type |
协议类型(H.264/H.265/JPEG/MJPEG/SVAC3)。 |
h264e_type |
H.264 NALU 类型,当 payload_type 为 H.264 时有效。 |
h265e_type |
H.265 NALU 类型,当 payload_type 为 H.265 时有效。 |
svac3e_type |
SVAC3 NALU 类型,当 payload_type 为 SVAC3 时有效。 |
jpeg_type |
JPEG PACK 类型,当 payload_type 为 JPEG 时有效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_data_pack_attr。
25 hi_mapi_venc_data_pack_attr
【说明】 VENC 码流数据包属性,包含物理/虚拟地址、长度、时间戳及数据类型。
【定义】
typedef struct {
td_u64 phy_addr[HI_MAPI_VENC_PACK_NUM];
td_u8 *vir_addr[HI_MAPI_VENC_PACK_NUM];
td_u32 len[HI_MAPI_VENC_PACK_NUM];
td_u64 time_stamp;
hi_mapi_venc_data_type data_type;
td_u32 offset;
} hi_mapi_venc_data_pack_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
phy_addr[] |
各 pack 的物理地址;HI_MAPI_VENC_PACK_NUM = 2。 |
vir_addr[] |
各 pack 的虚拟地址。 |
len[] |
各 pack 的码流长度,单位字节。 |
time_stamp |
时间戳,单位 90 Hz tick。 |
data_type |
数据类型,详见 hi_mapi_venc_data_type。 |
offset |
有效数据相对起始地址的偏移,单位字节。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_data_attr。
26 hi_mapi_venc_ref_type
【说明】 H.264/H.265 分层参考帧类型枚举,用于高级丢帧参考模式中标识帧类型。
【定义】
typedef enum {
HI_MAPI_VENC_BASE_IDRSLICE = 0,
HI_MAPI_VENC_BASE_PSLICE_REFTOIDR,
HI_MAPI_VENC_BASE_PSLICE_REFBYBASE,
HI_MAPI_VENC_BASE_PSLICE_REFBYENHANCE,
HI_MAPI_VENC_ENHANCE_PSLICE_REFBYENHANCE,
HI_MAPI_VENC_ENHANCE_PSLICE_NOTFORREF,
HI_MAPI_VENC_ENHANCE_PSLICE_BUTT
} hi_mapi_venc_ref_type;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_BASE_IDRSLICE |
基础层 IDR 帧。 |
HI_MAPI_VENC_BASE_PSLICE_REFTOIDR |
基础层 P 帧,参考 IDR 帧,被基础层其他帧参考。 |
HI_MAPI_VENC_BASE_PSLICE_REFBYBASE |
基础层 P 帧,被基础层其他帧参考。 |
HI_MAPI_VENC_BASE_PSLICE_REFBYENHANCE |
基础层 P 帧,被增强层帧参考。 |
HI_MAPI_VENC_ENHANCE_PSLICE_REFBYENHANCE |
增强层 P 帧,被增强层其他帧参考。 |
HI_MAPI_VENC_ENHANCE_PSLICE_NOTFORREF |
增强层 P 帧,不作为参考帧。 |
HI_MAPI_VENC_ENHANCE_PSLICE_BUTT |
哨兵值,无效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_stream_info。
27 hi_mapi_venc_stream_info
【说明】 VENC 码流信息,包含参考帧类型与起始 QP。
【定义】
【成员】
| 成员名称 | 描述 |
|---|---|
ref_type |
高级丢帧参考模式下的帧类型,详见 hi_mapi_venc_ref_type。 |
start_qp |
编码帧的起始 QP 值。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_data_attr。
28 hi_mapi_venc_data_attr
【说明】 VENC 一帧码流数据属性,包含多个 pack、帧序号、码流结束标志及码流信息。
【定义】
typedef struct {
hi_mapi_venc_data_pack_attr data_pack[HI_MAPI_VENC_MAX_FRAME_PACKCOUNT];
td_u32 pack_count;
td_u32 seq;
td_bool end_of_stream;
hi_mapi_venc_stream_info stream_info;
} hi_mapi_venc_data_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
data_pack[] |
码流 pack 数组;HI_MAPI_VENC_MAX_FRAME_PACKCOUNT = 6。 |
pack_count |
一帧中 pack 的数量。 |
seq |
码流帧序号。 |
end_of_stream |
码流结束标志;TD_TRUE 表示最后一帧。 |
stream_info |
码流信息,详见 hi_mapi_venc_stream_info。 |
【注意事项】
- 该结构体通过
hi_mapi_venc_proc_data回调上报给应用层。
【相关数据类型及接口】
hi_mapi_venc_data_pack_attr、hi_mapi_venc_call_back。
29 hi_mapi_venc_proc_data / hi_mapi_venc_call_back
【说明】 VENC 码流数据回调函数类型及回调注册结构体。
【定义】
typedef td_s32 (*hi_mapi_venc_proc_data)(td_handle venc_hdl,
hi_mapi_venc_data_attr *stream_data, td_void *private_data);
typedef struct {
hi_mapi_venc_proc_data proc_data_cb;
td_void *private_data;
} hi_mapi_venc_call_back;
【成员】
| 成员名称 | 描述 |
|---|---|
proc_data_cb |
码流数据回调函数指针;编码器每完成一帧编码时调用。 |
private_data |
用户私有数据指针,回调时原样传回。 |
【注意事项】
- 通过
hi_mapi_venc_register_callback/hi_mapi_venc_un_register_callback注册/注销。
【相关数据类型及接口】
hi_mapi_venc_data_attr;hi_mapi_venc_register_callback、hi_mapi_venc_un_register_callback。
30 hi_mapi_venc_cmd
【说明】
VENC 动态扩展属性命令枚举,用于 hi_mapi_venc_set_param / hi_mapi_venc_get_param。
【定义】
typedef enum {
HI_MAPI_VENC_CMD_H264_RC_ATTR_EX,
HI_MAPI_VENC_CMD_H265_RC_ATTR_EX,
HI_MAPI_VENC_CMD_MJPEG_RC_ATTR_EX,
HI_MAPI_VENC_CMD_SVAC2_RC_ATTR_EX,
HI_MAPI_VENC_CMD_GOP_MODE,
HI_MAPI_VENC_CMD_INTRA_REFRESH,
HI_MAPI_VENC_CMD_FRAME_RATE,
HI_MAPI_VENC_CMD_HIERARCHICAL_QP,
HI_MAPI_VENC_CMD_FRAMELOST_STRATEGY,
HI_MAPI_VENC_CMD_BUTT
} hi_mapi_venc_cmd;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_CMD_H264_RC_ATTR_EX |
H.264 码率控制扩展参数,对应 hi_mapi_venc_rc_param。 |
HI_MAPI_VENC_CMD_H265_RC_ATTR_EX |
H.265 码率控制扩展参数,对应 hi_mapi_venc_rc_param。 |
HI_MAPI_VENC_CMD_MJPEG_RC_ATTR_EX |
MJPEG 码率控制扩展参数,对应 hi_mapi_venc_rc_param。 |
HI_MAPI_VENC_CMD_SVAC2_RC_ATTR_EX |
SVAC2 码率控制扩展参数,对应 hi_mapi_venc_rc_param。 |
HI_MAPI_VENC_CMD_GOP_MODE |
GOP 模式属性,对应 hi_mapi_venc_gop_attr。 |
HI_MAPI_VENC_CMD_INTRA_REFRESH |
帧内刷新参数,对应 hi_mapi_venc_intra_refresh。 |
HI_MAPI_VENC_CMD_FRAME_RATE |
帧率控制,对应 hi_mapi_frame_rate_ctrl。 |
HI_MAPI_VENC_CMD_HIERARCHICAL_QP |
分层 QP 参数,对应 hi_mapi_venc_hierarchical_qp。 |
HI_MAPI_VENC_CMD_FRAMELOST_STRATEGY |
丢帧策略,对应 td_bool。 |
HI_MAPI_VENC_CMD_BUTT |
哨兵值,无效。 |
【注意事项】
- 通道运行中可动态调整。
【相关数据类型及接口】
hi_mapi_venc_set_param、hi_mapi_venc_get_param。
31 hi_mapi_venc_gop_mode / hi_mapi_venc_gop_attr
【说明】 GOP(Group of Pictures)模式枚举及 GOP 属性。
【定义】
typedef enum {
HI_MAPI_VENC_GOPMODE_NORMALP = 0,
HI_MAPI_VENC_GOPMODE_DUALP = 1,
HI_MAPI_VENC_GOPMODE_SMARTP = 2,
HI_MAPI_VENC_GOPMODE_BIPREDB = 3,
HI_MAPI_VENC_GOPMODE_BUTT,
} hi_mapi_venc_gop_mode;
typedef struct {
hi_mapi_venc_gop_mode gop_mode;
union {
hi_mapi_venc_normalp_gop normalp;
hi_mapi_venc_dualp_gop dualp;
hi_mapi_venc_smartp_gop smartp;
hi_mapi_venc_bipredb_gop bipredb;
};
} hi_mapi_venc_gop_attr;
【成员】
hi_mapi_venc_gop_mode 枚举成员:
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_GOPMODE_NORMALP |
普通 P 帧 GOP。 |
HI_MAPI_VENC_GOPMODE_DUALP |
双 P 帧 GOP。 |
HI_MAPI_VENC_GOPMODE_SMARTP |
智能 P 帧 GOP(含长期参考帧)。 |
HI_MAPI_VENC_GOPMODE_BIPREDB |
前向预测 B 帧 GOP。 |
HI_MAPI_VENC_GOPMODE_BUTT |
哨兵值,无效。 |
hi_mapi_venc_gop_attr 成员:
| 成员名称 | 描述 |
|---|---|
gop_mode |
GOP 模式。 |
normalp |
普通 P 帧参数,详见 hi_mapi_venc_normalp_gop。 |
dualp |
双 P 帧参数,详见 hi_mapi_venc_dualp_gop。 |
smartp |
智能 P 帧参数,详见 hi_mapi_venc_smartp_gop。 |
bipredb |
前向预测 B 帧参数,详见 hi_mapi_venc_bipredb_gop。 |
【注意事项】
- 通过
HI_MAPI_VENC_CMD_GOP_MODE设置/获取。
【相关数据类型及接口】
HI_MAPI_VENC_CMD_GOP_MODE;hi_mapi_venc_set_param、hi_mapi_venc_get_param。
32 hi_mapi_venc_normalp_gop
【说明】 普通 P 帧 GOP 属性。
【定义】
【成员】
| 成员名称 | 描述 |
|---|---|
ip_qp_delta |
I 帧与 P 帧的 QP 差值;取值范围 [-10, 30]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_gop_attr。
33 hi_mapi_venc_dualp_gop
【说明】 双 P 帧 GOP 属性。
【定义】
typedef struct {
td_u32 sp_interval;
td_s32 sp_qp_delta;
td_s32 ip_qp_delta;
} hi_mapi_venc_dualp_gop;
【成员】
| 成员名称 | 描述 |
|---|---|
sp_interval |
特殊 P 帧间隔;取值范围 [0, 65536],不支持 1,且须小于 GOP。 |
sp_qp_delta |
P 帧与特殊 P 帧的 QP 差值;取值范围 [-10, 30]。 |
ip_qp_delta |
I 帧与 P 帧的 QP 差值;取值范围 [-10, 30]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_gop_attr。
34 hi_mapi_venc_smartp_gop
【说明】 智能 P 帧 GOP 属性(含长期参考帧/背景帧)。
【定义】
typedef struct {
td_u32 bg_interval;
td_s32 bg_qp_delta;
td_s32 vi_qp_delta;
} hi_mapi_venc_smartp_gop;
【成员】
| 成员名称 | 描述 |
|---|---|
bg_interval |
长期参考帧(背景帧)间隔,不可小于 GOP。 |
bg_qp_delta |
P 帧与背景帧的 QP 差值;取值范围 [-10, 30]。 |
vi_qp_delta |
P 帧与虚拟 I 帧的 QP 差值;取值范围 [-10, 30]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_gop_attr。
35 hi_mapi_venc_bipredb_gop
【说明】 前向预测 B 帧 GOP 属性。
【定义】
typedef struct {
td_u32 b_frm_num;
td_s32 b_qp_delta;
td_s32 ip_qp_delta;
} hi_mapi_venc_bipredb_gop;
【成员】
| 成员名称 | 描述 |
|---|---|
b_frm_num |
B 帧数量;取值范围 [1, 3]。 |
b_qp_delta |
P 帧与 B 帧的 QP 差值;取值范围 [-10, 30]。 |
ip_qp_delta |
I 帧与 P 帧的 QP 差值;取值范围 [-10, 30]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_gop_attr。
36 hi_mapi_venc_cfg_cmd
【说明】
VENC 静态配置命令枚举,必须在通道 init 之前设置。
【定义】
typedef enum {
HI_MAPI_VENC_CFG_RCN_REF_SHARE,
HI_MAPI_VENC_CFG_H264_MINI_BUF_MODE,
HI_MAPI_VENC_CFG_H265_MINI_BUF_MODE,
HI_MAPI_VENC_CFG_JPEG_MINI_BUF_MODE,
HI_MAPI_VENC_CFG_CMD_BUTT
} hi_mapi_venc_cfg_cmd;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_CFG_RCN_REF_SHARE |
RCN 参考帧共享 buffer,对应 hi_mapi_venc_rcn_ref_share_attr。 |
HI_MAPI_VENC_CFG_H264_MINI_BUF_MODE |
H.264 mini stream-buffer 模式,对应 hi_mapi_venc_mini_buf_mode_attr。 |
HI_MAPI_VENC_CFG_H265_MINI_BUF_MODE |
H.265 mini stream-buffer 模式,对应 hi_mapi_venc_mini_buf_mode_attr。 |
HI_MAPI_VENC_CFG_JPEG_MINI_BUF_MODE |
JPEG/MJPEG mini stream-buffer 模式,对应 hi_mapi_venc_mini_buf_mode_attr。 |
HI_MAPI_VENC_CFG_CMD_BUTT |
哨兵值,无效。 |
【注意事项】
- 必须在
hi_mapi_venc_init之前调用hi_mapi_venc_set_config设置。
【相关数据类型及接口】
hi_mapi_venc_set_config、hi_mapi_venc_get_config。
37 hi_mapi_venc_rcn_ref_share_attr
【说明】 RCN 重建与参考帧共享 buffer 属性。
【定义】
【成员】
| 成员名称 | 描述 |
|---|---|
ref_rcn_share_en |
重建帧与参考帧共享 buffer 使能;TD_TRUE 启用,TD_FALSE 关闭。 |
【注意事项】
- 通过
HI_MAPI_VENC_CFG_RCN_REF_SHARE设置。
【相关数据类型及接口】
hi_mapi_venc_cfg_cmd;hi_mapi_venc_set_config。
38 hi_mapi_venc_mini_buf_mode_attr
【说明】 mini stream-buffer 模式属性,按协议(H.264/H.265/JPEG)全局生效。
【定义】
【成员】
| 成员名称 | 描述 |
|---|---|
mini_buf_mode |
mini stream-buffer 模式;0 禁用,1 启用。 |
【注意事项】
- 通过
HI_MAPI_VENC_CFG_H264_MINI_BUF_MODE/HI_MAPI_VENC_CFG_H265_MINI_BUF_MODE/HI_MAPI_VENC_CFG_JPEG_MINI_BUF_MODE设置。
【相关数据类型及接口】
hi_mapi_venc_cfg_cmd;hi_mapi_venc_set_config。
39 hi_mapi_venc_rc_qp_map_mode
【说明】 QP Map 模式枚举。
【定义】
typedef enum {
HI_MAPI_VENC_RC_QPMAP_MODE_MEANQP = 0,
HI_MAPI_VENC_RC_QPMAP_MODE_MINQP,
HI_MAPI_VENC_RC_QPMAP_MODE_MAXQP,
HI_MAPI_VENC_RC_QPMAP_MODE_BUTT,
} hi_mapi_venc_rc_qp_map_mode;
【成员】
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_RC_QPMAP_MODE_MEANQP |
平均 QP 模式。 |
HI_MAPI_VENC_RC_QPMAP_MODE_MINQP |
最小 QP 模式。 |
HI_MAPI_VENC_RC_QPMAP_MODE_MAXQP |
最大 QP 模式。 |
HI_MAPI_VENC_RC_QPMAP_MODE_BUTT |
哨兵值,无效。 |
【注意事项】
- 在 H.265/SVAC3 的各 rc_param 结构体中使用。
【相关数据类型及接口】
hi_mapi_venc_rc_param 中各协议子参数。
40 hi_mapi_venc_scene_change_detect
【说明】 场景变化检测参数。
【定义】
typedef struct {
td_bool detect_scene_change;
td_bool adaptive_insert_idr_frame;
} hi_mapi_venc_scene_change_detect;
【成员】
| 成员名称 | 描述 |
|---|---|
detect_scene_change |
是否启用场景变化检测;取值范围 [0, 1]。 |
adaptive_insert_idr_frame |
是否启用自适应插入 IDR 帧;取值范围 [0, 1]。 |
【注意事项】
- 作为
hi_mapi_venc_rc_param的成员使用。
【相关数据类型及接口】
hi_mapi_venc_rc_param。
41 hi_mapi_venc_rc_param
【说明】 VENC 码率控制扩展参数,包含纹理阈值、行列 QP 偏移、场景变化检测及各协议/模式的详细 RC 参数联合体。
【定义】
typedef struct {
td_u32 thrd_i[HI_MAPI_VENC_TEXTURE_THRESHOLD_SIZE];
td_u32 thrd_p[HI_MAPI_VENC_TEXTURE_THRESHOLD_SIZE];
td_u32 thrd_b[HI_MAPI_VENC_TEXTURE_THRESHOLD_SIZE];
td_u32 direction_thrd;
td_u32 row_qp_delta;
td_s32 first_frame_start_qp;
hi_mapi_venc_scene_change_detect scene_change_detect;
union {
hi_mapi_venc_h264_cbr_param h264_cbr_param;
hi_mapi_venc_h264_vbr_param h264_vbr_param;
hi_mapi_venc_h264_avbr_param h264_avbr_param;
hi_mapi_venc_h264_qvbr_param h264_qvbr_param;
hi_mapi_venc_h264_cvbr_param h264_cvbr_param;
hi_mapi_venc_h265_cbr_param h265_cbr_param;
hi_mapi_venc_h265_vbr_param h265_vbr_param;
hi_mapi_venc_h265_avbr_param h265_avbr_param;
hi_mapi_venc_h265_qvbr_param h265_qvbr_param;
hi_mapi_venc_h265_cvbr_param h265_cvbr_param;
hi_mapi_venc_svac3_cbr_param svac3_cbr_param;
hi_mapi_venc_svac3_vbr_param svac3_vbr_param;
hi_mapi_venc_svac3_avbr_param svac3_avbr_param;
hi_mapi_venc_svac3_qvbr_param svac3_qvbr_param;
hi_mapi_venc_svac3_cvbr_param svac3_cvbr_param;
hi_mapi_venc_mjpeg_cbr_param mjpeg_cbr_param;
hi_mapi_venc_mjpeg_vbr_param mjpeg_vbr_param;
};
} hi_mapi_venc_rc_param;
【成员】
| 成员名称 | 描述 |
|---|---|
thrd_i[] |
I 帧宏块级 Mad 阈值数组;HI_MAPI_VENC_TEXTURE_THRESHOLD_SIZE = 16,取值范围 [0, 255]。 |
thrd_p[] |
P 帧宏块级 Mad 阈值数组,取值范围 [0, 255]。 |
thrd_b[] |
B 帧宏块级 Mad 阈值数组,取值范围 [0, 255]。 |
direction_thrd |
方向阈值;取值范围 [0, 16]。 |
row_qp_delta |
每行起始 QP 相对偏移;取值范围 [0, 10]。 |
first_frame_start_qp |
首帧起始 QP;取值范围 [-1, 51],-1 表示使用默认值。 |
scene_change_detect |
场景变化检测参数,详见 hi_mapi_venc_scene_change_detect。 |
| 联合体各成员 | 根据编码协议与码率模式选择对应的详细 RC 参数结构体。 |
【注意事项】
- 通过
HI_MAPI_VENC_CMD_H264_RC_ATTR_EX/HI_MAPI_VENC_CMD_H265_RC_ATTR_EX/HI_MAPI_VENC_CMD_MJPEG_RC_ATTR_EX/HI_MAPI_VENC_CMD_SVAC2_RC_ATTR_EX设置/获取。
【相关数据类型及接口】
hi_mapi_venc_cmd;hi_mapi_venc_set_param、hi_mapi_venc_get_param。
42 hi_mapi_venc_h264_cbr_param
【说明】 H.264 CBR 模式详细码率控制参数。
【定义】
typedef struct {
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_s32 max_reencode_times;
td_bool qpmap_en;
} hi_mapi_venc_h264_cbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
min_ip_ratio |
I/P 帧最小比例;取值范围 [1, 100]。 |
max_ip_ratio |
I/P 帧最大比例;取值范围 [1, 100],不可小于 min_ip_ratio。 |
max_qp |
最大 QP;取值范围 [0, 51]。 |
min_qp |
最小 QP;取值范围 [0, 51],不可大于 max_qp。 |
max_i_qp |
I 帧最大 QP;取值范围 [0, 51]。 |
min_i_qp |
I 帧最小 QP;取值范围 [0, 51],不可大于 max_i_qp。 |
max_reencode_times |
最大重编码次数;取值范围 [0, 3]。 |
qpmap_en |
QP Map 使能;TD_TRUE 启用。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
43 hi_mapi_venc_h264_vbr_param
【说明】 H.264 VBR 模式详细码率控制参数。
【定义】
typedef struct {
td_s32 change_pos;
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_bool qpmap_en;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
} hi_mapi_venc_h264_vbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
change_pos |
开始调节 QP 时当前码率与最大码率的比值;取值范围 [50, 100]。 |
min_ip_ratio |
I/P 帧最小比例;取值范围 [1, 100]。 |
max_ip_ratio |
I/P 帧最大比例;取值范围 [1, 100]。 |
max_reencode_times |
最大重编码次数;取值范围 [0, 3]。 |
qpmap_en |
QP Map 使能。 |
max_qp |
P/B 帧最大 QP;取值范围 [0, 51]。 |
min_qp |
P/B 帧最小 QP;取值范围 [0, 51]。 |
max_i_qp |
I 帧最大 QP;取值范围 [0, 51]。 |
min_i_qp |
I 帧最小 QP;取值范围 [0, 51]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
44 hi_mapi_venc_h264_avbr_param
【说明】 H.264 AVBR 模式详细码率控制参数。
【定义】
typedef struct {
td_s32 change_pos;
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_bool qpmap_en;
td_s32 min_still_percent;
td_u32 max_still_qp;
td_u32 min_still_psnr;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_u32 min_qp_delta;
td_u32 motion_sensitivity;
} hi_mapi_venc_h264_avbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
change_pos |
QP 调节起始位置比;取值范围 [50, 100]。 |
min_ip_ratio |
I/P 帧最小比例;取值范围 [1, 100]。 |
max_ip_ratio |
I/P 帧最大比例;取值范围 [1, 100]。 |
max_reencode_times |
最大重编码次数;取值范围 [0, 3]。 |
qpmap_en |
QP Map 使能。 |
min_still_percent |
静态场景最小码率百分比;取值范围 [5, 100]。 |
max_still_qp |
静态场景 I 帧最大 QP;取值范围 [0, 51]。 |
min_still_psnr |
保留字段,当前无效。 |
max_qp |
P/B 帧最大 QP;取值范围 [0, 51]。 |
min_qp |
P/B 帧最小 QP;取值范围 [0, 51]。 |
max_i_qp |
I 帧最大 QP;取值范围 [0, 51]。 |
min_i_qp |
I 帧最小 QP;取值范围 [0, 51]。 |
min_qp_delta |
帧级最小 QP 与 MinQp 的差值;取值范围 [0, 4]。 |
motion_sensitivity |
运动灵敏度;取值范围 [0, 100]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
45 hi_mapi_venc_h264_qvbr_param
【说明】 H.264 QVBR 模式详细码率控制参数。
【定义】
typedef struct {
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_bool qpmap_en;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_s32 bit_percent_ul;
td_s32 bit_percent_ll;
td_s32 psnr_fluctuate_ul;
td_s32 psnr_fluctuate_ll;
} hi_mapi_venc_h264_qvbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
min_ip_ratio |
I/P 帧最小比例;取值范围 [1, 100]。 |
max_ip_ratio |
I/P 帧最大比例;取值范围 [1, 100]。 |
max_reencode_times |
最大重编码次数;取值范围 [0, 3]。 |
qpmap_en |
QP Map 使能。 |
max_qp |
P/B 帧最大 QP;取值范围 [0, 51]。 |
min_qp |
P/B 帧最小 QP;取值范围 [0, 51]。 |
max_i_qp |
I 帧最大 QP;取值范围 [0, 51]。 |
min_i_qp |
I 帧最小 QP;取值范围 [0, 51]。 |
bit_percent_ul |
码率上限比例;取值范围 [30, 180]。 |
bit_percent_ll |
码率下限比例;取值范围 [30, 180],不可大于 bit_percent_ul。 |
psnr_fluctuate_ul |
PSNR 上限波动阈值;取值范围 [18, 40]。 |
psnr_fluctuate_ll |
PSNR 下限波动阈值;取值范围 [18, 40],不可大于 psnr_fluctuate_ul。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
46 hi_mapi_venc_h264_cvbr_param
【说明】 H.264 CVBR 模式详细码率控制参数。
【定义】
typedef struct {
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_bool qpmap_en;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_u32 min_qp_delta;
td_u32 max_qp_delta;
td_u32 extra_bit_percent;
td_u32 long_term_stat_time_unit;
} hi_mapi_venc_h264_cvbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
min_ip_ratio |
I/P 帧最小比例;取值范围 [1, 100]。 |
max_ip_ratio |
I/P 帧最大比例;取值范围 [1, 100]。 |
max_reencode_times |
最大重编码次数;取值范围 [0, 3]。 |
qpmap_en |
QP Map 使能。 |
max_qp |
P/B 帧最大 QP;取值范围 [0, 51]。 |
min_qp |
P/B 帧最小 QP;取值范围 [0, 51]。 |
max_i_qp |
I 帧最大 QP;取值范围 [0, 51]。 |
min_i_qp |
I 帧最小 QP;取值范围 [0, 51]。 |
min_qp_delta |
帧级最小 QP 差值;取值范围 [0, 4]。 |
max_qp_delta |
帧级最大 QP 差值;取值范围 [0, 4]。 |
extra_bit_percent |
超目标码率时可额外分配的码率比例;取值范围 [0, 1000]。 |
long_term_stat_time_unit |
长期统计时间单位,单位秒;取值范围 [1, 1800]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
47 hi_mapi_venc_h265_cbr_param
【说明】 H.265 CBR 模式详细码率控制参数。
【定义】
typedef struct {
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_s32 max_reencode_times;
td_bool qpmap_en;
hi_mapi_venc_rc_qp_map_mode qpmap_mode;
} hi_mapi_venc_h265_cbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
min_ip_ratio |
I/P 帧最小比例;取值范围 [1, 100]。 |
max_ip_ratio |
I/P 帧最大比例;取值范围 [1, 100]。 |
max_qp |
最大 QP;取值范围 [0, 51]。 |
min_qp |
最小 QP;取值范围 [0, 51]。 |
max_i_qp |
I 帧最大 QP;取值范围 [0, 51]。 |
min_i_qp |
I 帧最小 QP;取值范围 [0, 51]。 |
max_reencode_times |
最大重编码次数;取值范围 [0, 3]。 |
qpmap_en |
QP Map 使能。 |
qpmap_mode |
QP Map 模式,详见 hi_mapi_venc_rc_qp_map_mode。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
48 hi_mapi_venc_h265_vbr_param
【说明】 H.265 VBR 模式详细码率控制参数。
【定义】
typedef struct {
td_s32 change_pos;
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_bool qpmap_en;
hi_mapi_venc_rc_qp_map_mode qpmap_mode;
} hi_mapi_venc_h265_vbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
change_pos |
QP 调节起始位置比;取值范围 [50, 100]。 |
min_ip_ratio |
I/P 帧最小比例;取值范围 [1, 100]。 |
max_ip_ratio |
I/P 帧最大比例;取值范围 [1, 100]。 |
max_reencode_times |
最大重编码次数;取值范围 [0, 3]。 |
max_qp |
P/B 帧最大 QP;取值范围 [0, 51]。 |
min_qp |
P/B 帧最小 QP;取值范围 [0, 51]。 |
max_i_qp |
I 帧最大 QP;取值范围 [0, 51]。 |
min_i_qp |
I 帧最小 QP;取值范围 [0, 51]。 |
qpmap_en |
QP Map 使能。 |
qpmap_mode |
QP Map 模式。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
49 hi_mapi_venc_h265_avbr_param
【说明】 H.265 AVBR 模式详细码率控制参数。
【定义】
typedef struct {
td_s32 change_pos;
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_s32 min_still_percent;
td_u32 max_still_qp;
td_u32 min_still_psnr;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_u32 min_qp_delta;
td_u32 motion_sensitivity;
td_bool qpmap_en;
hi_mapi_venc_rc_qp_map_mode qpmap_mode;
} hi_mapi_venc_h265_avbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
change_pos |
QP 调节起始位置比;取值范围 [50, 100]。 |
min_ip_ratio |
I/P 帧最小比例;取值范围 [1, 100]。 |
max_ip_ratio |
I/P 帧最大比例;取值范围 [1, 100]。 |
max_reencode_times |
最大重编码次数;取值范围 [0, 3]。 |
min_still_percent |
静态场景最小码率百分比;取值范围 [5, 100]。 |
max_still_qp |
静态场景 I 帧最大 QP;取值范围 [0, 51]。 |
min_still_psnr |
保留字段。 |
max_qp |
P/B 帧最大 QP;取值范围 [0, 51]。 |
min_qp |
P/B 帧最小 QP;取值范围 [0, 51]。 |
max_i_qp |
I 帧最大 QP;取值范围 [0, 51]。 |
min_i_qp |
I 帧最小 QP;取值范围 [0, 51]。 |
min_qp_delta |
帧级最小 QP 差值;取值范围 [0, 4]。 |
motion_sensitivity |
运动灵敏度;取值范围 [0, 100]。 |
qpmap_en |
QP Map 使能。 |
qpmap_mode |
QP Map 模式。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
50 hi_mapi_venc_h265_qvbr_param
【说明】 H.265 QVBR 模式详细码率控制参数。
【定义】
typedef struct {
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_bool qpmap_en;
hi_mapi_venc_rc_qp_map_mode qpmap_mode;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_s32 bit_percent_ul;
td_s32 bit_percent_ll;
td_s32 psnr_fluctuate_ul;
td_s32 psnr_fluctuate_ll;
} hi_mapi_venc_h265_qvbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
min_ip_ratio |
I/P 帧最小比例;取值范围 [1, 100]。 |
max_ip_ratio |
I/P 帧最大比例;取值范围 [1, 100]。 |
max_reencode_times |
最大重编码次数;取值范围 [0, 3]。 |
qpmap_en |
QP Map 使能。 |
qpmap_mode |
QP Map 模式。 |
max_qp |
P/B 帧最大 QP;取值范围 [0, 51]。 |
min_qp |
P/B 帧最小 QP;取值范围 [0, 51]。 |
max_i_qp |
I 帧最大 QP;取值范围 [0, 51]。 |
min_i_qp |
I 帧最小 QP;取值范围 [0, 51]。 |
bit_percent_ul |
码率上限比例;取值范围 [30, 180]。 |
bit_percent_ll |
码率下限比例;取值范围 [30, 180]。 |
psnr_fluctuate_ul |
PSNR 上限波动阈值;取值范围 [18, 40]。 |
psnr_fluctuate_ll |
PSNR 下限波动阈值;取值范围 [18, 40]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
51 hi_mapi_venc_h265_cvbr_param
【说明】 H.265 CVBR 模式详细码率控制参数。
【定义】
typedef struct {
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_bool qpmap_en;
hi_mapi_venc_rc_qp_map_mode qpmap_mode;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_u32 min_qp_delta;
td_u32 max_qp_delta;
td_u32 extra_bit_percent;
td_u32 long_term_stat_time_unit;
} hi_mapi_venc_h265_cvbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
min_ip_ratio |
I/P 帧最小比例;取值范围 [1, 100]。 |
max_ip_ratio |
I/P 帧最大比例;取值范围 [1, 100]。 |
max_reencode_times |
最大重编码次数;取值范围 [0, 3]。 |
qpmap_en |
QP Map 使能。 |
qpmap_mode |
QP Map 模式。 |
max_qp |
P/B 帧最大 QP;取值范围 [0, 51]。 |
min_qp |
P/B 帧最小 QP;取值范围 [0, 51]。 |
max_i_qp |
I 帧最大 QP;取值范围 [0, 51]。 |
min_i_qp |
I 帧最小 QP;取值范围 [0, 51]。 |
min_qp_delta |
帧级最小 QP 差值;取值范围 [0, 4]。 |
max_qp_delta |
帧级最大 QP 差值;取值范围 [0, 4]。 |
extra_bit_percent |
超目标码率时可额外分配的比例;取值范围 [0, 1000]。 |
long_term_stat_time_unit |
长期统计时间单位,单位秒;取值范围 [1, 1800]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
52 hi_mapi_venc_svac3_cbr_param
【说明】
SVAC 3.0 CBR 模式详细码率控制参数(结构与 hi_mapi_venc_h265_cbr_param 相同)。
【定义】
typedef struct {
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_s32 max_reencode_times;
td_bool qpmap_en;
hi_mapi_venc_rc_qp_map_mode qpmap_mode;
} hi_mapi_venc_svac3_cbr_param;
【成员】
各成员含义与 hi_mapi_venc_h265_cbr_param 一致。
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
53 hi_mapi_venc_svac3_vbr_param
【说明】
SVAC 3.0 VBR 模式详细码率控制参数(结构与 hi_mapi_venc_h265_vbr_param 相同)。
【定义】
typedef struct {
td_s32 change_pos;
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_bool qpmap_en;
hi_mapi_venc_rc_qp_map_mode qpmap_mode;
} hi_mapi_venc_svac3_vbr_param;
【成员】
各成员含义与 hi_mapi_venc_h265_vbr_param 一致。
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
54 hi_mapi_venc_svac3_avbr_param
【说明】
SVAC 3.0 AVBR 模式详细码率控制参数(结构与 hi_mapi_venc_h265_avbr_param 相同)。
【定义】
typedef struct {
td_s32 change_pos;
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_s32 min_still_percent;
td_u32 max_still_qp;
td_u32 min_still_psnr;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_u32 min_qp_delta;
td_u32 motion_sensitivity;
td_bool qpmap_en;
hi_mapi_venc_rc_qp_map_mode qpmap_mode;
} hi_mapi_venc_svac3_avbr_param;
【成员】
各成员含义与 hi_mapi_venc_h265_avbr_param 一致。
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
55 hi_mapi_venc_svac3_qvbr_param
【说明】
SVAC 3.0 QVBR 模式详细码率控制参数(结构与 hi_mapi_venc_h265_qvbr_param 相同)。
【定义】
typedef struct {
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_bool qpmap_en;
hi_mapi_venc_rc_qp_map_mode qpmap_mode;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_s32 bit_percent_ul;
td_s32 bit_percent_ll;
td_s32 psnr_fluctuate_ul;
td_s32 psnr_fluctuate_ll;
} hi_mapi_venc_svac3_qvbr_param;
【成员】
各成员含义与 hi_mapi_venc_h265_qvbr_param 一致。
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
56 hi_mapi_venc_svac3_cvbr_param
【说明】
SVAC 3.0 CVBR 模式详细码率控制参数(结构与 hi_mapi_venc_h265_cvbr_param 相同)。
【定义】
typedef struct {
td_u32 min_ip_ratio;
td_u32 max_ip_ratio;
td_s32 max_reencode_times;
td_bool qpmap_en;
hi_mapi_venc_rc_qp_map_mode qpmap_mode;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_u32 min_qp_delta;
td_u32 max_qp_delta;
td_u32 extra_bit_percent;
td_u32 long_term_stat_time_unit;
} hi_mapi_venc_svac3_cvbr_param;
【成员】
各成员含义与 hi_mapi_venc_h265_cvbr_param 一致。
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
57 hi_mapi_venc_mjpeg_cbr_param
【说明】 MJPEG CBR 模式详细码率控制参数。
【定义】
【成员】
| 成员名称 | 描述 |
|---|---|
max_qfactor |
最大 Qfactor;取值范围 [1, 99]。 |
min_qfactor |
最小 Qfactor;取值范围 [1, 99],不可大于 max_qfactor。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
58 hi_mapi_venc_mjpeg_vbr_param
【说明】 MJPEG VBR 模式详细码率控制参数。
【定义】
typedef struct {
td_s32 change_pos;
td_u32 max_qfactor;
td_u32 min_qfactor;
} hi_mapi_venc_mjpeg_vbr_param;
【成员】
| 成员名称 | 描述 |
|---|---|
change_pos |
Qfactor 调节起始位置比;取值范围 [50, 100]。 |
max_qfactor |
最大图像质量;取值范围 [1, 99]。 |
min_qfactor |
最小图像质量;取值范围 [1, 99],不可大于 max_qfactor。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_venc_rc_param。
59 hi_mapi_venc_intra_refresh_mode / hi_mapi_venc_intra_refresh
【说明】 帧内刷新模式枚举及帧内刷新参数。
【定义】
typedef enum {
HI_MAPI_VENC_INTRA_REFRESH_ROW = 0,
HI_MAPI_VENC_INTRA_REFRESH_COLUMN,
HI_MAPI_VENC_INTRA_REFRESH_BUTT
} hi_mapi_venc_intra_refresh_mode;
typedef struct {
td_bool refresh_enable;
hi_mapi_venc_intra_refresh_mode intra_refresh_mode;
td_u32 refresh_num;
td_u32 req_i_qp;
} hi_mapi_venc_intra_refresh;
【成员】
hi_mapi_venc_intra_refresh_mode 枚举成员:
| 枚举值 | 描述 |
|---|---|
HI_MAPI_VENC_INTRA_REFRESH_ROW |
按行刷新。 |
HI_MAPI_VENC_INTRA_REFRESH_COLUMN |
按列刷新。 |
HI_MAPI_VENC_INTRA_REFRESH_BUTT |
哨兵值,无效。 |
hi_mapi_venc_intra_refresh 成员:
| 成员名称 | 描述 |
|---|---|
refresh_enable |
是否启用帧内刷新;TD_TRUE 启用,默认 TD_FALSE。 |
intra_refresh_mode |
帧内刷新模式。 |
refresh_num |
每次刷新的行/列数。 |
req_i_qp |
I 帧 QP 值;取值范围 [0, 51]。 |
【注意事项】
- 通过
HI_MAPI_VENC_CMD_INTRA_REFRESH设置/获取。
【相关数据类型及接口】
HI_MAPI_VENC_CMD_INTRA_REFRESH;hi_mapi_venc_set_param、hi_mapi_venc_get_param。
60 hi_mapi_venc_hierarchical_qp
【说明】 分层 QP 参数,支持最多 4 层的 QP 偏移与帧数配置。
【定义】
typedef struct {
td_bool hierarchical_qp_en;
td_s32 hierarchical_qp_delta[HI_MAPI_VENC_HIERARCHICAL_QP_NUM];
td_s32 hierarchical_frame_num[HI_MAPI_VENC_HIERARCHICAL_QP_NUM];
} hi_mapi_venc_hierarchical_qp;
【成员】
| 成员名称 | 描述 |
|---|---|
hierarchical_qp_en |
分层 QP 使能;TD_TRUE 启用。 |
hierarchical_qp_delta[] |
各层相对第 0 层 P 帧的 QP 偏移;HI_MAPI_VENC_HIERARCHICAL_QP_NUM = 4,取值范围 [-10, 10]。 |
hierarchical_frame_num[] |
各层帧数;取值范围 [0, 5]。 |
【注意事项】
- 通过
HI_MAPI_VENC_CMD_HIERARCHICAL_QP设置/获取。
【相关数据类型及接口】
HI_MAPI_VENC_CMD_HIERARCHICAL_QP;hi_mapi_venc_set_param、hi_mapi_venc_get_param。
5 错误码
模块编号
mod=3,错误码基址0xA3038000。
| 错误代码 | 宏定义 | 描述 |
|---|---|---|
0xA3038002 |
HI_MAPI_VENC_EHANDLE_ILLEGAL |
通道号无效。 |
0xA3038003 |
HI_MAPI_VENC_EILLEGAL_PARAM |
参数非法。 |
0xA3038004 |
HI_MAPI_VENC_EEXIST |
资源已存在。 |
0xA3038005 |
HI_MAPI_VENC_EUNEXIST |
资源不存在。 |
0xA3038006 |
HI_MAPI_VENC_ENULL_PTR |
空指针。 |