跳转至

sample_vie 快速入门

1. 概述与作用

sample_vie 是 Hi3516CV610 MPP 套件中用于演示 Video Input(VI)模块端到端路由能力的样例程序。它将 VI、VPSS(Video Process Sub-System)、VENC(Video ENCoder,输出 H.265)与 ISP(Image Signal Processor,控制 AE/AWB/BNR/DRC)串联为完整通路并存储码流,重点演示 VI 在不同业务场景下的工作模式:linear 与 WDR(Wide Dynamic Range,2-to-1 行模式)、online 与 offline 路由、FPN(Fixed Pattern Noise)标定与校正、LDC v3(Lens Distortion Correction)配合 90/270 度固定旋转、pipe 与 VPSS 的低延时行模式(line_cnt=300)、user-pic 待机帧(YUV 文件或背景色)、双 sensor 路由、ISP Run-Be(Back-End 运行模式用于模式切换)以及分辨率切换(4M → 1080P)。

对于需要在 Hi3516CV610 上评估 VI 路由、低延时、畸变矫正、WDR 切换等能力的开发者而言,本样例是最直接的入门途径,也是验证 Hi3516CV610 VI pipe 在不同 sensor 与 DDR 配置下行为的标准参考实现。

VI 是整个 MPP 视频链路的入口,其工作模式直接决定后续 VPSS、VENC 能拿到的数据格式与时序。分为online 模式和offline 模式。online 模式下 VI 与 VPSS 直连无中间缓存,延时最低但灵活性差;offline 模式下 VI 先写入 DDR 再由 VPSS 读取,可灵活复用但延时较高。以RAW数据为例对于online 模式和offline 模式的示意如下图:

online模式

image-20260820171505891

offline 模式

image-20260820172242892

WDR 模式需要 sensor 支持 2-to-1 行输出,且 DDR 容量要足够容纳长曝光与短曝光两路 raw。本样例通过交互式按键让用户在运行时选择 VI/VPSS 路由组合,便于快速对照不同配置下的画质与延时差异。

FPN(Fixed Pattern Noise)是 sensor 在暗光下固定的模式噪声,由像素增益不一致导致。本样例 case 2 演示 FPN 标定与校正流程:先关闭 ISP 自动校正、关闭镜头、采集若干帧暗帧求平均得到 FPN raw 数据,落盘为 FPN_frame_*.raw;然后按回车启用 ISP 内置 FPN 校正,后续帧会减去 FPN raw 抵消固定噪声。该流程适合需要在极暗光下监控的场景,例如夜间停车场或仓库。LDC v3 是 Hi3516CV610 内置的镜头畸变矫正算法,可矫正广角镜头的桶形与枕形畸变,配合旋转适合车载或门铃等竖装场景。低延时模式通过让 VI pipe 与 VPSS 按行输出而非按帧输出,将端到端延时从帧级降到行级(line_cnt=300 约 10ms),适合对延时敏感的实时监控与直播场景。

本文默认sensor为HY006-3814-0011,如需适配新sensor,请参考《Sensor 调试指南》和《Sensor适配说明》

2. 执行准备

在编译本样例之前,请参照Hi3516CV610环境搭建指南和快速上手指南完成编译环境的搭建。

2.1 编译

进入样例目录执行 make 即可完成编译:

cd samples/mpp/vie && make

编译成功之后,在当前目录下会生成一个sample_vie的可执行文件,可以放社区支持的开发板上运行。

image-20260820104410420

2.2 加载 KO

ko加载脚本位于 output/mpp/ko/load_ko,有两个脚本,load3516cv610_20s和load3516cv610_20s_debug。区别为load3516cv610_20s_debug脚本会打开 logmpp_show=1(日志记录)、proc_show=1(proc信息打印),并将 mem_process_isolation 置为 0(不启用进程间mmz隔离)。

由于当前版本不支持进程间mmz隔离,因此需要在load3516cv610_20s脚本中将 mem_process_isolation 置为 0或者使用load3516cv610_20s_debug脚本,此处以load3516cv610_20s_debug脚本为例,20s内存大小为128MB,默认分配为 32MB OS、96MB MMZ,加载命令如下:

