Android相机-HAL-Rockchip-hal3

引言:

对于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 相应配置文件

相关推荐
00后程序员张5 小时前
对比 Ipa Guard 与 Swift Shield 在 iOS 应用安全处理中的使用差异
android·开发语言·ios·小程序·uni-app·iphone·swift
陈天伟教授5 小时前
人工智能应用-机器视觉:AI 鉴伪 06.人脸控制技术
人工智能·神经网络·数码相机·生成对抗网络·dnn
悠哉清闲7 小时前
不同车型drawable不同
android·开发语言
00后程序员张9 小时前
在 iOS 设备上同时监控 CPU、GPU 与内存的方法
android·ios·小程序·https·uni-app·iphone·webview
测试_AI_一辰10 小时前
项目实践笔记 9:打卡/日报Agent项目Bug 修改与稳定性收口(v1.0)
android·开发语言·人工智能·功能测试·ai编程·ab测试
马 孔 多 在下雨10 小时前
Kotlin协程进阶王炸之作-Kotlin的协程到底是什么
android·开发语言·kotlin
冬奇Lab10 小时前
【Kotlin系列15】多平台开发实战:一次编写,多端运行
android·开发语言·kotlin
Dxy123931021610 小时前
告别默认排序:MySQL自定义排序的“炼金术”
android·数据库·mysql
请叫我大虾10 小时前
发现一个jdk中ArrayList的小BUG
android·java·bug
一起养小猫11 小时前
Flutter for OpenHarmony 实战:双控制系统实现(按钮+键盘)
android·flutter·计算机外设·harmonyos