libomxil-bellagio移植到OpenHarmony

当使用mesa3dcangh提供的amd显卡驱动时,想利用 Mesa 提供的图形硬件加速能力,来支持视频编解码操作时。需要依赖libomxil-bellagio库,现在成果分享如下:

基础知识

1.OpenHarmony中mesa3d amd显卡驱动编译

2.OpenHarmony中基于GN和ninja的编译构建,参考笔者speexdsp移植到OpenHarmony系列文章:
移植speexdsp到OpenHarmony标准系统①

3.libomxil-bellagio在linux上的编译

移植思路

1.保证能在linux上正常编译,获取linux的编译日志来分析编译产物和它们之间的依赖关系

javascript 复制代码
# 安装以下基础工具和库
sudo apt update
sudo apt install autoconf libtool g++ make dpkg-dev pkg-config

# 解压源码打补丁
# libomxil-bellagio-0.9.3.tar.gz来源:
# https://sourceforge.net/projects/omxil/files/latest/download
cd libomxil-bellagio-0.9.3
# 补丁来自https://gitee.com/src-openeuler/libomxil-bellagio/tree/openEuler-24.03-LTS-SP2-release/
patch -p1 < Fix-FTBFS-with-gcc12.patch
patch -p1 < bellagio-0.9.3-dynamicloader-linking.patch
patch -p1 < bellagio-0.9.3-parallel-build.patch
patch -p1 < bellagio-0.9.3-segfault-on-removeFromWaitResource.patch
patch -p1 < fix-multi-define.patch
patch -p1 < fix-stringop-overflow.patch
patch -p1 < libomxil-bellagio-0.9.3-fix_Werror.patch
patch -p1 < libomxil-bellagio-0.9.3-memcpy.patch
patch -p1 < libomxil-bellagio-0.9.3-nodoc.patch
patch -p1 < libomxil-bellagio-0.9.3-unused.patch
patch -p1 < libomxil-bellagio-0.9.3-valgrind_register.patch
patch -p1 < omxil_version.patch

# 生成configure脚本,解决可能缺失的配置文件
autoreconf -i -f

./configure --prefix=xxx/xxx/xxx
make
make install

2.编写BUILD.gn,编译相关编译产物到OpenHarmony。

开源仓库仓库地址:

https://gitee.com/OpenHarmony_rk_equipment_transplantation/libomxil-bellagio_oh

javascript 复制代码
├── BUILD.gn 
├── include # libomxil-bellagio头文件
├── install.sh # 执行脚本源码中打入补丁,生成config.h文件
├── libomxil-bellagio-0.9.3.tar.gz
└── patch # 修复linux编译补丁