./load3516cv610_20s_debug -i

可以通过-h命令查看具体用法:

./load3516cv610_20s_debug -h
Usage:  ./load3516cv610_20s_debug [-option] [-sensor0~1] 
options:
    -i                       insert modules
    -r                       remove modules
    -a                       remove modules first, then insert modules
    -sensor0~1 sensor_name   config sensor type    [default: hy006_3814_0011]
    -mmz_start               config MMZ start addr [default: 0x42000000]
    -mmz_size                config MMZ mem size [unit: M, default: 96M]
    -ir_auto                 config ir_auto enable [default: 0]
    -profile                 config sys_profile [default: 0]
    -h                       help information
Available sensors:hy006_3814_0011 bt1120/bt656/bt601
for example: ./load3516cv610_20s_debug -i -sensor0 hy006_3814_0011 -sensor1 hy006_3814_0011 -mmz_start 0x42000000 -mmz_size 96M -ir_auto 1

加载后可以通过lsmod查看ko加载情况:

image-20260820104249254

如果需要调整os和mmz的大小,需要参考《内存布局调整指南》对内存大小进行调整。

如果是使用社区默认提供的镜像,这些ko已经打包到文件系统中,烧录到单板上后位于/ko目录下,在系统启动后会自动加载这些ko。

2.3 运行时依赖

在运行样例前,需要提前准备:

  • 指定运行时依赖的so库路径

MPP样例依赖的so库位于soc/libs/musl下,需要将该目录下的so库拷贝到开发板上(或将这些so库所在的目录挂载到开发板上),并指定运行时依赖库的环境变量,假设这些so库位于/mnt/libs/,执行如下命令:

```shell
export LD_LIBRARY_PATH=/mnt/libs/:$LD_LIBRARY_PATH
```

如果是使用社区默认提供的镜像,这些so库已经打包到文件系统中,烧录到单板上后位于/usr/lib目录下,该目录是系统默认搜索目录,不需要执行export LD_LIBRARY_PATH命令去指定。

  • 启动MPP服务

当前MPP媒体模块处于用户态,通过一个独立进程提供相关接口的调用服务,该进程位于samples/mpp/sdk_server下,执行如下命令即可生成sdk_server可执行文件:

```shell
cd samples/mpp/sdk_server && make
```

在单板上执行./sdk_server &即可启动MPP服务,并在后台运行。

  1. sdk_server同样依赖soc/libs/musl下的so库,因此也需要参照上述export LD_LIBRARY_PATH指定路径;
  2. 如果是使用社区默认提供的镜像,sdk_server进程已经打包到文件系统中,烧录到单板上后位于/usr/bin目录下,并在系统启动时会自动启动sdk_server。

可以使用ps查看进程是否运行(下图以默认镜像中启动sdk_server为例,其位于/usr/bin目录下):

image-20260820104643010

  • 样例运行时候需要的资源文件

本样例部分case依赖samples/mpp/vie/UsePic_2560x1440_sp420.yuv文件,需要将此文件放置于本样例运行的同目录下。

2.4 运行样例

调用语法为 ./sample_vie <index>,index 为单数字 0–9。多数 case 会交互式提示 VI/VPSS 模式(0=ONLINE/ONLINE … 3=OFFLINE/OFFLINE),运行中按回车可切换状态或退出。可以执行./sample_vie -h查看用法。

3. 支持的 Case 列表

对完整 10 个 case 说明如下:

3.1 case 0 all mode route

对接SENSOR,启动VI-VPSS-VENC数据流通路,是最常用的入门 case。

调用命令

./sample_vie 0

会出现VI/VPSS在线/离线模式选择,如下提示,根据实际需要进行选择即可。

vi vpss mode list: 
    (0) VI_ONLINE_VPSS_ONLINE
    (1) VI_ONLINE_VPSS_OFFLINE
    (2) VI_OFFLINE_VPSS_ONLINE
    (3) VI_OFFLINE_VPSS_OFFLINE
please select mode:

运行截图如下:

image-20260820104053742

输出文件

本case会输出 stream_chn0.h265 与 stream_chn1.h265两个码流文件,分辨率分别为4M 、1080P。文件位置为执行sample_vie样例的目录。

