1. 功能概述¶
本sample提供全链路场景1V,4V,7V使用演示,实现单路及多路VIO接入,逐级经过ISP、PYM、BPU、CODEC模块处理。
1.1. 软件架构说明¶
软件控制图如下:

1.2. 硬件数据流说明¶
每个场景的图中已经标明硬件连接关系。
1V 场景如下:

4V 场景如下:

7V 场景如下:

1.24.1.3. 代码位置及目录结构¶
目录结构如下:
1.4. API流程说明¶
API流程图如下:

需要注意的是,当将pym数据帧送入VPU编码时,对应buffer会先放入buf_ctl的状态队列中,当该帧编码完成后才会释放。
主干代码:
获取及处理数据的代码:
1.24.2. 编译¶
1.24.2.1. 编译环境¶
1.24.2.2. 编译说明¶
本sample编译依赖VPS系统相关的头文件:
使用BPU时,需要BPU模型处理相关的头文件:
使用VPU时,需要MM&CODEC系统相关的头文件:
使用hbplayer时,需要hbplayer相关的头文件:
sample编译依赖的库:
使能BPU编译依赖的库:
备注
使能MM&Codec编译依赖的库:
使能hbplayer编译依赖的库:
编译命令:
3. 运行¶
3.1. 支持平台¶
Matrix 6E/M
3.2. 硬件环境搭建¶
接口连接如下:

模组:联创模组OVX8B、OVX3C,SENSING-ISX031。
具体型号:
主前视联创x8b:LCE_M24F121D12_S1ROT8E5;
窄前视联创x8b:LCE_M24F30D12_S1ROT8E5;
后视联创x3c:LCE_GM24F60D12_S2T0E6;
4个周视联创x3c:LCE_GM24F103D12_S2R8T0E6;
4个环视森云isx031c:SENSING_M24F190D4_SOROT7。
连接方式:
一路OVX8B FOV120通过4合1线束的A口连接到板子的DES1;
一路OVX8B FOV30通过4合1线束的C口连接到板子的DES1;
一路OVX3C FOV60通过4合1线束的D口连接到板子的DES1;
四路OVX3C FOV100通过通过4合1线束的ABCD口连接到板子的DES2;
四路ISX031C通过4合1线束的ABCD口连接到板子的DES3。
1.24.3.3. 板端部署及配置¶
需要用到的资源:
- 需要用到的配置文件位于板端: /app/sample/S83_Sample/S83E06_Tros/vio_full_link_sample/cfg/;
- 需要用到的资源文件位于板端: /app/sample/S83_Sample/S83E06_Tros/vio_full_link_sample/res/;
- 需要用到的第三方库位于板端: /app/sample/S83_Sample/S83E06_Tros/vio_full_link_sample/lib/;
3.4. 运行指南¶
3.4.1. 运行方法¶
1V测试命令,可直接执行提供的sample运行脚本:
或使用完整指令:
4V测试命令,可直接执行提供的sample运行脚本:
或使用完整指令:
7V测试命令,可直接执行提供的sample运行脚本:
或使用完整指令:
3.4.2. 运行命令行说明¶
下面的表格是具体参数的说明:
参数名 | 用法 | 是否必需 |
|---|---|---|
-v | 指定VIO的配置文件 | 是 |
-c | 指定camera的配置文件 | 是 |
-O | 指定hbm模型文件 | 使能BPU时必需 |
-m | pipeline的掩码,bit0代表pipeline0,bit1代表pipeline1,以此类推 | 是 |
-o | 进行BPU处理的掩码,bit0代表处理pipeline0,bit1代表处理pipeline1,以此类推 | 使能BPU时必需 |
-j | 进行CODEC处理的掩码,bit0代表处理pipeline0,bit1代表处理pipeline1,以此类推 | 使能codec时必需 |
-l | 循环获取数据帧数 | 否 |
-s | 开启dump,代表需要保存到当前运行目录下的数据帧数 | 否 |
-f | 指定需要进行VPU硬件编码保存的数据帧数 | 否 |
-t | 程序运行时间(单位毫秒,不建议与-l参数同时使用,使用其中一个即可) | 否 |
-e | 默认为-1,代表不使用hbplayer;当使能codec或bpu时,代表指定某个PYM DS层作为输入,根据sample默认配置需设置为0 | 使能BPU或codec时必需 |
例如上面的1V测试命令:
备注
BPU对于NV12格式图像处理要求Stride 32对齐,通常Pym输出数据作为BPU输入就需要Stride 32对齐,如果不对齐,BPU处理结果会不正确。 如果要强制停止,需要两次ctrl+c操作。原因是hobot player使用了libevent库,第一次ctrl+c操作被它吃掉了。
1.24.3.4.3. 运行结果说明¶
sample运行时,通过下面的命令可以看到每个IP的帧率:
sample运行时的主要执行日志如下:
成功加载hbm模型:
里面的相应的版本号会变动,仅供参考。
Dump、CODEC编码:

运行结束正常退出:

查看运行时的帧率如下:
1V场景如下:

4V场景如下:

7V场景如下:

1.24.3.4.4. 看图结果¶
本sample支持通过hbplayer工具进行看图。首先在hbplayer中设置平台、IP地址等相关参数:

执行命令后,点击hbplayer左侧栏中的connect即可完成连接并在右侧界面看到实时全链路场景图像:
1V场景如下:

4V场景如下:

7V场景如下:

拿1V举例,Dump的YUV图像以及VPU硬件编码输出的H265视频保存在当前目录下:

拿1V举例,查看H265视频:
