跳到主要内容

MPP 扩展类功能

视频 YUV 显示屏预览功能

Sample 描述

Sample 名称sample_vo
功能概述从yuv原始数据文件xxx.yuv中读取视频帧,标记时间戳,送给mpi_vo组件显示。
sample_vo也负责视频帧的帧管理,接收mpi_vo组件归还的视频帧,重装新帧,再送入mpi_vo组件显示。
组件依赖mpp_hw_display
mpp_vo
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_vo
输入文件/mnt/extsd/resources/Tennis_1920x1080_24.yuv
测试需要的yuv 文件,可以用ffmpeg 转换得到,转换指令:
./ffmpeg -i two_video.mp4 Tennis_1920x1080_24.yuv
输出文件

参数配置

yuv_file_path:指定yuv原始数据文件的路径
pic_width:指明yuv原始数据文件的视频帧的宽度
pic_height:指明yuv原始数据文件的视频帧的高度
display_width:指定输出图像的宽度
display_height:指定输出图像的高度
pic_format:指明yuv原始数据文件的视频帧的像素格式
disp_type:指定显示设备类型(hdmi, lcd, cvbs)
frame_rate:指定播放yuv原始数据文件的帧率

测试通路

image-20250301151055463

测试指令

./sample_vo -path ./sample_vo.conf

退出测试

播放完yuv 文件后自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. LCD屏幕显示播放yuv 文件的视频图像正常。

验证 UILayer 的格式

Sample 描述

Sample 名称sample_UILayer
功能概述测试UILayer的格式。
sample自己创建指定格式的RGB图,设置给UILayer。
组件依赖mpp_hw_display
mpp_vo
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_UILayer
输入文件
输出文件

参数配置

pic_width:源图的宽度
pic_height:源图的高度
display_width:指定输出图像的宽度
display_height:指定输出图像的高度
bitmap_format:源图格式

测试通路

image-20250301151249644

测试指令

./sample_UILayer -path ./sample_UILayer.conf

退出测试

一直显示,需要“ctrl+c”手动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. LCD屏幕显示绿色和蓝色矩形填充。

G2D常用功能

Sample 描述

Sample 名称sample_g2d
功能概述该sample 通过直接处理image图片来演示g2d模块常用功能的使用方式(旋转)。g2d模块支持最大2K输入输出。
组件依赖
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_g2d
输入文件/mnt/extsd/sample_g2d/board_1920x1080.nv12
输出文件/mnt/extsd/sample_g2d/dst.yuv

参数配置

g2d 模块功能的选择主要通过参数的组合来实现,如:

1) rotate
配置conf文件中的dst_rotate 配置项,设置要旋转的角度:0:none,1:90,2:180,3:270.
Note: 此时 dst_width 及 dst_height配置项要分别与src_width及src_height一致,否则
会同时启动scale功能,但此时会产生错误结果(g2d模块不能同时做rotation及scaling).

2) scale --> V821 配备的 G2D 不支持该功能
配置conf文件中的dst_rotate为0(disable rotation),
配置dst_width dst_height目标大小。

3) cut --> V821 配备的 G2D 不支持该功能
cut功能用来截取部分src内容,具体区域由
src_rect_x =
src_rect_y =
src_rect_w =
src_rect_h =
设定,注意:若无效启动rotation, dst_rotate = 0

4) pixel format格式转换 --> V821 配备的 G2D 不支持该功能
该功能通过参数:
pic_format = nv21
dst_format = nv12
来实现。

测试指令

./sample_g2d -path ./sample_g2d.conf

退出测试

测试完后可以自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用YUView 软件分析生成的YUV文件正常。

单路 CE 加解密功能

Sample 描述

Sample 名称sample_virvi2venc2ce
功能概述该sample 测试一路编码的加解密。
mpi_vi 和mpi_venc 组件绑定组合。mpi_vi采集图像,直接传输给mpi_venc 进行编码,在进行ce加密解密。
组件依赖mpp_vi
mpp_venc
libopenssl
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_virvi2venc2ce
输入文件
输出文件/mnt/extsd/AW_VirviEncoder.H264

参数配置

auto_test_count:指定自动测试次数
encoder_count:指定每次测试编码帧数
dev_num:指定VI Dev设备节点
src_width:指定camera采集的图像宽度
src_height:指定camera采集的图像高度
src_frame_rate:指定camera采集图像的帧率
dest_encoder_type:指定编码格式
dest_width:指定编码后图像的宽度
dest_height:指定编码后图像的高度
dest_frame_rate:指定编码帧率
dest_bit_rate:指定编码码率
dest_pic_format:指定编码后图像的格式
output_file_path:指定编码后视频文件的路径

测试通路

image-20250301151756773

测试指令

./sample_virvi2venc2ce -path ./sample_virvi2venc2ce.conf

退出测试

达到指定测试次数后自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用VLC 软件分析生成的raw文件正常。

两路 CE 加解密功能

Sample 描述

Sample 名称sample_twinchn_virvi2venc2ce
功能概述该sample 同时测试两路编码的加解密。
两路mpi_vi 和mpi_venc 组件分别绑定组合。mpi_vi采集图像,直接传输给mpi_venc 进行编码,在进行ce加密解密。
组件依赖mpp_vi
mpp_venc
libopenssl
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_twinchn_virvi2venc2ce
输入文件
输出文件/mnt/extsd/isp0_1920_1080_60_ctx_saved.bin

参数配置

dev_node_main:指定主路vipp 设备号。
dev_node_sub:指定子路vipp 设备号。
src_size_main:指定主路源大小。1080:1920x1080,720:1280x720,640:640x360。
src_size_sub:指定子路源大小。1080:1920x1080,720:1280x720,640:640x360。
video_dst_file_main:指定主路目标文件路径。
video_dst_file_sub:指定子路目标文件路径。
video_framerate_main:指定主路视频帧率,单位:fps。
video_framerate_sub:指定子路视频帧率,单位:fps。
video_bitrate_main:指定主路视频码率,单位:bps。
video_bitrate_sub:指定子路视频码率,单位:bps。
video_size_main:指定主路视频目标大小。1080:1920x1080,720:1280x720,640:640x360。
video_size_sub指定子路视频目标大小。1080:1920x1080,720:1280x720,640:640x360。
video_encoder_main:指定主路编码格式。"H.264"
video_encoder_sub:指定子路编码格式。"H.264"
rc_mode_main:指定主路rc mode。0:CBR,1:VBR,2:FIXQP,3:QPMAP。
rc_mode_sub:指定子路rc mode。0:CBR,1:VBR,2:FIXQP,3:QPMAP。
enable_fast_enc_main:指定主路fast enc 是否开启。1:enable,0:disable。
enable_fast_enc_sub:指定子路fast enc 是否开启。1:enable,0:disable。
enable_roi_main:指定主路roi 是否开启。1:enable,0:disable。
enable_roi_sub:指定子路roi 是否开启。1:enable,0:disable。
video_duration_main:指定主路视频时长,单位:s。
video_duration_sub:指定子路视频时长,单位:s。
test_duration:指定测试时长,单位:s。
color2grey:彩转灰。yes:开启,no:关闭。
3dnr:3D去噪声。yes:开启,no:关闭。

测试通路

image-20250301151622930

测试指令

./sample_twinchn_virvi2venc2ce -path ./sample_twinchn_virvi2venc2ce.conf

退出测试

测试达到设定的时间后自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用 VLC 软件分析生成的raw文件正常。

USB 摄像头解码非绑定送显

Sample 描述

Sample 名称sample_uvc2vdec_vo
功能概述测试mpi_uvc->mpi_vdec的绑定方式传输数据,mpi_vdec->mpi_vo采用非绑定方式。
从mpi_uvc组件获取mjpeg编码格式图片,交给mpi_vdec组件解码,配置vdec解码缩小,并且大小图两路输出,mpi_vdec的输出采用非绑定方式,app主动获取大小图,再交给mpi_vo组件的两个图层分别显示。
组件依赖mpp_uvc
mpp_hw_display
mpp_vo
mpp_vdec
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_uvcin/sample_uvc2vdenc2vo
输入文件
输出文件

参数配置

dev_name: uvc设备字符串
pic_format: uvc输出图像格式
capture_width: uvc输出图像宽度
capture_height: uvc输出图像高度
capture_framerate: uvc采集帧率
decode_sub_out_width: vdec解码输出的小图宽度
decode_sub_out_height: vdec解码输出的小图高度
display_main_x: 主图显示区域的左上角起点坐标x
display_main_y: 主图显示区域的左上角起点坐标y
display_main_width: 主图显示区域宽度
display_main_height: 主图显示区域高度
display_sub_x: 子图显示区域的左上角起点坐标x
display_sub_y: 子图显示区域的左上角起点坐标y
display_sub_width: 子图显示区域宽度
display_sub_height: 子图显示区域高度
test_frame_count: 测试帧数,0代表无限。

测试通路

image-20250301151918818

测试指令

./sample_uvc2vdec_vo -path ./sample_uvc2vdec_vo.conf

退出测试

达到测试帧数后自动退出测试,或者按“ctrl + c”退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. LCD屏幕正常显示。

USB 摄像头解码绑定送显

Sample 描述

Sample 名称sample_uvc2vdenc2vo
功能概述测试mpi_uvc->mpi_vdec的绑定方式传输数据,mpi_vdec->mpi_vo也采用绑定方式。
从mpi_uvc组件获取mjpeg编码格式图片,交给mpi_vdec组件解码,再传给mpi_vo组件显示。
组件依赖mpp_uvc
mpp_hw_display
mpp_vo
mpp_vdec
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_uvcin/sample_uvc2vdenc2vo
输入文件
输出文件

参数配置

dev_name: uvc设备字符串
pic_format: uvc输出图像格式
capture_width: uvc输出图像宽度
capture_height: uvc输出图像高度
capture_framerate: uvc采集帧率
decode_out_width: vdec解码输出图像的宽度
decode_out_height: vdec解码输出图像的高度
display_width:显示宽度
display_height:显示高度
test_duration:测试时间,0代表无限。

测试通路

image-20250301152142759

测试指令

./sample_uvc2vdenc2vo -path ./sample_uvc2vdenc2vo.conf

退出测试

达到测试帧数后自动退出测试,或者按“ctrl + c”退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. LCD屏幕正常显示。

USB 摄像头 YUV 非绑定送显

Sample 描述

Sample 名称sample_uvc_vo
功能概述测试mpi_uvc组件的非绑定方式输出。
从mpi_uvc组件获取yuyv格式(或其他raw格式),交给mpi_vo组件显示。mpi_uvc和mpi_vo组件采用非绑定方式运行。
组件依赖mpp_uvc
mpp_hw_display
mpp_vo
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_uvcin/sample_uvc_vo
输入文件
输出文件

参数配置

dev_name: uvc设备字符串
pic_format: uvc输出图像格式
capture_width: uvc输出图像宽度
capture_height: uvc输出图像高度
display_width:显示宽度
display_height:显示高度
test_frame_count:测试帧数,0代表无限帧数。
brightness:uvc亮度设置
contrast:uvc对比度设置
hue:uvc色度设置
saturation:uvc饱和度设置
sharpness:uvc锐度设置

测试通路

image-20250301152343684

测试指令

./sample_uvc_vo -path ./sample_uvc_vo.conf

退出测试

达到测试帧数后自动退出测试,或者按“ctrl + c”退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. LCD屏幕正常显示。

USB 摄像头 YUV 绑定送显

Sample 描述

Sample 名称sample_uvc2vo
功能概述测试mpi_uvc组件的绑定方式输出。
mpi_uvc组件输出yuyv格式(或其他raw格式)到mpi_vo组件显示。mpi_uvc和mpi_vo组件采用绑定方式连接。
组件依赖mpp_uvc
mpp_hw_display
mpp_vo
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_uvcin/sample_uvc2vo
输入文件
输出文件

