记录:编译rockchip libv4l-rkmpp库

源码仓库:

https://github.com/JeffyCN/libv4l-rkmpp.git

编译deb包命令:

bash 复制代码
sudo apt build-dep .
sudo apt install fakeroot
sudo DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -rfakeroot -b -d -us
# 注意:以上命令请在非root用户下执行,否则-rfakeroot参数报错。

错误1:

执行apt build-dep .命令提示meson版本低问题。先修改"debian/control"调整meson版本和当前系统版本相同,保证apt build-dep .能正常执行完成,然后通过下面方法升级meson版本。

bash 复制代码
meson -v   #查看meson版本
sudo apt install python3-pip
sudo pip3 install meson   #安装后的版本位于/home/xxx/.local/bin下,如果设备环境等无法访问到这个版本,可以通过符号链接连接到/usr/bin下。

错误2:

编译失败,提示如下信息。

bash 复制代码
../src/libv4l-rkmpp-dec.c:760:7: error: 'V4L2_CID_MPEG_VIDEO_VP8_PROFILE' undeclared (first use in this function); did you mean 'V4L2_CID_MPEG_VIDEO_VP9_PROFILE'?
  case V4L2_CID_MPEG_VIDEO_VP8_PROFILE:
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       V4L2_CID_MPEG_VIDEO_VP9_PROFILE
../src/libv4l-rkmpp-dec.c:760:7: note: each undeclared identifier is reported only once for each function it appears in
../src/libv4l-rkmpp-dec.c:761:25: error: 'V4L2_MPEG_VIDEO_VP8_PROFILE_0' undeclared (first use in this function); did you mean 'V4L2_MPEG_VIDEO_VP9_PROFILE_0'?
   query_ctrl->minimum = V4L2_MPEG_VIDEO_VP8_PROFILE_0;
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                         V4L2_MPEG_VIDEO_VP9_PROFILE_0
../src/libv4l-rkmpp-dec.c: In function 'rkmpp_dec_querymenu':
../src/libv4l-rkmpp-dec.c:817:7: error: 'V4L2_CID_MPEG_VIDEO_VP8_PROFILE' undeclared (first use in this function); did you mean 'V4L2_CID_MPEG_VIDEO_VP9_PROFILE'?
  case V4L2_CID_MPEG_VIDEO_VP8_PROFILE:
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       V4L2_CID_MPEG_VIDEO_VP9_PROFILE
../src/libv4l-rkmpp-dec.c:818:28: error: 'V4L2_MPEG_VIDEO_VP8_PROFILE_0' undeclared (first use in this function); did you mean 'V4L2_MPEG_VIDEO_VP9_PROFILE_0'?
   if (query_menu->index != V4L2_MPEG_VIDEO_VP8_PROFILE_0) {
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            V4L2_MPEG_VIDEO_VP9_PROFILE_0
../src/libv4l-rkmpp-dec.c: In function 'rkmpp_dec_cmd':

添加如下patch修复错误(可在内核中知道相关定义)。

bash 复制代码
diff --git a/include/libv4l-rkmpp.h b/include/libv4l-rkmpp.h
index 722a81a..a633f92 100644
--- a/include/libv4l-rkmpp.h
+++ b/include/libv4l-rkmpp.h
@@ -41,6 +41,11 @@
 #define V4L2_CID_CODEC_BASE			(V4L2_CTRL_CLASS_CODEC | 0x900)
 #endif
 
+#ifndef V4L2_CID_MPEG_VIDEO_VP8_PROFILE
+#define V4L2_CID_MPEG_VIDEO_VP8_PROFILE         (V4L2_CID_MPEG_BASE+511)
+#define V4L2_MPEG_VIDEO_VP8_PROFILE_0           0
+#endif
+
 #ifndef V4L2_CID_MPEG_VIDEO_VP9_PROFILE
 #define V4L2_CID_MPEG_VIDEO_VP9_PROFILE		(V4L2_CID_CODEC_BASE+512)
 #define V4L2_MPEG_VIDEO_VP9_PROFILE_0		0
相关推荐
Ruiery10 分钟前
Linux 6.6内核 PCIe 深度解析(九):复位机制 — 从 FLR 到 Secondary Bus Reset 的降级链
linux·运维·服务器
学烹饪的小胡桃24 分钟前
WGCLOUD支持哪些告警方式
linux·运维·服务器·网络·安全
墨有6661 小时前
#Linux系统命令行操作指南
linux
做运维的阿瑞1 小时前
Linux ELF 文件
linux·运维·服务器
Escalating_xu1 小时前
【Makefile 进阶】从自动发现源文件、模式规则到目录分离与多模块递归构建
linux·开发语言
星辰徐哥1 小时前
鸿蒙PC平台 Gnote 笔记应用适配实战:从 Linux 到 鸿蒙PC 的 Electron 迁移
linux·笔记·electron·harmonyos·gnote
一直C1 小时前
Linux应用软件编程|嵌入式轻量级数据库SQLite3完整学习笔记(命令行+C语言API)
linux·sqlite
神威难绷泪1 小时前
TCP并发服务器:多进程 多线程 IO多路复用(select poll epoll)
linux·ipc·tcp并发服务器
kruptos1 小时前
嵌入式 Linux 驱动开发:第一个内核模块怎么写?
linux·运维·驱动开发·嵌入式硬件
wangqiaowq1 小时前
langfuse linux下的安装部署
linux·运维·服务器