当前位置: 首页 > news >正文

rk3568之mpp开发笔记mpp移植到开发板

前言:

大家好,今天给大家介绍的内容是rk平台的mpp编解码这块的内容,在rk目前看到有三套框架涉及到编解码内容:

  • 1、rkmedia

  • 2、rockit

  • 3、mpp

9ea77c9702a3f9db97d20f51508c165f.png

这三种不同形式的编解码方式,后面再做详细的框架对比,今天我们主要是怎么移植mpp源码到开发板里面去。

这里主要是记录一下学习过程!

开始移植mpp源码

mpp源码一般在对应的sdk里面的external里面也有,我这里不用sdk里面的mpp源码,而是从rockchip官方仓库里面下载最新的mpp源码:

https://github.com/rockchip-linux/mpp/tree/release
06e2d0d0cd2c0490dcb698db758e97e2.png

现在我们开始来进行一定的修改:

65a73d99d293010f5586e4ed9a9576d5.png
mpp源码目录

上面我们修改这个路径下的两个文档内容:

116a34ccbc4c5ec95aebefec7b2282d5.png

最终内容内容修改如下:

76d0efea34aa76266f2093b30a7ad45a.png

arm.linux.cross.cmake

b7d7d07cc6945a7942f2662670ec265c.png

make-Makefiles.bash

接着还需要修改一个地方,不然到时候移植到开发板上,我们运行demo,发现终端没有任何的打印log,就让人很奇怪,所以需要在osal里面做一个log打印输出语句:

c88010f8dec80bf4616699e5dcf885fa.png

添加如下两条打印语句:

void os_log(const char* tag, const char* msg, va_list list)
{char line[LINE_SZ] = {0};snprintf(line, sizeof(line), "%s: %s", tag, msg);vsyslog(LOG_INFO, line, list);vfprintf(stdout, line, list);
}void os_err(const char* tag, const char* msg, va_list list)
{char line[LINE_SZ] = {0};snprintf(line, sizeof(line), "%s: %s", tag, msg);vsyslog(LOG_ERR, line, list);vfprintf(stderr, line, list);
}

4f61aef4bd22683687502a7e02b88f88.png

最终结果

现在我们可以来开始进行编译了:

9c2246ec33a553a4f23704a97a41c033.png70171fcc2bcfeb3ab3d21a0c88f1269e.pngce68930d4435e9d59054f3e067c27d79.pnga655971b6f21efa8a89d4fda9a860e58.png

最终编译结果

移植到开发板上执行测试解码:

传输到开发板上来:

f5150a71d39ef9fcd5869923971b25e6.png

我们可以直接执行这个测试程序,可以看到一些有用的参数说明:

d590552db3c5077efc588b31118baf61.png

开始测试:

1e4b86f978dff0429c9816a6e4c4e903.png

好了,整个移植过程就结束了,下一期文章,我们开始构造属于自己的mpp工程,怎么解码码流到屏幕上去显示,循环播放演示以及mpp的整个架构和api的使用介绍,我们下期见!

http://www.lryc.cn/news/502033.html

相关文章:

  • Vue解决跨域问题
  • Kubernetes Nginx-Ingress | 禁用HSTS/禁止重定向到https
  • TortoiseGit的下载、安装和配置
  • 如何绕过IP禁令
  • Vue3的provide和inject实现多级传递的原理
  • 使用html2canvas实现前端截图
  • 使用 Python 爬取某网站简历模板(bs4/lxml+协程)
  • 深度学习模型中音频流式处理
  • C语言(字符数组和字符指针)
  • SkyWalking Helm Chart 4.7.0 安装、配置
  • 微搭低代码AI组件单词消消乐从0到1实践
  • 23种设计模式之中介者模式
  • 【Golang】Go语言编程思想(六):Channel,第六节,并发编程模式
  • unity打包web,如何减小文件体积,特别是 Build.wasm.gz
  • go引入skywalking
  • 大华DSS数字监控系统 attachment_downloadAtt.action 任意文件下载漏洞复现
  • qt 封装 调用 dll
  • Python使用Selenium库获取 网页节点元素、名称、内容的方法
  • 系统安全——访问控制访问控制
  • SQL Server 数据库还原到某个时点(完整恢复模式)
  • 埃隆马斯克X-AI发布Grok-2大模型,快来体验~
  • Python工厂设计模式:简化对象创建
  • 【隐私计算篇】隐私集合求交(PSI)原理深入浅出
  • 工作中常用的8种设计模式
  • Qwen 论文阅读记录
  • 自动驾驶:百年演进
  • SSM 校园一卡通密钥管理系统 PF 于校园图书借阅管理的安全保障
  • 什么叫中间件服务器?
  • 【docker】12. Docker Volume(存储卷)
  • SpringBoot【八】mybatis-plus条件构造器使用手册!