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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/867723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux字符设备驱动

一、字符设备驱动结构 1. cdev结构体 在Linux内核中,使用cdev结构体来描述一个字符设备 struct cdev {struct kobject kobj; //内嵌kobject对象struct module *owner; //所属的模块const struct file_operations *ops; //该设备的文件操作结构体struct list_head…

SpringBoot新手快速入门系列教程六:基于MyBatis的一个简单Mysql读写例子

MyBatis和JPA是两种不同的Java持久层框架,各有其优缺点。以下是它们的比较: MyBatis 优点 灵活性高:MyBatis允许手动编写SQL查询,可以完全控制SQL执行过程,非常适合复杂的查询和需要高度优化的查询。SQL分离&#x…

用proteus软件如何设计一个基于8086微处理器的简易温度计?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

#数据结构 顺序表

线性表 顺序表 每种结构都有它存在意义 线性表的顺序存储实现指的是用一组连续的存储单元存储线性表的数据元素。 概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性表,一般情况下采用数组存储。在数组上完成数据的增查改删。 逻辑结构&#…

IDEA配Git

目录 前言 1.创建Git仓库,获得可提交渠道 2.选择本地提交的项目名 3.配置远程仓库的地址 4.新增远程仓库地址 5.开始进行commit操作 6.push由于邮箱问题被拒绝的解决方法: 后记 前言 以下操作都是基于你已经下载了Git的前提下进行的&#xff0c…

CSRF靶场通关合集

目录 前言 CSRF漏洞总结 1.PiKachu靶场 1.1CSRF(get) 1.2 CSRF(post)请求 1.3 CSRF Token 2.DVWA靶场 难度低 难度中 难度高 前言 最近系统的将从web渗透到内网渗透的知识点做一个回顾,同时结合一些实战的案例来演示,下面是对刚开始学习时对靶场的一个总结. CSRF漏洞…

OPENCV(图像入门笔记)

使用OpenCV读取图像 使用cv.imread()函数读取图像。 第一个参数为图像名称 第二个参数是一个标志,它指定了读取图像的方式。分别有三种 cv.IMREAD_COLOR: 加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。 cv.IMREAD_GRAYSCALE:以…

【Nvidia+AI相机】涂布视觉检测方案专注提高锂电池质量把控标准

锂电池单元的质量在多个生产制造领域都至关重要,特别是在新能源汽车、高端消费电子等行业。这些领域的产品高度依赖锂电池提供持续、稳定的能量供应。优质的锂电池单元不仅能提升产品的性能和用户体验,还能确保使用安全。因此,保证锂电池单元…

go语言Gin框架的学习路线(六)

gin的路由器 Gin 是一个用 Go (Golang) 编写的 Web 框架,以其高性能和快速路由能力而闻名。在 Gin 中,路由器是框架的核心组件之一,负责处理 HTTP 请求并将其映射到相应的处理函数上。 以下是 Gin 路由器的一些关键特性和工作原理的简要解释…

昇思25天学习打卡营第19天|LSTM+CRF序列标注

概述 序列标注指给定输入序列,给序列中每个Token进行标注标签的过程。序列标注问题通常用于从文本中进行信息抽取,包括分词(Word Segmentation)、词性标注(Position Tagging)、命名实体识别(Named Entity Recognition, NER)等。 条件随机场&#xff08…

水箱高低水位浮球液位开关

水箱高低水位浮球液位开关概述 水箱高低水位浮球液位开关是一种用于监测和控制水箱中液位的自动化设备,它能够在水箱液位达到预设的高低限制时,输出开关信号,以控制水泵或电磁阀的开闭,从而维持水箱液位在一个安全的范围内。这类设…

【排序算法】插入排序(希尔排序)

一.直接插入排序 1.基本思想 直接插入排序是一种简单的插入排序法,其核心思想是对一个已经有序的序列插入一个数据,该数据依次比较有序序列中的值,直到插入到合适的位置。在我们玩扑克牌整理牌序的时候,用到的就是直接插入排序的…

Vue3.js“非原始值”响应式实现基本原理笔记(二)

如果您觉得这篇文章有帮助的话!给个点赞和评论支持下吧,感谢~ 作者:前端小王hs 阿里云社区博客专家/清华大学出版社签约作者/csdn百万访问前端博主/B站千粉前端up主 此篇文章是博主于2022年学习《Vue.js设计与实现》时的笔记整理而来 书籍&a…

28行代码完成深度学习模型——线性模型 01

在这里插入代码片## 线性模型 机器学习中的线性模型是一种预测模型,它基于线性关系来预测输出值。这种模型假设输入特征(自变量)和输出(因变量)之间存在线性关系。线性模型通常具有以下形式: y x*w b 其…

【TB作品】数码管独立按键密码锁,ATMEGA16单片机,Proteus仿真 atmega16数码管独立按键密码锁

文章目录 基于ATmega16的数码管独立按键密码锁设计实验报告实验背景硬件介绍主要元器件电路连接 设计原理硬件设计软件设计 程序原理延时函数独立按键检测密码显示主函数 资源代码 基于ATmega16的数码管独立按键密码锁设计实验报告 实验背景 本实验旨在设计并实现一个基于ATm…

数据库系统原理练习 | 作业1-第1章绪论(附答案)

整理自博主本科《数据库系统原理》专业课完成的课后作业,以便各位学习数据库系统概论的小伙伴们参考、学习。 *文中若存在书写不合理的地方,欢迎各位斧正。 专业课本: 目录 一、选择题 二:简答题 三:综合题 一、选择…

DAY21-力扣刷题

1.买卖股票的最佳时机 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int maxProfit(int[] prices) {int minpriceInteger.MAX_VALUE;int maxprofit0;for(int i0;i<prices.length;i){if(prices[i]<minprice){minpriceprices[…

昇思MindSpore学习笔记5-01生成式--LSTM+CRF序列标注

摘要&#xff1a; 记录昇思MindSpore AI框架使用LSTMCRF模型分词标注的步骤和方法。包括环境准备、score计算、Normalizer计算、Viterbi算法、CRF组合,以及改进的双向LSTMCRF模型。 一、概念 1.序列标注 标注标签输入序列中的每个Token 用于抽取文本信息 分词(Word Segment…

InetAddress.getLocalHost().getHostAddress()阻塞导致整个微服务崩溃

InetAddress.getLocalHost().getHostAddress()阻塞导致整个微服务崩溃 import java.net.InetAddress;public class GetHostIp {public static void main(String[] args) {try {long start System.currentTimeMillis();String ipAddress InetAddress.getLocalHost().getHostA…

【计算机网络】物理层(作业)

1、若信道在无噪声情况下的极限数据传输速率不小于信噪比为30dB 条件下的极限数据传输速率&#xff0c;则信号状态数至少是&#xff08;D&#xff09;。 A. 4B. 16C. 8D. 32 解析&#xff1a;可用奈奎斯特采样定理计算无噪声情况下的极限数据传输速率&#xff0c;用香农第二定…