跳转至

MPP

MPP 源码:https://github.com/rockchip-linux/mpp

MPP(Media Process Platform)是 Rockchip 平台的硬件编解码框架,提供 4K 超高清视频的硬编码与硬解码能力。适用于 Debian / Ubuntu 系统。

规格总览

硬件解码

编码格式 规格 最高分辨率/帧率
H.265 HEVC Main10 L5.1 yuv444 4K@120fps
H.264 AVC High10 L5.1 yuv422 4K@60fps
H.264 MVC 1080P@60fps
VP9 Profile 0/2 L5.1 4K@120fps
AVS2 Profile 0/2 L10.2.6 4K@120fps
AV1 Main10 L5.3 4K@120fps

硬件编码

编码格式 最高分辨率/帧率
H.264 AVC 4K@60fps
H.265 HEVC 4K@60fps

调试信息

开启调试:

export mpp_syslog_perror=1
echo 0x100 > /sys/module/rk_vcodec/parameters/mpp_dev_debug

开启后调用硬件编解码时,dmesg 会输出每帧耗时:

[  893.134037] rk_vcodec: 27b00100.rkvdec:0 session 3705:19 time: 1333 us hw 1312 us
[  893.167444] rk_vcodec: 27b00100.rkvdec:0 session 3705:19 time: 1381 us hw 1313 us
[  893.200503] rk_vcodec: 27b00100.rkvdec:0 session 3705:19 time: 1420 us hw 1313 us

Note

time:软硬件整体耗时;hw:纯硬件耗时

关闭调试:

export mpp_syslog_perror=0
echo 0 > /sys/module/rk_vcodec/parameters/mpp_dev_debug

硬编码测试

使用 mpi_enc_test 工具进行硬件编码测试,结果通过 tail -f /var/log/syslog 查看。

H.264 编码 —— 4K 100 帧:

mpi_enc_test -w 4096 -h 2160 -t 7 -o ./test.h264 -n 100

输出示例:

kickpi mpp[3557]: mpi_enc_test: chn 0 encode 100 frames time 3763 ms delay 27 ms fps 26.57 bps 10605252

H.265 编码 —— 4K 100 帧:

mpi_enc_test -w 4096 -h 2160 -t 16777220 -o ./test.h265 -n 100

输出示例:

kickpi mpp[3560]: mpi_enc_test: chn 0 encode 100 frames time 4086 ms delay 36 ms fps 24.47 bps 19594276

硬解码测试

使用 mpi_dec_test 工具进行硬件解码测试,结果同样通过 tail -f /var/log/syslog 查看。

H.264 解码 —— 4K 100 帧:

mpi_dec_test -t 7 -i test.h264 -n 100

输出示例:

kickpi mpp[3564]: mpi_dec_test: decode 100 frames time 596 ms delay 25 ms fps 167.53

H.265 解码 —— 4K 100 帧:

mpi_dec_test -t 16777220 -i test.h265 -n 100

输出示例:

kickpi mpp[3569]: mpi_dec_test: decode 100 frames time 803 ms delay 49 ms fps 124.47

浏览器视频测试(Chromium)

板卡连接显示器,在终端中执行以下命令启动 Chromium 视频测试:

source /rockchip-test/chromium/test_chromium_with_video.sh

若 Chromium 未调用硬解码,执行修复脚本:

source /rockchip-test/chromium/chromium_mpp_fix.sh

Note

配置后 Chromium 默认调用硬解码。

GStreamer 视频测试

日志中出现 mpp 字样即表示硬件解码已成功调用。

sudo GST_DEBUG=2 gst-launch-1.0 playbin uri=file:///usr/local/test.mp4 video-sink="autovideosink" audio-sink=fakesink

若需要 GStreamer 调用硬解码,执行修复脚本(需联网):

source /rockchip-test/gstreamer/gstreamer_mpp_fix.sh

兼容性说明:Ubuntu 系统中 Rockchip Chromium 与 GStreamer 的硬解码配置存在互斥。默认优先配置 Chromium 硬解码。如需切换至 GStreamer,请执行上方的修复脚本。