image-20260820104913771

控制台日志

本case运行后,会打印please select mode:提示用户选择在线或离线场景,正常运行起来后会打印 press enter key to exit! 说明可以通过回车结束样例。

运行结束成功时打印绿色 program exit normally!,失败时打印红色 program exit abnormally!。

若 VI 绑定失败或 sensor 点亮失败,日志会先打印具体错误码再退出。

正确性判断
  • 用 ls -l ./stream_chnX.h265 (备注:X表示0或者1,下同)确认文件大小随运行时间持续增长;
  • 用 ffplay ./stream_chnX.h265 或 ffprobe ./stream_chnX.h265 播放/分析码流,或导出文件使用播放器播放(例如VLC),码流文件能正常播放,画面不花屏、无明显丢帧。

软件配置流程

  1. 配置SYS和VB,包含VI-VPSS工作模式,AIISP模式以及VB大小及个数等;
  2. 配置MIPIRX,配置LANE属性及分配模式;
  3. 配置VI,包含DEV、BIND、GROUP、PIPE和CHN的配置;
  4. 配置ISP;
  5. 配置VPSS;
  6. 配置VENC。

注意:本文后续章节无特殊说明起通路流程与此次保持一致,不再重复描写。

数据流

VI在线VPSS在线

VI在线VPSS离线

VI离线VPSS在线

VI离线VPSS离线

3.2 case 1 wdr route

WDR(Wide Dynamic Range,宽动态范围)是一种图像处理技术,主要用于改善在高对比度光照环境下拍摄的图像质量。在一些场景下,比如室内室外光线差异极大的地方,或者强光源直射的地方,普通的摄像头可能会因为过曝或欠曝而无法清晰地捕捉到所有细节。WDR技术通过结合不同曝光时间的多张图像来生成一张最终的图像,在这张图像中,亮部和暗部的细节都能得到较好的保留。这样就能使得在极端光照条件下也能获得更加自然、清晰的图像效果。

线性模式与WDR模式效果对比:

注意:该case需要支持WDR的sensor,默认sensor为HY006-3814-0011不支持WDR。

调用命令

./sample_vie 1

会出现VI/VPSS在线/离线模式选择,如下提示,根据实际需要进行选择即可

vi vpss mode list: 
    (0) VI_ONLINE_VPSS_ONLINE
    (1) VI_ONLINE_VPSS_OFFLINE
    (2) VI_OFFLINE_VPSS_ONLINE
    (3) VI_OFFLINE_VPSS_OFFLINE
please select mode:
输出文件

本case会输出 stream_chn0.h265 与 stream_chn1.h265两个码流文件,分辨率分别为4M 、1080P。文件位置为执行sample_vie样例的目录。

控制台日志

本case运行后,会打印please select mode:提示用户选择在线或离线场景,正常运行起来后会打印 press enter key to exit! 说明可以通过回车结束样例。

运行结束成功时打印绿色 program exit normally!,失败时打印红色 program exit abnormally!。

仅当 sensor 与 DDR 支持时方可运行,默认的HY006-3814-0011会直接报 "Not supported"然后退出。

[sample_vie_wdr]-604: Not supported by current sensor0
program exit abnormally!
正确性判断
  • 用 ls -l ./stream_chnX.h265 (备注:X表示0或者1,下同)确认文件大小随运行时间持续增长;
  • 用 ffplay ./stream_chnX.h265 或 ffprobe ./stream_chnX.h265 播放/分析码流,或导出文件使用播放器播放(例如VLC),码流文件能正常播放,画面不花屏、无明显丢帧。

软件配置流程

  • 需要配置profile=1

该功能由sdk_server服务进程提供,默认情况下profile=0,因此需要打开它重新编译sdk_server,具体方法如下

1. 修改文件`samples/mpp/common/sdk_init`函数`sys_init`,修改后如下:

```c
static td_s32 sys_init(td_void)
{
    td_u32 sys_profile = 1;
    return ot_sys_mod_init(sys_profile);
}
```

