相机HAL

news2024/12/25 22:30:26

相机HAL

  • 1、概览实现 HAL
  • 2、相机 HAL
    • 2.1 AIDL 相机 HAL
    • 2.2 相机 HAL3 功能
    • 2.3 Camera HAL1 概览

相机 HAL
相机 实现 HAL

android12-release
在这里插入图片描述


1、概览实现 HAL

HAL 位于 相机驱动程序更高级别的 Android 框架 之间,它定义您必须实现的接口,以便应用可以正确地操作相机硬件。相机 HALHIDL 接口在 hardware/interfaces/camera 中定义。(HAL 硬件抽象层定义了由相机服务调用、且您必须实现以确保相机硬件正常运行的标准接口(Camera内核驱动程序)。)

典型的绑定式 HAL 必须实现以下 HIDL 接口:

  • ICameraProvider:用于枚举单个设备并管理其状态。
  • ICameraDevice:相机设备接口。
  • ICameraDeviceSession:活跃的相机设备会话接口。

参考 HIDL 实现适用于 CameraProvider.cppCameraDevice.cppCameraDeviceSession.cpp。该实现封装了仍在使用旧版 API 的旧 HAL。从 Android 8.0 开始,相机 HAL 实现必须使用 HIDL API;不支持使用旧版接口。

2、相机 HAL

Android 的相机硬件抽象层 (HAL) 可将 android.hardware.camera2 中较高级别的相机框架 API 连接到底层的相机驱动程序和硬件。 从 Android 13 开始,相机 HAL 接口使用 AIDL 进行开发。 Android 8.0 引入了 Treble,用于将 Camera HAL API 切换到由 HAL 接口描述语言 (HIDL) 定义的稳定接口。 如果您之前为 Android 7.0 及更低版本开发过相机 HAL 模块和驱动程序,请注意相机管道中发生的重大变化。

2.1 AIDL 相机 HAL

对于搭载 Android 13 或更高版本的设备,该相机框架包含对 AIDL 相机 HAL 的支持。该相机框架还支持 HIDL 相机 HAL,不过,在 Android 13 或更高版本中添加的相机功能只能通过 AIDL 相机 HAL 接口使用。如需在升级到 Android 13 或更高版本的设备上实现此类功能,设备制造商必须将其 HAL 进程从使用 HIDL 相机接口迁移到使用 AIDL 相机接口。

实现 AIDL 相机 HAL
有关 AIDL 相机 HAL 的参考实现,请参阅 hardware/google/camera/common/hal/aidl_service/


AIDL 相机 HAL 规范位于以下位置:

  • 相机提供程序: hardware/interfaces/camera/provider/aidl/
  • 相机设备: hardware/interfaces/camera/device/aidl/
  • 相机元数据: hardware/interfaces/camera/metadata/aidl/
  • 常见数据类型: hardware/interfaces/camera/common/aidl/

对于迁移到 AIDL 的设备,设备制造商可能需要修改 Android SELinux 政策 (sepolicy) 和 RC 文件,具体取决于代码结构。

验证 AIDL 相机 HAL
如需测试 AIDL 相机 HAL 实现,请确保设备已通过所有 CTS 和 VTS 测试。Android 13 引入了 AIDL VTS 测试 VtsAidlHalCameraProvider_TargetTest.cpp

2.2 相机 HAL3 功能

重新设计 Android Camera API 的目的在于大幅提高应用对于 Android 设备上的相机子系统的控制能力,同时重新组织 API,提高其效率和可维护性。借助额外的控制能力,您可以更轻松地在 Android 设备上构建高品质的相机应用,这些应用可在多种产品上稳定运行,同时仍会尽可能使用设备专用算法来最大限度地提升质量和性能。

版本 3 相机子系统将多个运行模式整合为一个统一的视图,您可以使用这种视图实现之前的任何模式以及一些其他模式,例如连拍模式。这样一来,便可以提高用户对聚焦曝光以及更多后期处理(例如降噪对比度锐化)效果的控制能力。此外,这种简化的视图还能够使应用开发者更轻松地使用相机的各种功能。

API 将相机子系统塑造为一个管道,该管道可按照 1:1 的基准将传入的帧捕获请求转化为帧。这些请求包含有关帧的捕获和处理的所有配置信息,其中包括分辨率和像素格式手动传感器镜头和闪光灯控件3A 操作模式RAW 到 YUV 处理控件统计信息生成等等。

