3.4. sample_vse 使用说明
3.4.1. 功能概述
sample_vse 完成 VSE 模块的初始化,配置输入和输出通道的参数,实现1路图像的输出,6路图像的经过缩放、crop 后输出的功能。
3.4.1.1. 软件架构说明
sample_vse 主要依赖 libcam.so libvpf.so libhbmem.so,将 YUV 文件读入 hbm 申请的内存,并传入 VSE 通道做缩小或放大处理,最后将处理好的 YUV 数据 dump 到文件系统中。

3.4.1.2. 数据流说明
测试程序 pipeline 如下所示,仅创建一个 vflow,vflow 仅包含一个 VSE vnode。通过 VSE vnode 内部6个 Channel 实现不同分辨率缩放。

3.4.1.3. 代码位置及目录结构
代码位置
app/samples/platform_samples/sample_vse目录结构
sample_vse/
├── Makefile
└── sample_vse.c
3.4.1.4. API流程说明

3.4.2. 编译部署
3.4.2.1. 编译
进入 sample_vse 目录,执行
make编译输出成果物是 sample_vse 源码目录下的
sample_vse详细程序编译方式请查阅 编译方法 章节
3.4.2.2. 程序部署
把 sample_vse/sample_vse 上传到开发板上之后,运行chmod +x sample_vse命令给程序赋予可执行权限。
3.4.3. 运行
3.4.3.1. 程序运行方法
直接执行程序 ./sample_vse 可以获得帮助信息:
3.4.3.2. 程序参数选项说明
./sample_vse
Usage: sample_vse [OPTIONS]
Options:
-i, --input_file FILE Specify the input file
-w, --input_width WIDTH Specify the input width
-h, --input_height HEIGHT Specify the input height
-f, --feedback Specify feedback mode
-V, --verbose Enable verbose mode
i: 指定输入的YUV文件,测试程序默认使用 NV12 格式
w: 输入 YUV 图像的宽度
h: 输入 YUV 图像的高度
f: 以 feedback 模式运行 VSE 节点(不创建 vflow 流)
3.4.3.3. 运行效果
以输入分辨率为 1280 x 960 的 YUV 图片为例,执行 sample_vse -i 1280x960_NV12.yuv -w 1280 -h 960。
把一张 YUV 图像送入 VSE,并且初始化6个通道,0~4通道执行图像缩小,5通道执行图像放大,并且把处理后的图像保存为 yuv 图像:
0 通道输出输入图像的原分辨率:1280 x 960。
1 通道输出16像素对齐的常用算法图像使用的分辨率:512 x 512。
2 通道输出非16像素对齐的常用算法图像使用的分辨率:224 x 224。
3 通道输出ROI为原图中心点不变,宽、高各裁剪一半,输出图像宽、高等于ROI区域宽高,输出缩小到支持的最小分辨率:64 x 64。
4 通道输出常用算法图像使用的分辨率:672 x 672。
5 通道输出放大到支持的最大分辨率(注意:图像只能最大放到4倍):2560 x 1920。
输出 log 如下:
VSE vnode work mode: vflow
Using input file:1280x960_NV12.yuv, input:1280x960
(read_yuvv_nv12_file):file read(1280x960_NV12.yuv), y-size(1228800)
ichn input width = 1280
ichn input height = 960
hbn_vnode_set_ochn_attr: 0, 1280x960
hbn_vnode_set_ochn_attr: 1, 512x512
hbn_vnode_set_ochn_attr: 2, 224x224
hbn_vnode_set_ochn_attr: 3, 64x64
hbn_vnode_set_ochn_attr: 4, 672x672
hbn_vnode_set_ochn_attr: 5, 2560x1920
运行 Feedback 模式以输入分辨率为 1920 x 1080 的 YUV 图片为例,执行 ./sample_vse -i input_1920x1080_nv12.yuv -w 1920 -h 1080 -f。
输出 log 如下:
VSE vnode work mode: feedback
Using input file:input_1920x1080_nv12.yuv, input:1920x1080
(read_yuvv_nv12_file):file read(input_1920x1080_nv12.yuv), y-size(2073600)
ichn input width = 1920
ichn input height = 1080
hbn_vnode_set_ochn_attr: 0, 1920x1080
hbn_vnode_set_ochn_attr: 1, 512x512
hbn_vnode_set_ochn_attr: 2, 224x224
hbn_vnode_set_ochn_attr: 3, 64x64
hbn_vnode_set_ochn_attr: 4, 672x672
hbn_vnode_set_ochn_attr: 5, 3840x2160
浏览YUV图
请参考Hobot player静态图片章节浏览图像,图像的参数配置说明如下: 按照如下图所示步骤配置选项,其中 file config 里面关注 pic_type 、 yuv_type 、width 和 height 的配置,以
vse_output_nv12_chn0_1280x960_stride_1280.yuv为例, 配置为(PIC_YUV, YUV_NV12, 1280, 960)。
3.4.4. 提示说明
VSE 通道 5 只支持放大,如果输入分辨率小于测试程序 VSE 通道0-4设置的默认分辨率,将出现报错。 例如使用 64x64 图像作为输入,将提示报错信息如下:
[ 51.037647] [L485]vse_ochn_attr_check: Invalid Param attr->target_w: 512, min: 64, max: 64
[ 51.045960] vse_ochn_attr_check failed