1. 功能概述¶
本文的demo sample实现ISP模块回灌功能,将raw图通过ISP处理后得到YUV图(支持NV12和NV16),sample默认输出NV12格式。 基本的回灌模式不加载效果库,可用来验证ISP通路性能,只支持raw12格式的raw图。 dummy sensor回灌模式通过hb_dev.json指定效果库和raw格式,可用来验证ISP处理效果,支持raw8、raw12、raw16、raw24的raw图。 sample支持帧率统计,默认100帧统计一次。
1.1. 软件架构说明¶
本文的demo sample采用回灌流程,即从系统存储中读取文件,作为ISP的输入图像。 调用VIO API实现整个数据通路初始化并完成ISP处理。 效果库通过sensor驱动加载,回灌关注效果时使用dummy sensor,不需要接模组。

1.2. 代码位置及目录结构¶
本sample的代码位于工程目录:{sdk_dir}/test/samples/platform_samples/source/S83_Sample/S83E04_Module/isp_sample;
目录结构如下:
根目录包含 Kconfig 和外部接口的 Makefile , Kconfig 用于控制该demo是否加入整体编译;cfg目录中包含了VPM配置文件、CAM配置文件(dummy);res目录中包含了raw图像资源文件;src目录下的Makefile用于src目录下的编译, isp_sample.c 是main入口的所在文件。
1.3. API流程说明¶
API流程图如下:

hb_vio_get_data接口通过传入Data type获取对应buffer,支持单独获取raw、单独获取yuv、组合获取raw+yuv(组合获取时yuv数据在plane0和plane1,raw数据在plane2)。 Data type需要与json文件中的isp_dma_output_format配置匹配,请参考: VPM配置。
代码主逻辑如下:
2. 编译¶
2.1. 编译环境¶
本sample的编译环境使用SDK中的build工具,请参考: Build类型介绍。
2.2. 编译说明¶
本sample编译依赖VPS系统相关的头文件:
编译依赖的库有如下:
编译命令:
3. 运行¶
3.1. 支持平台¶
J6X Matrix
3.2. 板端部署及配置¶
刷写系统软件镜像后,本sample的可执行文件位于板端:/app/sample/S83_Sample/S83E04_Module/isp_sample/bin/;
可能需要用到的资源:
- VPM配置文件 vpm_config.json CAM配置文件 hb_j6dev.json 位于板端:/app/sample/S83_Sample/S83E04_Module/isp_sample/cfg/;
- 参考输入raw图像位于板端:/app/sample/S83_Sample/S83E04_Module/isp_sample/res/。
3.3. 运行指南¶
3.3.1. 运行命令行说明¶
isp_sample :应用程序名字。
下面的表格是具体参数的说明:
参数名 | 用法 | 是否必需 |
|---|---|---|
-v | 指定VPM的配置文件 | 是 |
-c | 指定CAM的配置文件 | 否 |
-y | 指定输入的raw图像文件 | 是 |
-m | 指定pipeline id,按bit指定 | 是 |
-l | 指定每个pipeline运行的循环次数 | 是 |
-d | 指定保存输出YUV图像文件次数 | 否 |
帮助菜单:
3.3.2. 运行方法¶
回灌执行命令:
dummy回灌执行命令:
3.3.3. 运行结果说明¶
dump文件保存在执行目录,执行日志如下:
运行结果显示:
