标准形态下,在Host上调用DVPP接口的流程如图1所示,流程描述如下:
- pyACL初始化:调用pyACL提供的acl.init接口实现初始化pyACL,详细描述请参见pyACL API参考章节。
- pyACL运行管理资源申请:pyACL中运行管理资源涉及Device、Context、Stream,详细申请的流程请参见接口调用流程章节。
- 调用acl.himpi.sys_init接口实现DVPP初始化。
- 用户首先需要调用acl.himpi.venc_create_chn函数创建完通道。
- 调用acl.himpi.venc_start_chn函数通知通道准备开始编码。
- 之后用户就可以调用acl.himpi.venc_send_frame函数发送待编码的码流。
- 用户就可以调用acl.himpi.venc_get_stream函数获取编码结果。
- 用户需要注意的是,编码结果数据使用完成之后,需要及时调用acl.himpi.venc_release_stream函数释放buffer。否则会因编码buffer用完导致后续编码无法进行。
- 当用户不需发送图像到目的通道继续编码时,需要调用acl.himpi.venc_stop_chn函数通知该通道不再接收新的输入图片。
- 最后,当用户完成所有编码之后,需要调用acl.himpi.venc_destroy_chn释放编码通道以及内部内存资源。
- 调用acl.himpi.sys_exit接口实现DVPP去初始化。
- pyACL运行管理资源释放:pyACL中运行管理资源涉及Device、Context、Stream,详细释放的流程请参见接口调用流程章节。
- pyACL去初始化:调用pyACL提供的acl_finalize接口实现pyACL去初始化,详细描述请参见pyACL API参考章节。
图1 调用DVPP接口的流程