参数配置

dev_name: uvc设备字符串
pic_format: uvc输出图像格式
capture_width: uvc输出图像宽度
capture_height: uvc输出图像高度
display_width:显示宽度
display_height:显示高度
test_duration:测试时间,单位秒
brightness:uvc亮度设置
contrast:uvc对比度设置
hue:uvc色度设置
saturation:uvc饱和度设置
sharpness:uvc锐度设置

测试通路

image-20250301152244740

测试指令

./sample_uvc2vo -path ./sample_uvc2vo.conf

退出测试

达到测试帧数后自动退出测试,或者按“ctrl + c”退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. LCD屏幕正常显示。

VI 采集视频数据 UVC 送帧

Sample 描述

Sample 名称sample_uvcout
功能概述读取VI编码MJPEG,由UVC设备输出到电脑(注意:不是获取UVC摄像头的数据,而是把整个板子当作UVC摄像头,将图像送由电脑显示)电脑端使用VLC工具查看。
组件依赖mpp_uvc
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_uvcout
输入文件
输出文件

参数配置

uvc_dev:uvc设备号
vin_dev:摄像头数据采集设备号
cap_format:数据采集格式,nv21, nv12, yu12, yv12
cap_width:图像采集宽度
cap_height:图像采集高度
cap_frame_rate:图像采集帧率
encoder_type:编码类型
enc_frame_quarity:编码质量
enc_width:编码宽度
enc_height:编码高度
enc_frame_rate:编码帧率
enc_bit_rate:编码bit率 4M(4194304) 8M(8388608)
use_eve:是否使用人脸识别,1-使用,0-不使用

测试通路

image-20250301152602445

测试指令

演示 UAC 功能

Sample 描述

Sample 名称sample_uac
功能概述1. UAC1 in: 作为USB麦克风。即板子通过MIC采集音频再通过USB声卡发送至PC
2. UAC1 out: 作为USB音响。即板子通过USB声卡采集电脑播放的音频,再通过板子上的喇叭进行播放
3. 该功能需要内核开启CONFIG_USB_CONFIGFS_F_UAC1选项启用UAC1功能。
组件依赖
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_uac
输入文件sample_ai_pcm.wav
输出文件

参数配置

pcm_file_path = "/mnt/extsd/sample_ai_pcm.wav"
pcm_sample_rate = 48000
pcm_channel_cnt = 1
pcm_bit_width = 16
pcm_frame_size =
pcm_cap_duration = 60
pcm_ai_gain = 23
uac_audio_card_name = "hw:UAC1Gadget"

环境准备和测试步骤:

1. 需要开启内核配置
CONFIG_USB_CONFIGFS_F_UAC1
CONFIG_SND_PROC_FS

2. 执行以下命令打开USB的UAC功能
./setusbconfig-configfs uac1

3. 此时,PC上将会创建一个新的audio(AC接口),同时板端将创建一个新的声卡。
检查声卡的方法:
------------------
cat /proc/asound/cards
0 [sun8iw19codec ]: sun8iw19-codec - sun8iw19-codec
sun8iw19-codec
1 [snddaudio0 ]: snddaudio0 - snddaudio0
snddaudio0
2 [UAC1Gadget ]: UAC1_Gadget - UAC1_Gadget
UAC1_Gadget 0
------------------

其中,“2 [UAC1Gadget ]”就是UAC声卡。
此时,需要修改配置文件sample_uac.conf中uac_audio_card_name为"hw:UAC1Gadget"。

4. 执行sample,测试通路是:mic --> uac --> PC
./sample_uac -path ./sample_uac.conf

5. 在PC上使用音频工具抓取UAC的PCM数据验证测试结果。

测试指令

./sample_uac -path ./sample_uac.conf

退出测试

达到设定的测试时间后,自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 按以上方法在PC上使用音频工具抓取UAC的PCM数据验证测试结果符合预期。