2. 进入`samples/mpp/sdk_server`执行`make clean;make`重编`sdk_server`
3. 将新的`sdk_server`替换掉单板当前运行的`sdk_server`后,重新启动`sdk_server`
  • 默认SENSOR HY006_3814_0011_MIPI_4M_30FPS_10BIT不支持WDR模式,但是sample中预留HY006_3814_0011_MIPI_4M_30FPS_10BIT_WDR2TO1配置,若用户接入一个可支持WDR时序的SENSOR,可根据预留配置做适配。主要适配点包括(搜索关键字HY006_3814_0011_MIPI_4M_30FPS_10BIT_WDR2TO1适配即可):

    • 在Makefile中链接SENSOR库;
    • 适配MIPI_RX属性;
    • 适配ISP_PUB_ATTR属性;
    • 适配VI、ISP宽高;
    • 适配VI的PIPE路数;
    • 适配WDR模式。

接口配置顺序:

  1. 根据SENSOR型号及序列确认WDR模式,例如帧WDR、行WDR;
  2. 根据数据场景选择VI是否在线;
  3. 若VI在线且处于行WDR模式,可通过配置卷绕行cache_line来节省内存;
  4. 根据用户需求配置其他参数;
  5. VI绑定之后创建PIPE之前,调用ss_mpi_vi_set_wdr_fusion_grp_attr设置WDR组属性。

数据流

VI在线VPSS在线

VI在线VPSS离线

VI离线VPSS在线

VI离线VPSS离线

3.3 case 2 fpn calibrate & correct

固定模式噪声(Fixed Pattern Noise,FPN)是一种常见的图像传感器噪声类型,这种噪声通常是由于传感器内部的物理缺陷或不均匀性造成的。FPN可能导致图像中出现明显的条纹或斑点,影响图像的清晰度和对比度。Hi3516CV610提供去FPN功能,去除SENSOR产生的固定噪声,图像效果更佳。

未去FPN

去FPN效果

调用命令

./sample_vie 2

启动后会有 press enter key to ... 提示,可以通过按回车从 FPN 标定切换到 FPN 校正,运行截图如下:

image-20260820161807735

输出文件

本case会输出FPN 校准标定 RAW 文件FPN_frame_<W>x<H>_<bit>bit.raw,该文件可作为后续离线复用 FPN 校正数据的来源。

控制台日志

本case运行起来后会打印 hit enter key ,start calibrate! ,提示可以通过按回车后启用 FPN 标定。

标定完成后,打印 save dark frame file: ./FPN_frame_<W>x<H>_<bit>bit.raw!,提示已写入数据。

打印press enter key to enable fpn correction!提示可以通过按回车后启用 FPN 校正。

打印 press enter key to exit! 说明可以通过回车结束样例。

运行结束成功时打印绿色 program exit normally!,失败时打印红色 program exit abnormally!。

正确性判断
  • 检查 ./FPN_frame_*.raw 大小应约为 W*H*2 字节(16bpp bayer),按回车后码流画面噪声应明显降低。

软件配置流程

  1. 正常起VI-VPSS-VENC通路;
  2. 调用ss_mpi_vb_create_pool接口创建池子,并调用ss_mpi_vb_get_blk接口准备黑帧VB;
  3. 调用ss_mpi_vi_disable_chn接口关闭通道;
  4. 调用ss_mpi_isp_fpn_calibrate接口启动标定;
  5. 标定结束后会输出一张黑帧,并保存到sample的同级目录下,再调用ss_mpi_vi_enable_chn接口使能通道;
  6. 读取保存的黑帧,并调用ss_mpi_isp_set_fpn_attr启动校正。

注意事项

  • 写黑帧信息时会调用fwrite函数往DDR写数据,若同时写出多张黑帧可能会造成系统OOM。
  • 如果标定时未遮住镜头,会把采集到的图像当成噪点处理,标定后图像呈现粉色。

数据流

3.4 case 3 ldc rotation

对SENSOR采集的数据或者用户送的数据进行固定角度旋转和LDC校正处理。

原始图

旋转+LDC校正效果图

调用命令

./sample_vie 3

运行截图如下:

image-20260820161600803

输出文件

