开发流程

基于LXHPL和KA200的具体应用开发流程如下图所示。

应用开发流程

图 应用开发流程

用户应用开发流程具体描述如下:

  1. 准备开发和运行环境。

  2. 业务场景分析:根据用户真实的业务场景分析会用到LXHPL提供的模块(例如数据跨设备传输、图像预处理和模型推理),确定功能后,再明确涉及的命令或接口,详情参见 开发场景分析

  3. 创建代码目录:在开发应用前,需要先创建目录,存放应用所涉及的代码文件(包括.c/.cpp源文件和.h/.hpp头文件)、编译脚本以及测试输入源(例如视频、图像),详情请参见 创建代码目录

  4. 开发应用:应用开发流程可以概括为三大流程,即初始化流程(Initialization),循环处理流程(Loop)和去初始化流程(Deinitialization)。

    1. 初始化流程:具体包含创建Context、Stream,创建Event,各模块输出资源申请,模型加载,解封装初始化,视频图像编解码器初始化,详情请参见 Runtime资源初始化。初始化流程中必须在用户线程中创建Context和Stream,Context是所有Runtime资源的依赖,Stream是异步任务的载体,两者有其一未初始化都会导致业务异常。

    2. 循环处理流程:包括多媒体解封装、数据跨侧传输(C2S)、视频/图像解码、图像预处理、模型推理、数据后处理、视频/图像编码、数据跨侧传输(S2C)等流程,循环处理流程中各步骤异步任务下发之后,可以选择在Stream中调用lynStreamAddAsyncCallback接口进行各异步操作对应的输入输出资源释放。

    3. 去初始化流程:具体包括各模块输出资源释放(例如初始化阶段为各模块申请的内存池资源)、关闭编解码器、卸载模型、解封装去初始化、销毁Event、销毁Stream、销毁Context。此步骤中的可选流程具体要看初始化流程中是否初始化过相关模块,如果初始化过,则必须对相关资源按顺序进行销毁。

  5. 编译应用程序,详情参见 LynSDK样例使用指导