解复用 MP4 文件功能

Sample 描述

Sample 名称sample_demux
功能概述从视频文件(如:test.mp4)中分离出所有的视频、音频、subtitle数据,分别组成对应文件。
组件依赖mpp_demuxer
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_demux
输入文件/mnt/extsd/two_video.mp4
输出文件/mnt/extsd/video.bin
/mnt/extsd/audio.bin

参数配置

src_file:指定原始视频文件的路径
src_size:指定原始视频文件的视频大小,如1080p
seek_position:指定原始视频文件的开始解析位置(ms)
video_dst_file:解析出来的视频数据生成的文件路径
audio_dst_file:解析出来的音频数据生成的文件路径
subtitle_dst_file:解析出来的文字数据生成的文件路径
test_duration: sample一次测试时间(单位:s)

测试通路

image-20250301153500242

测试指令

./sample_demux -path ./sample_demux.conf

退出测试

测试完文件two_video.mp4,可以自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 生成解析文件 video.bin 和audio.bin。

修复 MP4 文件功能

Sample 描述

Sample 名称sample_file_repair
功能概述该sample 用来修复mp4 文件。
组件依赖mpp_muxer
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_file_repair
输入文件/mnt/extsd/1080p.mp4
输出文件覆盖原文件 /mnt/extsd/1080p.mp4

测试指令

./sample_file_repair 1080p.mp4

退出测试

修复完源文件,会自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用VLC 软件播放修复后的mp4文件正常。

人形检测功能

Sample 描述

Sample 名称sample_pdet
功能概述演示人形侦测功能
组件依赖mpp_vi
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_pdet
输入文件
输出文件

参数配置

测试参数的说明:
dev_num: 指定VI Dev设备节点
pic_width: 指定camera采集的图像宽度
pic_height: 指定camera采集的图像高度
frame_rate: 指定camera采集图像的帧率
pic_format: 指定camera采集图像像素格式
color_space:指定颜色空间类型
enable_wdr_mode: 是否启用WDR模式
drop_frm_num:指定VIPP丢帧的帧数

save_pic_dev: 指定保存视频帧的VI Dev设备节点
save_pic_buffer_len:写卡缓存buffer长度
save_pic_buffer_num:写卡缓存buffer个数

de_input_w:de回写输入图像宽度
de_input_h:de回写输入图像高度
de_input_frame_format:输入图像格式
de_output_w:de回写输出图像宽度
de_output_h:de回写输出图像高度
de_output_frame_format:输出图像格式 # only support rgb888 and yuv444

pdet_model_pathname:人形检测模型文件路径
pdet_input_width:人形检测算法输入图像宽度
pdet_input_height:人形检测算法输入图像高度
pdet_input_channel:人形检测算法输入图像通道数

run_loop:人形检测推理次数
print_cost_time:是否打开耗时打印

test_duration: 测试时长。

测试指令

./sample_pdet -path ./sample_pdet.conf

退出测试

达到设定的测试时间后,自动退出测试。

测试结果

 1.测试程序运行正常,测试过程没有异常打印。
2.打印出现人形识别坐标和计算耗时

识别二维码配网功能

Sample 描述

Sample 名称sample_identifyQRCode
功能概述演示识别二维码功能,若是 wifi 配网二维码,会去执行对应的wifi 配网操作
组件依赖mpp_vi
zbar
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_identifyQRCode
输入文件
输出文件

参数配置

dev_num: 指定VI Dev设备节点 
src_width: 指定camera采集的图像宽度
src_height: 指定camera采集的图像高度
frame_rate: 指定camera采集图像的帧率
src_format: 指定camera采集图像像素格式
color_space:指定颜色空间类型
drop_frm_num:指定VIPP丢帧的帧数

测试通路

image-20250301154534716

测试指令

./sample_identifyQRCode -path ./sample_identifyQRCode.conf

退出测试

正常识别WIFI二维码,并成功执行WIFI 配网操作

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 能正常识别WIFI二维码,并成功执行WIFI 配网操作