简单来说,应用框架从相机子系统请求帧,然后相机子系统将结果返回到输出流。此外,系统还会针对每组结果生成包含色彩空间和镜头遮蔽等信息的元数据。您可以将相机版本 3 看作相机版本 1 的单向流管道。它会将每个捕获请求转化为传感器捕获的一张图像,这张图像将被处理成:

  • 包含有关捕获的元数据的 Result 对象。
  • 图像数据的 1 到 N 个缓冲区,每个缓冲区会进入自己的目标 Surface

可能的输出 Surface 组经过预配置:

  • 每个 Surface 都是一个固定分辨率的图像缓冲区数据流的目标位置。
  • 一次只能将少量 Surface 配置为输出(约 3 个)。

一个请求中包含所需的全部捕获设置,以及要针对该请求将图像缓冲区(从总配置组)推送到其中的输出 Surface 的列表。请求可以只发>生一次(使用 capture()),也可以无限重复(使用 setRepeatingRequest())。捕获的优先级高于重复请求的优先级。

在这里插入图片描述

2.3 Camera HAL1 概览

注意:由于 Camera HAL1 已弃用,建议在搭载 Android 9 或更高版本的设备上使用 Camera HAL3。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1005904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python解析MDX词典数据并保存到Excel

原始数据和处理结果: https://gitcode.net/as604049322/blog_data/-/tree/master/mdx 下载help.mdx词典后,我们无法直接查看,我们可以使用readmdict库来完成对mdx文件的读取。 安装库: pip install readmdict对于Windows平台还…

Vue3路由

文章目录 Vue3路由1. 载入vue-router 库2. 实例2.1 Vue.js vue-router 实现单页应用2.2 router-link创建链接2.3 router-view显示与url对应组件2.4 <router-link> 相关属性 Vue3路由 1. 载入vue-router 库 Vue.js 路由需要载入vue-router 库 安装直接下载地址&#xf…

Android Aidl跨进程通讯(四)--接口回调,服务端向客户端发送数据

学更好的别人&#xff0c; 做更好的自己。 ——《微卡智享》 本文长度为3325字&#xff0c;预计阅读9分钟 前言 前几篇介绍了AIDL通讯的基础&#xff0c;进阶和异常捕获&#xff0c;本篇就来看看服务端怎么向客户端来实现发送消息。 实现服务端往客户端发送消息&#xff0c;主要…

6.2.3 【MySQL】InnoDB的B+树索引的注意事项

6.2.3.1 根页面万年不动窝 B 树的形成过程是这样的&#xff1a; 每当为某个表创建一个 B 树索引&#xff08;聚簇索引不是人为创建的&#xff0c;默认就有&#xff09;的时候&#xff0c;都会为这个索引创建一个 根节点 页面。最开始表中没有数据的时候&#xff0c;每个 B 树…

S/4 FI之FBL3N/FBL3H/FAGLL03/FAGLL03H的区别

SAP 系统中&#xff0c;为了显示财务凭证行项目&#xff0c;由于不同的时间开发的功能&#xff0c;但实际在使用的过程&#xff0c;到底有些什么样区别&#xff1f; 本文档就是想对这一个问题做一个整体上的说明。 FBL3N&#xff0c;就是传统的行项目报表&#xff0c;在最早的…

刷刷刷——双指针算法

双指针算法 这里的双指针&#xff0c;可能并不是真正意义上的指针&#xff0c;而是模拟指针移动的过程。 常见的有两种&#xff1a; 双指针对撞&#xff1a; 即在顺序结构中&#xff0c;指针从两端向中间移动&#xff0c;然后逐渐逼近 终止条件一般是&#xff1a; left ri…

MATLAB中ischange函数用法

目录 语法 说明 示例 均值的变化 线性区的变化 矩阵数据 ischange函数的功能是查找数据中的突然变化。 语法 TF ischange(A) TF ischange(A,method) TF ischange(___,dim) TF ischange(___,Name,Value) [TF,S1] ischange(___) [TF,S1,S2] ischange(___) 说明 ​…

Python实现机器学习(下)— 数据预处理、模型训练和模型评估

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本门课程将介绍人工智能相关概念&#xff0c;重点讲解机器学习原理机器基本算法&#xff08;监督学习及非监督学习&#xff09;。使用python&#xff0c;结合sklearn、Pycharm进行编程&#xff0c;介绍iris&#xff08;鸢尾…

windows10搭建RocketMq

windows10搭建RocketMq 文章目录 windows10搭建RocketMq1.下载二进制RocketMq2.配置环境变量3.启动4.RocketMq控制台安装 1.下载二进制RocketMq 下载链接 2.配置环境变量 变量名:ROCKETMQ_HOME变量值:MQ解压路径 修改runbroker.cmd和runserver.cmd文件 把%CLASSPATH%用引…

SpringBoot + Prometheus + Grafana 打造可视化监控

