mpp介绍
MPP是Rockchip提供的媒体处理软件平台,适用于Rockchip芯片系列。它屏蔽了有关芯片的复杂底层处理,屏蔽了不同芯片的差异,为使用者提供了统一的视频媒体统一接口。如果想达到最好的效果,必须要通过librockchip_mpp来直接编码实现编解码。
我们可以通过gstreamer和ffmpeg的mpp插件来使用mpp硬件加速,但是这两种应用程序都会因为兼容api的原因,徒增几次无用的帧拷贝动作,并且使用的都是虚拟地址。我们知道纯物理连续地址的硬件操作是非常快的,转到虚拟地址后效率就会降低。如果想榨干芯片的性能,开发最完美的代码,纯连续的物理Buffer和mpp是离不开的。
Mpp的API思路其实跟目前绝大多数的编解码库是一致的,都是queue/dequeue的队列操作方式,先设置好编解码状态,然后不停的queue/dequeue input/output buffer就可以实现编解码控制了。如果大家熟悉FFMPEG,那学习MPP会非常容易,MPP和FFMPEG的api非常相像。
Mpp库自带了编解码的sample,但是相关文档和注释较少,本文在原有semple的基础上添加了注释,并将部分功能封装成型。
mpp开发环境配置
-
dnf 安装(详见wiki)
sudo dnf install librockchip_mpp-devel
复制代码 -
源码编译
MPP库源码下载地址
https://github.com/rockchip-linux/mpp
或 https://github.com/HermanChen/mpp
MPP兼容的gstre