本case会输出 stream_chn0.h265 与 stream_chn1.h265两个码流文件,分辨率分别为4M 、1080P。文件位置为执行sample_vie样例的目录。

控制台日志

本case运行后,会打印提示 LDC 与旋转开关的使能和禁止。

press enter key to enable ldc and rotation!

press enter key to disable ldc and rotation!

运行结束成功时打印绿色 program exit normally!,失败时打印红色 program exit abnormally!。

正确性判断
  • 画面畸变应被矫正,并整体旋转 90 度。

软件配置流程

  1. 正常起VI-VPSS-VENC通路;
  2. 选择所需的LDC类型,调用ss_mpi_vi_set_chn_ldc_attr启动LDC校正功能;
  3. 选择所需的旋转角度,调用ss_mpi_vi_set_chn_rotation启动旋转功能。

注意事项

  • 仅支持VI-VPSS离线模式下使用;
  • 仅支持固定角度旋转。

数据流

3.5 case 4 low delay

本case演示端到端低延时行模式,适合对延时敏感的实时监控。在离线模式下,low_delay功能可降低数据接收到发送至后端模块之间的延时,即降低端到端延时。

关闭低延时效果:

开启低延时效果:

调用命令

./sample_vie 4

运行截图如下:

image-20260820162333768

输出文件

本case会输出 stream_chn0.h265 码流文件,文件位置为执行sample_vie样例的目录。

控制台日志

本case运行后,会打印使能和禁止pipe低延时功能。

press enter key to enable pipe low delay!

press enter key to disable pipe low delay!

运行结束成功时打印绿色 program exit normally!,失败时打印红色 program exit abnormally!。

正确性判断
  • 执行cat /proc/umap/vi 命令观察 pipe 与 VPSS 行模式生效,line_cnt为300,端到端延时显著低于常规模式。

    line 模式生效的 /proc/umap/vi 输出示例

软件配置流程

  1. 正常起VI-VPSS-VENC通路;
  2. 调用ss_mpi_vi_set_pipe_low_delay接口使能vi_pipe低延时功能;
  3. 调用ss_mpi_vpss_set_chn_low_delay接口使能vpss_chn低延时功能。

注意事项

vi_chn支持输入输出低延时,但是vpss仅支持输出低延时,因此VI绑定VPSS时不能使能vi_chn低延时。

数据流

关闭低延时:

开启低延时:

3.6 case 5 user pic

本case循环演示两种待机类型,适合待机或隐私遮挡场景。当用户数据流不稳定或者sensor断流时,使能用户图片功能显示自定义的图片,可以是logo等。

调用命令

./sample_vie 5

启动后会有 press enter key to ... 提示,可以通过按回车在 FRAME 与 BGCOLOR 两种 user-pic 类型间循环。运行截图如下:

image-20260820162800251

输出文件

本case会输出 stream_chn0.h265 码流文件,文件位置为执行sample_vie样例的目录。

控制台日志

本case运行后,会连续打印提示使能和禁止用户图片功能。

press enter key to enable user pic!

press enter key to disable user pic!

press enter key to enable user pic!

press enter key to disable user pic!

使能用户图片功能时候会默认加载 UsePic_2560x1440_sp420.yuv 作为待机帧,如果未检测到该文件则报错退出。

运行结束成功时打印绿色 program exit normally!,失败时打印红色 program exit abnormally!。

正确性判断
  • UsePic_2560x1440_sp420.yuv 缺失会失败;存在时码流中应可见待机帧或纯背景色两种类型循环切换。

软件配置流程

  1. 正常起VI-VPSS-VENC通路;
  2. 调用ss_mpi_vi_set_pipe_user_pic接口设置需要显示的图片;
  3. 调用ss_mpi_vi_set_pipe_3dnr_attr接口关闭3DNR功能;
  4. 调用ss_mpi_vi_enable_pipe_user_pic接口使能用户图片功能。

注意事项

sample默认开启3DNR功能,使能用户图片前需要确保关闭3DNR,否则会因为有参考导致残影。

数据流

3.7 case 6 two sensor

VI有两个设备,可支持接入两路Sensor,适合双目或多路监控。本case演示两路Sensor接入的场景。

调用命令

./sample_vie 6
输出文件