SpringBoot Prometheus Grafana 打造可视化监控 文章目录 SpringBoot Prometheus Grafana 打造可视化监控常见的监控组件搭配安装Prometheus安装Grafana搭建SpringBoot项目引入依赖示例:监控SpringBoot内置Tomcat线程池的情况grafana创建监控看板 后台SpringBoot服务添加自…

【深度学习】 Python 和 NumPy 系列教程(十):NumPy详解:2、数组操作(索引和切片、形状操作、转置操作、拼接操作)

目录 一、前言 二、实验环境 三、NumPy 0、多维数组对象&#xff08;ndarray&#xff09; 1. 多维数组的属性 1、创建数组 2、数组操作 1. 索引和切片 a. 索引 b. 切片 2. 形状操作 a. 获取数组形状 b. 改变数组形状 c. 展平数组 3. 转置操作 a. 使用.T属性 b…

Redis模块四:常见的数据类型和使用

目录 Redis 的 5 大基础数据类型 ①字符串类型(String) ②字典类型(Hash) ③列表类型(List) ④集合类型(Set) ⑤有序集合类型(ZSet) Redis 的 5 大基础数据类型 String——字符串类型 Hash——字典类型 List——列表类型 Set——集合类型 ZSet——有序集合类型 …

后发而先至的腾讯混元大模型,到底有哪些技术亮点?

2023年的夏天已经结束了&#xff0c;但是&#xff0c;围绕AIGC大模型的关注热度&#xff0c;却丝毫没有衰退的意思。 在过去的大半年里&#xff0c;我们亲眼见证了大模型浪潮的崛起&#xff0c;甚至可以说是疯狂。截止7月&#xff0c;国内的大模型数量&#xff0c;已经超过130个…

MySQL与ES数据同步之异步调用

文章目录 简述SpringBoot项目引入依赖配置文件项目结构实体类配置类RabbitMQ交换机队列声明&#xff0c;绑定配置类回调接口配置类 Mapper接口UserMapper接口UserEsMapper Controller类Service接口Service实现类监听类/消费者 简述 上一篇是同步调用&#xff0c;我们在中间加上…

【海思SS626 | 开发环境】VMware17安装Ubuntu 18.04.6

目录 一、下载 Ubuntu 18.04.6 LTS二、VMware17创建虚拟机三、安装Ubuntu18.04LTS四、安装其他软件五、总结 一、下载 Ubuntu 18.04.6 LTS 问题&#xff1a;为什么要下载 Ubuntu18.04.6 LTS 而不是使用最新的&#xff0c;或者其他Linux发行版&#xff1f; 答&#xff1a;在ss6…

Python 图形化界面基础篇:使用框架( Frame )组织界面

Python 图形化界面基础篇&#xff1a;使用框架&#xff08; Frame &#xff09;组织界面 引言什么是 Tkinter 框架&#xff08; Frame &#xff09;&#xff1f;步骤1&#xff1a;导入 Tkinter 模块步骤2&#xff1a;创建 Tkinter 窗口步骤3&#xff1a;创建框架&#xff08; F…

如何做到安全上网

随着信息化的发展&#xff0c;企业日常办公越来越依赖互联网&#xff0c;而访问互联网过程中&#xff0c;会遇到各种各样不容忽视的风险&#xff0c;例如员工主动故意的数据泄漏&#xff0c;后台应用程序偷偷向外部发信息&#xff0c;木马间谍软件的外联&#xff0c;以及各种挖…

聚观早报 | 荣耀V Purse定档;哪吒S迎来最新OTA升级

【聚观365】9月13日消息 荣耀V Purse定档 哪吒S迎来最新OTA升级 宝马将向其英国工厂投资7.5亿美元 英伟达称霸AI芯片领域致初创公司融资难 甲骨文第一财季收入约125亿美元增长9% 荣耀V Purse定档 不久前&#xff0c;荣耀官方推出了全新的荣耀Magic V2内折叠屏旗舰&#x…

【Linux从入门到精通】信号(信号保存 信号的处理)

本篇文章接着信号&#xff08;初识信号 & 信号的产生&#xff09;进行讲解。学完信号的产生后&#xff0c;我们也了解了信号的一些结论。同时还留下了很多疑问&#xff1a; 上篇文章所说的所有信号产生&#xff0c;最终都要有OS来进行执行&#xff0c;为什么呢&#xff1f;…

在Android studio 创建Flutter项目运行出现问题总结

在Android studio 中配置Flutter出现的问题 A problem occurred configuring root project ‘android’出现这个问题。解决办法 首先找到flutter配置的位置 在D:\xxx\flutter\packages\flutter_tools\gradle位置中的flutter.gradle buildscript { repositories { googl…