OK3588适配ffmpeg6.1及编解码器插件

2024-8-30 17:39| 发布者: C.S151| 查看: 625| 评论: 0|原作者: 程帅

类目:  >  知识库     文档编号: 1508

buildroot-package分析与ffmpeg添加rkmpp插件示例

目标平台:OK3588

获取源码:

git clone -b jellyfin-mpp --depth=1 https://github.com/nya**aka/mpp.git rkmpp
git clone -b jellyfin-rga --depth=1 https://github.com/nya**aka/rk-mirrors.git rkrga
git clone --depth=1 https://github.com/nya**aka/ffmpeg-rockchip.git ffmpeg

参考链接:Compilation · nya**aka/ffmpeg-rockchip Wiki (github.com)

修改的package:rockchip-mpp,rockchip-rga,opencv4,ffmpeg

1. buildroot基础知识

​ Buildroot是一个可以使用交叉编译简单且自动化地为嵌入式系统构建完整Linux系统的工具。

​ 为了实现这一目标,Buildroot能够为你的系统生成交叉编译工具链、根文件系统、Linux内核镜像和引导加载程序。BuildRoot可以独立地用于这些选项的任意组合(例如,你可以使用已有的交叉编译工具链,并且仅编译根文件系统)。Buildroot主要用于使用嵌入式系统的开发者。嵌入式系统通常使用的处理器不是PC上使用的常规x86处理器,他们可以是PowerPC处理器、MIPS处理器或者ARM处理器等。

原文参考:Buildroot中文用户手册_the buildroot user manual 中文-CSDN博客

2. 将软件包添加到Buildroot

参考中文手册17.1章节,本小节针对ffmpeg.mk与rockchip-mpp.mk做修改来适配ffmpeg的rkmpp插件

2.1 添加rockchip-mpp包

进入到buildroot目录中,查看./package/rockchip/

tree -L 1
.
├── Config.in
├── rockchip.mk
​

Config.in

可以看的出来,Config.in的语法与KConfig几乎一模一样,只不过CONFIG_ 变成了BR2_PACKAGE_,实际上这是buildroot通过自身一系列的工具和脚本衍生的命名规则,在下文有描述。


menuconfig BR2_PACKAGE_ROCKCHIP
       bool "Rockchip Platform"
​
if BR2_PACKAGE_ROCKCHIP
​
config BR2_PACKAGE_ROCKCHIP_HAS_ISP1
       bool
       help
         Has Rockchip ISP1
​
config BR2_PACKAGE_ROCKCHIP_HAS_ISP2
       bool
       help
         Has Rockchip ISP2
​
config BR2_PACKAGE_ROCKCHIP_HAS_ISP3
       bool
       help
         Has Rockchip ISP3
​
choice
       default BR2_PACKAGE_RK3588
       prompt "Rockchip SoC"
​
config BR2_PACKAGE_RK3399
       bool "rk3399 chip"
       select BR2_ROCKCHIP_HAS_ISP1
       help
         Use Rockchip's rk3399 SoC
​
config BR2_PACKAGE_RK356X
       bool "rk356x chip"
       select BR2_ROCKCHIP_HAS_ISP2
       help
         Use Rockchip's rk356x SoC
​
config BR2_PACKAGE_RK3588
       bool "rk3588"
       select BR2_PACKAGE_ROCKCHIP_HAS_ISP3
       help
         Use Rockchip's rk3588 SoC
​
endchoice
​
# Camera Engine packages

rockchip.mk


include $(sort $(wildcard package/rockchip/*/*.mk))

接下来分析rockchip-mpp包的配置

首先介绍下命名规则

软件包名称、配置入口名称及makefile变量之间的关系

在Buildroot中,它们之间存在一些关系:

  • 软件包名称,即软件包目录名称,也是.mk文件名称。

  • 配置入口名称为Config.in中声明的名称。

  • makefile变量前缀。

必须使用以下规则确保这些元素之间的一致性:

  • 软件包目录和.mk文件名即为软件包名称本身,如package/foo-bar_boo/foo-bar_boo.mk。

  • make目录名称是软件包名称本身,如foo-bar_boo。

  • 配置入口名称是软件包名称大写,其中-替换为,并以BR2_PACKAGE开头,如BR2_PACKAGE_FOO_BAR_BOO。

  • .mk文件变量前缀是软件包名称大写,其中-替换为_,如FOO_BAR_BOO_VERSION。





已解决

未解决

只是看看

最新评论