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原始数据文件的帧率
测试通路
测试指令
./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:源图格式
测试通路
测试指令
./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:指定编码后视频文件的路径
测试通路
测试指令
./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:关闭。
测试通路
测试指令
./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代表无限。
测试通路
测试指令
./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代表无限。
测试通路
测试指令
./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锐度设置
测试通路
测试指令
./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锐度设置
测试通路
测试指令
./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-不使用
测试通路
测试指令
演示 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)
测试通路
测试指令
./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丢帧的帧数
测试通路
测试指令
./sample_identifyQRCode -path ./sample_identifyQRCode.conf
退出测试
正常识别WIFI二维码,并成功执行WIFI 配网操作
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 能正常识别WIFI二维码,并成功执行WIFI 配网操作