当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/138558.html

相关文章:

  • 基于Java+SpringBoot+vue前后端分离华强北商城二手手机管理系统设计实现
  • 【论文阅读】HOLMES:通过关联可疑信息流进行实时 APT 检测(SP-2019)
  • HTML 网页中 自定义图像单击或鼠标悬停时放大
  • 从程序员进阶到架构师再到CTO,该如何破解焦虑?
  • 批量将excel文件转csv文件
  • 实现 CSS 文字渐变色效果
  • C++信息学奥赛1148:连续出现的字符
  • 【笔记】岂不怀归:三和青年调查
  • 使用Mavon-Editor编辑器上传本地图片到又拍云云存储(Vue+SpringBoot)
  • QT使用QXlsx实现对Excel的创建与文字的存取 QT基础入门【Excel的操作】
  • 前端遇到困扰怎么办?10年前端在线帮您解决问题,只需一杯下午茶
  • c#值类型和引用类型
  • 机器学习算法示例的收集;MetaAI编码工具Code Llama;“天工AI搜索”首发实测
  • 大模型一、大语言模型的背景和发展
  • Linux常用命令——dhcpd命令
  • Apache和Nginx各有什么优缺点,应该如何选择?
  • 基于JAVA SpringBoot和UniAPP的宠物服务预约小程序
  • TensorRT推理手写数字分类(三)
  • 创建git项目并提交
  • Android JNI修改Java对象的变量
  • VS+Qt 自定义Dialog
  • 从零开始学习 Java:简单易懂的入门指南之时间类(十七)
  • List 去重两种方式:stream(需要JDK1.8及以上)、HashSet
  • 5.8.webrtc事件处理基础知识
  • 无人机甚高频无线电中继通讯U-ATC118
  • 基于5G边缘网关的储能在线监测方案
  • 软件机器人助力基层网点实现存款数据自动化处理
  • Win10怎么关闭自动更新?简单4招为你解决烦恼!
  • 【AWS】安装配置适用于 Eclipse 的 AWS 工具包
  • vue页面在table字段后加单位