Radxa Orion O6
Orion O6是瑞莎(Radxa)在2024年底推出的全球首款基于Arm v9指令集的开发板。该主板搭载此芯科技的P1 SOC芯片,配备12核CPU及10核GPU,并提供8K视频编解码及多路4K显示的支持。瑞莎为该开发板提供丰富的操作系统支持,包括Debian,Android等。
P1 VPU
此芯科技 P1 VPU支持丰富的编解码格式,支持8K HDR10 超高清编解码。
P1 VPU driver 代码已经开源,可从 https://gitlab.com/cix-linux/... 下载。
VPU单元测试应用
VPU 单元测试应用的代码也已经开源,可从 https://gitlab.com/cix-linux/... 下载。
VPU单元测试应用包含mvx_decoder和mvx_encoder,分别用于VPU解码测试和编码测试,在rootfs 里存放于 /usr/share/cix/bin/ 。
mvx_decoder
mvx_decoder是一个用于VPU解码测试的命令行工具,直接调用VPU驱动接口,可用于测试绝大部分VPU驱动解码特性。基本用法如下:
$ /usr/share/cix/bin/mvx_decoder [optional] [positional]
// 示例:H.264 HP 8-bit elementary stream解码,NV12 输出。
$ mvx_decoder -f raw -i h264 -o yuv420_nv12 \
h264_hp_352x288_progressive_cavlc_2refs.h264 \
h264_hp_352x288_progressive_cavlc_2refs_yuv420_nv12.yuvmvx_encoder
mvx_encoder是一个用于VPU编码测试的命令行工具,直接调用VPU驱动接口,可用于测试绝大部分VPU驱动编码特性。基本用法如下:
$ mvx_encoder [options] <input file> <output file>
// 示例:H.264 HP 8-bit CBR 编码,码率300Kbps,I帧间隔120,pyramid GOP类型,4个连续B帧,60fps AFBC 8-bit格式输入
$ mvx_encoder -i yuv420_afbc_8 -w 352 -h 192 --fps 60 --outputformat h264 \
--format raw --frames 300 --profile 4 --level 14 --gop 3 --gopsize 120 \
--bframes 4 --rate_control constant --target_bitrate 300000 \
Netflix_Crosswalk_352x192_60fps_300f.afb \
Crosswalk_cif_high@L5_pyramidgop9_b3_cbr_300Kbps_m1.h264VPU性能评估工具
VPU性能评估工具包括VPU帧率统计工具和VPU使用率监测工具两部分。这些工具基于debugfs实现并显示帧率和使用率等信息,需登录超级用户使用。
注意:VPU性能评估工具对CPU有一定占用,仅用于评估和调试目的,因此默认关闭。使用完毕后也建议及时关闭,以达到最佳性能和稳定性。
VPU 帧率统计
通过/sys/kernel/debug/amvx/log/group/perf/enable 比特位1控制VPU帧率统计开启和关闭。
实时帧率统计每个正在运行中的实例最近一秒内的平均帧率,同时也计算这些实例从开始到现在的平均帧率。最多可同时统计并显示32路编解码实例。显示的基本格式如下:
开始时间 ~ 当前时间 [实例ID] 优先级 编解码格式 分辨率 已处理帧数, 实时帧率, 平均帧率
以下是3路1080p H.264解码的实时帧率统计示例:
// 开启帧率统计
$ echo 2 > /sys/kernel/debug/amvx/log/group/perf/enable
// 显示实时帧率
$ cat /sys/kernel/debug/amvx/log/group/perf/realtime_fps
09:12:52 ~ 09:19:05 [ffff0000cc2f8138] P2 H.264 decoder 1920x1080 9170 frames, current fps 24.99, average fps 24.00
09:12:52 ~ 09:19:05 [ffff0000c51b8138] P2 H.264 decoder 1920x1080 9168 frames, current fps 23.99, average fps 24.00
09:12:52 ~ 09:19:05 [ffff0000ccc14138] P2 H.264 decoder 1920x1080 9168 frames, current fps 23.99, average fps 24.00
// 关闭帧率统计
$ echo 0 > /sys/kernel/debug/amvx/log/group/perf/enable平均帧率显示最近已完成的实例的平均帧率。最多显示最近32路编解码实例。显示基本格式如下:
开始时间 ~ 结束时间 [实例ID] 优先级 编解码格式 分辨率 处理帧数, 平均帧率
示例:
$ cat /sys/kernel/debug/amvx/log/group/perf/average_fps
10:35:41 ~ 10:40:05 [ffff2591334e4138] P2 VP9 decoder 1920x1080 10000 frames, average fps 37.06
10:35:41 ~ 10:40:05 [ffff2590dec70138] P2 VP9 decoder 1920x1080 10000 frames, average fps 37.06
10:35:41 ~ 10:40:05 [ffff2590f2c24138] P2 VP9 decoder 1920x1080 10000 frames, average fps 37.06
10:44:32 ~ 10:48:39 [ffff25911eaf8138] P2 H.264 encoder 1920x1080 10000 frames, average fps 39.62
10:44:32 ~ 10:48:39 [ffff25911ea38138] P2 H.264 encoder 1920x1080 10000 frames, average fps 39.62
10:44:32 ~ 10:48:39 [ffff25913693c138] P2 H.264 encoder 1920x1080 10000 frames, average fps 39.61VPU 使用率监测
通过/sys/kernel/debug/amvx/log/group/perf/enable 比特位0控制VPU使用率统计开启和关闭。
示例
// 开启VPU使用率监测
$ echo 1 > /sys/kernel/debug/amvx/log/group/perf/enable
// 显示VPU实时使用率
$ cat /sys/kernel/debug/amvx/log/group/perf/utilization
// 关闭VP使用率监测
$ echo 0 > /sys/kernel/debug/amvx/log/group/perf/enable提示:VPU帧率统计工具和VPU使用率监测工具可以同时开启。
$ echo 3 > /sys/kernel/debug/amvx/log/group/perf/enableVPU驱动日志工具
VPU驱动日志分为两部分:
- VPU firmware交互日志。默认通过debugfs发送到user space,通过mvx_logd工具打印。mvx_logd 在rootfs 里存放于 /usr/share/cix/bin/ , 其代码和VPU 单元测试应用一起开源 https://gitlab.com/cix-linux/...
- VPU驱动日志。默认打印到串口终端。
VPU firmware日志
VPU驱动默认输出全部firmware交互日志。使用mvx_logd工具搜集log,可打印到终端或保存到文件。该工具基于debugfs实现,需登录超级用户使用。
// 打印最近的日志到终端
$ mvx_logd
// 连续打印日志到终端
$ mvx_logd --follow
// 后台输出日志到文件fw.log
$ mvx_logd -d fw.logVPU驱动日志
VPU驱动日志分为如下几部分。
- dev:VPU设备相关日志
- Session:VPU session相关日志
- generic:其他日志
每部分可单独设置打印等级,日志打印等级包含 - 0:panic
- 1:error
- 2:warning
- 3:info
- 4:debug
- 5:verbose
示例
// 打开VPU驱动info及以上日志
$ echo 3 > /sys/kernel/debug/amvx/log/group/session/severity
$ echo 3 > /sys/kernel/debug/amvx/log/group/generic/severity
$ echo 3 > /sys/kernel/debug/amvx/log/group/dev/severity
// 将所有VPU驱动日志输出到mvx_logd
$ echo ram0 > /sys/kernel/debug/amvx/log/group/session/drain
$ echo ram0 > /sys/kernel/debug/amvx/log/group/generic/drain
$ echo ram0 > /sys/kernel/debug/amvx/log/group/dev/drain注意:将大量日志输出到串口终端对性能有较大影响。如果日志较多,建议配置为输出到mvx_logd,并保存到文件。