hi_mpi_venc_get_mod_param
hi_mpi_venc_release_stream
函数功能
释放码流缓存。
约束说明
- 如果通道未创建,则返回错误码HI_ERR_VENC_UNEXIST。
- 此接口应当和 hi_mpi_venc_get_stream 配对起来使用,用户获取码流后必须及时释放已经获取的码流缓存,否则可能会导致码流buffer满,影响编码器编码,并且用户必须按先获取先释放的顺序释放已经获取的码流缓存。
- 在编码通道复位以后,所有未释放的码流包均无效,不能再使用或者释放这部分无效的码流缓存。
- 释放无效的码流会返回失败HI_ERR_VENC_ILLEGAL_PARAM。
函数原型
hi_s32 hi_mpi_venc_release_stream(hi_venc_chn chn, hi_venc_stream *stream)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 编码通道号。 Atlas 200/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。 |
| stream | 输入 | 编码后的输出码流数据的指针。 如果stream为空,则返回错误码 HI_ERR_VENC_NULL_PTR。 |
返回值说明
- 0:成功
- 非0:失败,参见VENC视频编码/JPEGE图片编码返回码
参考资源
接口调用流程及示例,参见JPEGE图片编码、VENC视频编码。
hi_mpi_venc_send_frame
函数功能
发送原始图像进行视频或图像编码。
约束说明
- 视频输入的原始图像大小必须与编码通道的大小保持一致;JPEGE输入的原始图像大小小于或等于编码通道的大小。
- 调用该接口发送图像,用户需要保证编码通道已创建且开启接收输入图片。
- 编码时,输入内存需要在调用hi_mpi_venc_get_stream接口获取结果之后才能进行释放。
- 视频编码,对输入、输出的约束请参见VENC功能及约束说明。
- 图像编码,对输入、输出的约束请参见JPEGE功能及约束说明。
函数原型
hi_s32 hi_mpi_venc_send_frame(hi_venc_chn chn, const hi_video_frame_info *frame, hi_s32 milli_sec)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 编码通道号。 Atlas 200/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。 |
| frame | 输入 | 原始图像信息的指针。 |
| milli_sec | 输入 | 超时时间,单位是毫秒。 - -1:阻塞方式 - 0:非阻塞方式 - >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的milli_sec参数值为1,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。 |
返回值说明
- 0:成功
- 非0:失败,参见VENC视频编码/JPEGE图片编码返回码
参考资源
接口调用流程及示例,参见JPEGE图片编码、VENC视频编码。
hi_mpi_venc_set_mod_param
函数功能
设置编码相关的模块参数。
约束说明
此接口在通道创建前调用,如果通道已经创建,则返回错误码HI_ERR_VENC_NOT_PERM。
函数原型
hi_s32 hi_mpi_venc_set_mod_param(const hi_venc_mod_param *mod_param)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| mod_param | 输入 | 编码模块参数指针。 |
返回值说明
- 0:成功
- 非0:失败,参见VENC视频编码/JPEGE图片编码返回码
参考资源
接口调用流程及示例,参见JPEGE图片编码、VENC视频编码。
hi_mpi_venc_get_mod_param
函数功能
获取编码相关的模块参数。
函数原型
hi_s32 hi_mpi_venc_get_mod_param(hi_venc_mod_param *mod_param)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| mod_param | 输出 | 编码模块参数指针。 |
返回值说明
- 0:成功
- 非0:失败,参见VENC视频编码/JPEGE图片编码返回码
参考资源
接口调用流程及示例,参见JPEGE图片编码、VENC视频编码。
hi_mpi_venc_request_idr
函数功能
请求IDR帧。
约束说明
- 如果通道未创建,则返回失败。
- 接受IDR(Instantaneous Decoder Refresh)帧请求后,当instant=0时,则在帧率控制的下一帧编出IDR帧,当instant=1时,则立即编出IDR帧,不受帧率控制约束。
- IDR帧请求,只支持H.264/H.265编码协议。
- 由于目前的使用场景目标帧率与源帧率的值一致,所以此接口不受帧率控制影响当instant设置为0或1时,都是每调用一次接口即编出一个IDR,调用频繁会影响码流帧率和码率的稳定,使用时需要注意。
- 当GOP模式为Smartp或B帧模式(暂不支持B帧模式)下,请求IDR帧会延时生效。
函数原型
hi_s32 hi_mpi_venc_request_idr(hi_venc_chn chn, hi_bool instant)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 编码通道号。 Atlas 200/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。 |
| instant | 输入 | 是否使能立即编码IDR帧。 |
返回值说明
- 0:成功
- 非0:失败,参见VENC视频编码/JPEGE图片编码返回码
hi_mpi_venc_get_fd
函数功能
获取编码通道对应的文件句柄。
约束说明
在进程退出时会自动关闭文件句柄,回收资源。
函数原型
hi_s32 hi_mpi_venc_get_fd(hi_venc_chn chn)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 编码通道号。 Atlas 200/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。 |
返回值说明
- 0或正数值:有效返回值
- 非正数值:无效返回值
参考资源
接口调用流程及示例,参见JPEGE图片编码、VENC视频编码。
hi_mpi_venc_close_fd
函数功能
关闭编码通道对应的设备文件句柄。
不支持该接口。
约束说明
用户可以不调用本接口,在应用程序执行完成,对应的进程退出后,系统会自动清理句柄;如果用户主动调用本接口,必须确保在调用hi_mpi_venc_destroy_chn接口之后再调用。此接口不能与其它 MPI 接口同时调用,用户必须保证此接口与其它接口在时间上是串行调用的。
函数原型
hi_s32 hi_mpi_venc_close_fd(hi_venc_chn chn)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 编码通道号。 Atlas 200/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。 |
返回值说明
- 0:关闭成功
- 非0:失败,参见VENC视频编码/JPEGE图片编码返回码
在线提单