rkmpp移植与测试

一、mpp交叉编译

        MPP(Media Process Platform )是Rockchip提供的一款硬件编解码媒体处理软件平台,适用于Rockchip芯片系列。它屏蔽了有关芯片的复杂底层处理,屏蔽了不同芯片的差异,为使用者提供了一组MPI统一接口。如果想达到最好的效果,必须要通过librockchip_mpp来直接编码实现编解码。我们可以通过gstreamer和ffmpeg的mpp插件来使用mpp硬件加速,但是这两种应用程序都会因为兼容api的原因,徒增几次无用的帧拷贝动作,并且使用的都是虚拟地址。我们知道纯物理连续地址的硬件操作是非常快的,转到虚拟地址后效率就会降低。如果想榨干芯片的性能,开发最完美的代码,纯连续的物理buffer和mpp+rga是离不开的。 Mpp的API思路其实跟目前绝大多数的编解码库是一致的,都是queue/dequeue的队列操作方式,先设置好编解码状态,然后不停的queue/dequeue input/output buffer就可以实现编解码控制了

1、源码下载

https://github.com/rockchip-linux/mpp

2、编译脚本修改

  • 进入build/linux目录,找到对应的硬件架构,rk3568选用aarch64位

  • 修改 arm.linux.cross.cmake 文件,指定交叉编译器
cmake_minimum_required( VERSION 2.6.3 )

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER "/opt/atk-dlrk356x-toolchain/bin/aarch64-linux-gcc")
SET(CMAKE_CXX_COMPILER "/opt/atk-dlrk356x-toolchain/bin/aarch64-linux-g++")
#SET(CMAKE_SYSTEM_PROCESSOR "armv7-a")
SET(CMAKE_SYSTEM_PROCESSOR "armv8-a")
#设置安装目录
SET(CMAKE_INSTALL_PREFIX "/home/dhl/winShare/rk3568/lib/source-compile/mpp-1.0.4/install")      

add_definitions(-fPIC)
add_definitions(-DARMLINUX)
add_definitions(-Dlinux)
  • 修改 make-Makefiles.bash ,修改交叉编译

3、交叉编译

sudo ./make-Makefiles.bash

sudo make
sudo make install

二、demo程序测试

1、解码器测试

解码器 demo 为 mpi_dec_test 系列程序,包括使用 decode_put_packet 和 decode_get_frame 接口的单线程 mpi_dec_test,多线程的 mpi_dec_mt_test 以及多实例的 mpi_dec_multi_test

MPP 解码器的 MPI 接口是线程安全的,可以在多线环境下使用。单线程工作模式如 mpi_dec_test 的demo 所示,多线程工作模式如 mpi_dec_mt_test 的 demo 所示。

下面为 mpi_dec_test 程序使用说明:(注:输出的打印信息需要通过 syslog才能看到!!!

mpi_dec_test 的命令参数中,输入文件(i),码流类型(t)为强制要求的参数,其他参数如输出文件(o),图像宽度(w)图像高度(h),解码帧数(n)等为可选参数,影响不大

  • -i:输入文件
  • -t:输入码流类型,7位H264、16777220位H265
  • -w:图像宽度
  • -h:图像高度
  • -n:要解码的帧数

以解码H265文件为例:

mpi_dec_test -i 0.h265 -t 16777220 -n 10

注:解码的H265文件必须是带有PPS、VPS等头部数据的,不然会报如下错

2、编码器测试

编码器 demo 为 mpi_enc_test 系列程序,包括单线程的 mpi_enc_test,及多实例的 mpi_enc_multi_test

下面为mpi_enc_test程序使用说明

以编码yuv文件为例:

mpi_enc_test -i yuv420p_1280x720.yuv -w 1280 -h 720 -f 4 -t 7 -o yuv420p_1280x720.h264
mpi_enc_test -i yuv420p_1280x720.yuv -w 1280 -h 720 -f 4 -t 16777220 -o yuv420p_1280x720.h265
mpi_enc_test -i yuv420p_1280x720.yuv -w 1280 -h 720 -f 4 -t 8 -o jpegout.jpg

mpi_enc_test 的命令参数中,图像宽度(w)图像高度(h),码流类型(t)为强制要求参数,其他参数如输入文件(i),输出文件(o),编码帧数(n)等为可选参数。如果没有指定输入文件,mpi_enc_test会生成默认彩条图像进行编码

  • -i:输入文件
  • -w:图像宽度
  • -h:图像高度
  • -f:输入图像格式,很关键,可取值为

如果不知道yuv文件的图像格式,可用通过 yuvplayer 播放器查看

        

  • -t:输出码流类型,可取值为

这里常用的就两种:H.264(7)、H.265(16777220)

使能其他功能:

export osd_enable=1

export user_data_enable=0

export roi_enable=0

export osd_mode=1

  • 15
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
将SOEM主站移植到QT测试程序中需要以下步骤: 1. 首先,确保Qt开发环境已经正确安装并配置好。可以从官方网站下载Qt开发环境,并按照说明进行安装。 2. 打开Qt开发环境,创建一个新的Qt项目。可以选择一个合适的项目模板,如“Qt Widgets Application”。 3. 在项目中引入SOEM主站源代码文件。将SOEM主站的源代码文件拷贝到项目目录下,然后在Qt项目中添加这些文件。 4. 配置Qt项目以使用SOEM主站的功能。在Qt项目的.pro文件中,添加SOEM源代码文件的路径,并添加相关的编译和链接选项。可以参考SOEM的文档说明来了解所需的配置选项。 5. 在Qt项目中编写测试程序。根据需要,编写测试程序以调用和测试SOEM主站提供的功能。可以使用Qt的界面设计工具来创建界面,以便与SOEM主站进行交互。 6. 编译和运行Qt测试程序。使用Qt开发环境提供的编译和运行功能,对项目进行编译和运行。确保编译过程中没有错误,并且程序能够正确运行。 7. 进行测试和调试。通过与SOEM主站进行交互,测试和调试Qt测试程序。可以使用Qt的调试工具来分析程序的运行情况,并进行必要的修复和改进。 8. 最后,进行部署和发布。将完成测试和调试的Qt测试程序进行部署和发布。可以根据需要,打包程序并发布给其他用户使用。 通过以上步骤,我们可以将SOEM主站移植到Qt测试程序中,并进行测试和调试,以确保程序能够正常运行。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值