相机HAL

2023-09-13 10:10:06

相机 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。

更多推荐

POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 数据压缩打更新 (本篇有数据到列节点异步但不延迟的解释)...

开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系liuaustin3,在新加的朋友会分到2群(共1300人左右1+2+3+4)3群即将突破400会关闭自由申请,新人会进4群这

计算机视觉与深度学习-全连接神经网络-激活函数- [北邮鲁鹏]

文章目录基础知识为什么需要非线性操作(激活函数)?激活函数vs数据预处理常用的激活函数Sigmoid函数(Logistic函数)双曲正切函数(Tanh函数)线性整流函数(ReLU函数)LeakyReLU函数Softmax函数基础知识激活函数是神经网络中的一种非线性函数,它作为神经元的输出函数,将输入信号进行转换并引入非

x86架构基础汇编知识

​通用寄存器EAX32位函数返回值AX低16位AH高八位AL低八位EBX32位ECX32位循环次数,this指针EDX32位EBP32位栈底寄存器ESP32位栈顶寄存器ESI源索引寄存器EDI目标索引寄存器EIP无法直接通过汇编操作例子moval,0xffaddal,1产生截断moval,0xffaddax,1产生进位

【C# Programming】继承、接口

一、继承1、派生继承在相似而又不同的概念之间建立了类层次概念。更一般的类称为基类,更具体的类称为派生类。派生类继承了基类的所有性质。定义派生类要在类标识符后面添加一个冒号,接着添加基类名。publicclassPdaItem{publicstringName{get;set;}publicDateTimeLastUpd

《计算机视觉中的多视图几何》笔记(2)

2ProjectiveGeometryandTransformationsof2D本章主要介绍本书必要的几何知识与符号。文章目录2ProjectiveGeometryandTransformationsof2D2.1Planargeometry2.2The2Dprojectiveplane2.2.1Pointsandl

无人机倾斜摄影测量技术标准及关键技术研究

无人机倾斜摄影测量技术在应用过程中,存在模型分辨率不一致、精度不可靠、格式不匹配的问题,但没有现行的标准对任务质量进行评价,这在一定程度上限制了无人机倾斜摄影测量技术进一步发展。《无人机航空摄影测量精品教程》:无人机航测外业作业流程(像控点布设、航线规划、仿地飞行、航拍)和内业数据处理软件(Pix4d、CC、EPS、P

什么是无人机倾斜摄影?无人机倾斜摄影测量测绘中的应用有哪些?

无人机倾斜摄影是国际测绘遥感领域近年发展起来的一项高新技术,通过在同一飞行平台上搭载多台传感器,可以同时从垂直、倾斜等不同角度采集影像,获取地面物体更为完整准确的信息。无人机倾斜摄影测量技术以大范围、高精度、高清晰的方式全面感知复杂场景,通过高效的数据采集设备和专业的数据处理流程生成的数据成果直观反映地物的外观、位置、

WhatsApp营销:避免封禁账号的关键策略

首先,我们需要明白,WhatsApp官方明确反对群发为,随时可能导致账号被封禁的风险存在。因此,我们应该避免避免群发,而更多地采用单一发单的方式。当找到目标客户后,应先仔细研究客户的主页,例如他们的网站、Facebook、LinkedIn主页等信息,然后手动调整模板化的开发信函,以个性化的方式进行发送。如果您使用询盘云

C++:deque的概念以及stack和queue的模拟实现

文章目录stack的模拟实现dequequeue的模拟实现本篇主要总结的是stack和queue的模拟实现以及deque的原理stack的模拟实现和前面的模拟实现相同,首先要看官方实现的功能这里引入了Container的概念,从字面意思来看,也就是说,在实例化模板的时候实际上是需要实例化两个参数的,一个是栈内元素的数据

超级详细 SQL 优化大全

1、MySQL的基本架构1)MySQL的基础架构图左边的client可以看成是客户端,客户端有很多,像我们经常你使用的CMD黑窗口,像我们经常用于学习的WorkBench,像企业经常使用的Navicat工具,它们都是一个客户端。右边的这一大堆都可以看成是Server(MySQL的服务端),我们将Server在细分为sq

MySQL的binlog日志的简介与查看

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻1.Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。Python从入门到精通😁2.毕业设计专栏,毕业季咱们不慌忙,几百款毕业设计等你选。❤️3.Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,

热文推荐