本case的每个sensor对应两个输出文件,sensor0输出 stream_chn0.h265 和stream_chn1.h265码流文件,sensor1输出 stream_chn2.h265 和stream_chn3.h265码流文件,文件位置为执行sample_vie样例的目录。

控制台日志

如果只接入了一路sensor,会有如下错误打印,但是样例仍然会继续运行,未接入sensor的那一路码流文件为空。

[Func]:cis_write_reg [Line]:352 [Info]:I2C_WRITE error!, addr = 0x103, data = 0x1

运行结束成功时打印绿色 program exit normally!,失败时打印红色 program exit abnormally!。

正确性判断
  • 每路 sensor 独立输出 stream_chn0/1.h265 、stream_chn2/3.h265 码流文件,且两路画面同步。

软件配置流程

  1. 确认两路SENSOR的I2C号,SENSOR0使用I2C0,默认SENSOR1使用I2C1;
  2. 确认MIPI LANE分配模式为LANE_DIVIDE_MODE_1, 并且确认两路的LANE_ID,使用ioctl(fd, OT_MIPI_SET_DEV_ATTR, combo_dev_attr)接口配置MIPI属性;
  3. VI和ISP需要开启两路DEV和两路PIPE,DEV分别绑定PIPE,其他流程和单路一致。

注意事项

要求 i2c0/i2c1、sensor0/sensor1、MIPI0/MIPI1 引脚预先配置好,否则第二个 sensor 无法点亮,样例会在初始化阶段失败。建议先参考硬件原理图确认 i2c0/i2c1 与 MIPI0/MIPI1 的 GPIO 复用配置正确后再运行。

数据流

3.8 case 7 switch mode

本case的主要展现线性模式和WDR模式的切换过程,用户应用于实际环境的ISO值切换工作模式。

注意:该case需要支持WDR的sensor,默认sensor为HY006-3814-0011不支持WDR。

调用命令

./sample_vie 7

会出现VI/VPSS在线/离线模式选择,如下提示,根据实际需要进行选择即可。

vi vpss mode list: 
    (0) VI_ONLINE_VPSS_ONLINE
    (1) VI_ONLINE_VPSS_OFFLINE
    (2) VI_OFFLINE_VPSS_ONLINE
    (3) VI_OFFLINE_VPSS_OFFLINE
please select mode:
输出文件

本case会输出 stream_chn0.h265 与 stream_chn1.h265两个码流文件,文件位置为执行sample_vie样例的目录。

控制台日志

打印如下信息提示进行切换

press enter key to switch!

运行结束成功时打印绿色 program exit normally!,失败时打印红色 program exit abnormally!。

仅当 sensor 与 DDR 支持时方可运行,默认的HY006-3814-0011会直接报 "Not supported"然后退出。

[sample_vie_wdr]-604: Not supported by current sensor0
program exit abnormally!
正确性判断
  • 用 ls -l ./stream_chnX.h265 (备注:X表示0或者1,下同)确认文件大小随运行时间持续增长;
  • 用 ffplay ./stream_chnX.h265 或 ffprobe ./stream_chnX.h265 播放/分析码流,或导出文件使用播放器播放(例如VLC),码流文件能正常播放,画面不花屏、无明显丢帧。

软件配置流程

  1. 正常启动VI和ISP线性通路;
  2. 正常退出VI通路,不退出ISP通路;
  3. 设置为WDR模式;
  4. 启动VI DEV、BIND、GROUP相关通路;
  5. 确认WDR切换是否完成(wdr_switch_finish),参考ss_mpi_isp_query_inner_state_info接口;
  6. 切换成功后启动VI PIPE及CHN相关通路。

数据流

线性数据流

切换WDR模式的数据流

说明: VI在线VPSS离线、VI离线VPSS在线、VI离线VPSS离线和VI在线VPSS在线流程和数据流基本一致,这里不一一描述。

3.9 case 8 switch resolution

本case主要展现前端模块MIPIRX和ISP动态裁剪分辨率的过程,从源数据进行裁剪,降低后端模块的带宽。

调用命令

./sample_vie 8

会出现VI/VPSS在线/离线模式选择,如下提示,根据实际需要进行选择即可。

