MPP : Media Process Platform
基于rk平台的多媒体框架 提供硬件编解码支持
Mpp开发
根据所选用Rk平台
进入平台shell模式中
root@user: uname -a
确定平台类型和kernel版本
编译mpp
Linux平台
1. 需要指定交叉编译工具链或是直接板上编译
2. 如果平台基于3399 centos
推荐直接在3399上编译 方便快捷
将mpp目录推送到3399上
安装cmake 和 gcc g++
1.
修改arm.linux.cross.cmake中的
SET(CMAKE_C_COMPILER "arm-linux-gcc")$
SET(CMAKE_CXX_COMPILER "arm-linux-g++")
为 SET(CMAKE_C_COMPILER "gcc")
SET(CMAKE_CXX_COMPILER "g++")
2. 修改make-Makefiles.bash
增加-DHAVE_DRM定义
# generate Makefile$
cmake -DCMAKE_BUILD_TYPE=Release \$
-DCMAKE_TOOLCHAIN_FILE=./arm.linux.cross.cmake \$
-DCMAKE_RKPLATFORM_ENABLE=ON \$
-DHAVE-DRM=ON \
-G "Unix Makefiles" \$
${MPP_TOP}$
Android平台
假定mpp代码放置在work目录 平台为android 32位arm
root@user: cd work/build/android/arm
root@user: ./make-Android.bash
如果发生错误 1. 检查脚本的ndk位置是否正确
2. 再次执行脚本(ndk版本低的话可能引起cmake错误 需要再次执行脚本)
linux下编译
运行错误
例如 failed to open /dev/ion
1. 确认kernel版本 可能是4.4版本的原因
如果kernel是4.4版本 在make-Android.bash 中增加cmake编译宏定义
-DHAVE_DRM=ON Linux平台类似做此修改
修改:
cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DANDROID_FORCE_ARM_BUILD=ON \
-DANDROID_NDK=${ANDROID_NDK} \
-DANDROID_SYSROOT=${PLATFORM} \
-DANDROID_ABI="armeabi-v7a with NEON" \
-DANDROID_TOOLCHAIN_NAME="arm-linux-androideabi-4.8" \
-DANDROID_NATIVE_API_LEVEL=android-21 \
-DANDROID_STL=system \
-DCMAKE_RKPLATFORM_ENABLE=ON \
-DHAVE_DRM=ON \ // 添加定义
../../..
调用mpp
1. mpp自带的文档和demo
参考 doc/目录下的文档 和 test目录下的调用demo
编码参考mpi_enc_tets.c
解码参考mpi_dec_test.c
2. Linux下的调用demo (mpp解码+rga旋转+drm显示)
参考git代码
https://github.com/sliver-chen/mpp_linux_cpp