Android相机-HAL-Rockchip-hal3

news/2025/1/16 3:39:07/

引言:

对于Android相机的 HAL层而言对上实现一套Framework的API接口,对下通过V4L2框架实现与kernel的交互。不同的平台会有不同的实现方案。主要是对Android HAL3的接口的实现。看看rockchip是怎么支持hal3的?

代码目录:

hardware/rockchip/camera/

hardware/rockchip/camera_engine_rkisp/

基本架构:

 

3A控制则是通过control loop接口与camera_engine_isp交互。

其他的一些组件或功能的实现也会调用到其他一些第三方库:

cameraBuffer相关,调用到Gralloc

jpeg编码,调用到Hwjpeg

基本组件:

 

 

Camera hal3 中的模块主要包括 AAL 与 PSL。
AAL:

主要负责与 framework 交互,camera_module 与 API 接口实例 camera3_device_ops 在此模块定义。该模块对此 API 加以封装,并将请求发往 PSL, 并等待接收 PSL 返回相应数据流与控制参数。

PSL:

是物理层的具体实现,基中 gcss、GraphConifg、MediaController 主要负责配置文件 xml 的解析,底层 pipeline 的配置, ControlUnit 主要负责与 camera_engine_isp 的交互,以实现 3a 的控制, 并中转一些请求以及 Metadata 的处理收集上报。ImgUnit、OutputFrameWork、postProcessPipeline 则主要负责获取数据帧并做相应处理以及上报。 V4l2device、V4l2Subdevice 则是负责与 v4l2 驱动交互,实现具体的 io 操作

tunning xml

tunning 文件是效果参数文件

文件的命名方式 :<sensor_name>_<module_name>_<lens_name>.xml, 并将该文件 push 到板子的 /vendor/etc/camera/rkisp1 目录下。最终 3a 库会从该目录中读取符合规则的 tuning 文件。

调试 Raw sensor 数据通路时,也可先 bypass isp。。只需要将 sensor 类型设置为 SOC 即可,此时, tuning 文件可暂不配置。

camera3_profiles.xml

camera3_profiles.xml 中包含了多个 Profiles 节点,Profiles 节点包含一个 camera 完整属性列表。 开发 板上接了几个 sensor,即需要配置几个 Profiles 节点。

 通过如下命令获取到相关的信息:

$ adb shell dumpsys media.camera

编译后生成库:

1) Hal3 库: /vendor/lib/hw/camera.rk30board.so

2) librkisp : /vendor/lib/librkisp.so

3) 3a lib : /vendor/lib/rkisp//

4) 配置文件: /vendor/etc/camera/

上述配置文件是通过预编译将/etc/camera 中的文件 copy 到 android out 目录。 当修改源码编译后, 只需 push camera.rk30board.so 即可, 如修改配置文件, 也只需要 push 相应配置文件


http://www.ppmy.cn/news/1056029.html

相关文章

Java文本块

现实问题&#xff1a; 在Java中&#xff0c;通常需要使用String类型表达HTML&#xff0c;XML&#xff0c;SQL或JSON等格式的字符串&#xff0c;在进行字符串赋值时需要进行转义和连接操作&#xff0c;然后才能编译该代码&#xff0c;这种表达方式难以阅读并且难以维护。 JDK1…

SQLite、MySQL、PostgreSQL3个关系数据库之间的对比

引言 关系数据模型以行和列的表格形式组织数据&#xff0c;在数据库管理工具中占主导地位。今天还有其他数据模型&#xff0c;包括NoSQL和NewSQL&#xff0c;但是关系数据库管理系统&#xff08;RDBMS&#xff09;仍然占主导地位用于存储和管理全球数据。 本文比较了三种实现最…

java.lang.UnsupportedOperationException解决方法

java.lang.UnsupportedOperationException解决方法 先放错误信息业务场景报错分析先看报错代码位置进入源码查看至此 真相大白 解决方法总结 先放错误信息 业务场景 已知有学生 张三李四王五赵六 等人 private List<String> nameList Arrays.asList("张三", &…

Java——一个简单的数学题目生成和回答的程序

这段代码是一个简单的数学题目生成和回答的程序。具体分析如下&#xff1a; 导入必要的类&#xff1a; import java.io.*; import java.util.Random;代码中导入了用于输入输出的 java.io 包和生成随机数的 java.util.Random 类。这些类将在后面的代码中使用到。 定义主类和主方…

python编程中fft的优缺点,以及如何使用cuda编程,cuda并行运算,信号处理(推荐)

A.python中cuda编程的库主要有: cupy、pycuda 1,区别如下: 支持的GPU平台: PyCUDA:PyCUDA是一个用于在Python中编写CUDA代码的库。它支持NVIDIA的CUDA平台,并提供了与CUDA C/C++接口相似的功能。因此,PyCUDA主要用于与NVIDIA GPU交互的应用。 CuPy:CuPy是一个用于在P…

开源跨境电商ERP中的7个重要功能点分析

作为开源跨境电商ERP领域的专家&#xff0c;我将为你详细分析关键的功能点&#xff0c;帮助你理解和应用开源跨境电商ERP系统&#xff0c;为你的业务带来突破性的变革。无论你是个体创业者、中小企业主&#xff0c;还是跨国电商巨头&#xff0c;这些功能点将为你的业务流程优化…

Go语言规范:高质量编程及编码规范

一、简介 高质量编程是指以高标准和良好实践来编写可读、可维护、可测试和性能等方面的优秀表现的代码。 各种边界条件是否考虑完备异常情况处理、稳定性保证易读易维护 &#xff08;一&#xff09;编码原则 从指令的角度考虑&#xff0c;开发中应如何编码&#xff0c;才能减…

记录解决IOS滚动跳转不生效问题

目录 背景 &#xff1a; 解决过程 &#xff1a; 解决方案 &#xff1a; 最终代码 &#xff1a; 背景 &#xff1a; 项目类似于问卷星里面的问卷调查&#xff0c;当你点击提交按钮时&#xff0c; 页面会有弹窗提醒你有哪些题型没回答&#xff0c;点击确认之后&#xff0c; 页…