RK3399Pro-硬件编解码器MPP库快速上手--(一)MPP介绍与环境配置

RK3399Pro-硬件编解码器MPP库快速上手--(一)MPP介绍与环境配置

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开发环境配置

  1. dnf 安装(详见wiki)
    sudo dnf install librockchip_mpp-devel
    复制代码

  2. 源码编译
    MPP库源码下载地址
    https://github.com/rockchip-linux/mpp
    或 https://github.com/HermanChen/mpp
    MPP兼容的gstreamer源码下载地址
    https://github.com/rockchip-linux/gstreamer-rockchip

    MPP源码编译( 本文选择在板子上编译)
    (1). cd到源码的根目录,执行cmake
    cd “源码根目录”
    cmake .

    (2).上一步cmake会在build/linux/aarch64文件中生成makefile,cd进去编译
    cd build/linux/aarch64
    make

    (3).上一步make以后就会生成mpp的lib和一些测试demo,这些demo就在 build/linux/aarch64/test里面,包括:

		mpp_enc_test:读取和打印MPP库的版本信息。
		mpp_dec_test:测试内核的内存分配器是否正常。
		mpp_info_test:读取和打印MPP库的版本信息。
		mpp_buffer_test:测试内核的内存分配器是否正常。
		mpp_mem_test:测试C库的内存分配器是否正常。
		mpp_runtime_test:测试一些软硬件运行时环境是否正常。
		mpp_platform_test:读取和测试芯片平台信息是否正常。

我们可以测试运行mpp_dec_test来判断mpp安装情况:
在这里插入图片描述
其中
-i:输入文件;
-o:输出文件;
-w:图像宽度;
-h:图像高度;
-t:码流类型;
-f:输出帧类型;
-n:输出帧数;
按照上述输入即可进行解码测试。

这样mpp就算配置完成了,下一篇博客我们将讲解如何使用mpp进行视频编码。
参考文章:
1.https://t.rock-chips.com/forum.php?mod=viewthread&action=printable&tid=336
2.https://www.cnblogs.com/xue0708/p/10088451.html

下一篇:
RK3399Pro-硬件编解码器MPP库快速上手–(二)MPP编码入门

猜你喜欢

转载自blog.csdn.net/qq_39839546/article/details/121962031
今日推荐