vi vpss mode list: 
    (0) VI_ONLINE_VPSS_ONLINE
    (1) VI_ONLINE_VPSS_OFFLINE
    (2) VI_OFFLINE_VPSS_ONLINE
    (3) VI_OFFLINE_VPSS_OFFLINE
please select mode:

运行截图如下:

image-20260820164006817

输出文件

本case会输出 stream_chn0.h265 与 stream_chn1.h265两个码流文件,文件位置为执行sample_vie样例的目录。

控制台日志

打印如下信息提示进行切换

press enter key to switch!

运行结束成功时打印绿色 program exit normally!,失败时打印红色 program exit abnormally!。

正确性判断
  • 用 ls -l ./stream_chnX.h265 (备注:X表示0或者1,下同)确认文件大小随运行时间持续增长;
  • 用 ffplay ./stream_chnX.h265 或 ffprobe ./stream_chnX.h265 播放/分析码流,或导出文件使用播放器播放(例如VLC),码流文件能正常播放,画面不花屏、无明显丢帧。

软件配置流程

  1. 正常启动VI-VPSS-VENC通路;
  2. 正常退出VI-VPSS-VENC通路,但不退出ISP;
  3. 更改MIPI_RX, ISP, VI, ISP, VENC模块的通路分辨率;
  4. 启动VI部分通路: DEV、BIND、GROUP;
  5. 确认分辨率切换是否完成(res_switch_finish),参考ss_mpi_isp_query_inner_state_info接口;
  6. 切换成功后启动VI完整通路(PIPE、CHN);
  7. 启动VPSS-VENC通路。

数据流

裁剪前分辨率为SENSOR输入分辨率

裁剪后分辨率为1920*1080

说明:

VI在线VPSS离线、VI离线VPSS在线、VI离线VPSS离线和VI在线VPSS在线流程和数据流基本一致,这里不一一描述。

3.10 case 9 isp run be switch mode

本case演示在抓raw之后,离线调用BE处理的场景,ISP推荐使用run_be模式。

注意:该case需要支持WDR的sensor,默认sensor为HY006-3814-0011不支持WDR。

调用命令

./sample_vie 9
输出文件

本case会输出 stream_chn0.h265 与 stream_chn1.h265两个码流文件,文件位置为执行sample_vie样例的目录。

控制台日志

运行结束成功时打印绿色 program exit normally!,失败时打印红色 program exit abnormally!。

仅当 sensor 与 DDR 支持时方可运行,默认的HY006-3814-0011会直接报 "Not supported"然后退出。

[sample_vie_wdr]-604: Not supported by current sensor0
program exit abnormally!
正确性判断
  • 用 ls -l ./stream_chnX.h265 (备注:X表示0或者1,下同)确认文件大小随运行时间持续增长;
  • 用 ffplay ./stream_chnX.h265 或 ffprobe ./stream_chnX.h265 播放/分析码流,或导出文件使用播放器播放(例如VLC),码流文件能正常播放,画面不花屏、无明显丢帧。

软件配置流程

  1. 配置VI后,初始化ISP外部寄存器前,设置ISP控制参数中isp_run_wakeup_select为1(BE帧结束中断),参考ss_mpi_isp_set_ctrl_param接口。
  2. 从前往后启动ISP、VPSS、VENC模块。
  3. 从VI PIPE抓raw处理后并送回,参考ss_mpi_vi_get_pipe_frame、ss_mpi_vi_send_pipe_frame接口。
  4. 参考3.8 case7切换WDR模式。

数据流

参考3.8 case7 数据流。

4. 其他

VB配置说明

VB pool 配置在样例源码中静态指定,包含 raw、yuv、chn1 三类池。raw 池用于 VI 写入 sensor 原始数据;yuv 池用于 VPSS 输出帧;chn1 池用于副通道(如 WDR 短曝光帧)。开发者若需调整帧缓存数量或分辨率,可在 sample_comm_vi_* 系列函数中修改 VB 配置后重新编译。运行时可通过 cat /proc/umap/vb 查看 VB pool 占用情况,若 pool 耗尽会导致 VI 或 VPSS 丢帧。