Google源码网地址链接:https://source.android.com/devices/camera

该Google Camera的文档为系列文章,文章列表:

overview

Camera3

HAL Subsystem

Metadata and Controls

3A Modes and State

Output and Cropping

Errors and Streams

Request Creation

External USB Cameras

Multi-Camera Support

Motion Tracking

Session Parameters

Single Producer,Multiple Consumer

Version Support

相机 HAL3


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

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

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

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

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

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

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

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

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

图 2. 相机核心操作模型

相机 HAL1 概览


注意:相机 HAL1 已弃用。新设备应使用相机 HAL3。
相机子系统的第 1 个版本被设计为具有高级控件和以下三种运行模式的黑盒子:

  • 预览
  • 视频录制
  • 静态拍摄

三种模式具有略有不同又相互重叠的功能。这样就难以实现介于其中两种运行模式之间的新功能,例如连拍模式。


图 1. 相机组件

由于很多设备仍然依赖相机 HAL1,因此 Android 7.0 继续支持该模块。此外,Android 相机服务还支持同时实现两种 HAL(1 和 3),如果您希望通过相机 HAL1 支持性能略低的前置摄像头,并通过相机 HAL3 支持更为高级的后置摄像头,那么这项支持将非常有用。

有一种单独的相机 HAL 模块(拥有自己的版本号),其中列出了多种独立的相机设备,每种都有自己的版本号。要支持设备 2 或更新版本,必须使用相机模块 2 或更新版本,而且此类相机模块可以具有混合的相机设备版本(我们在上文中提到 Android 支持同时实现两种 HAL,就是这个含义)。

Android [Camera 源码] 相机 HAL3(Camera3) Google官方文档(二)相关推荐

  1. android camera 拍照流程,Android -- Camera源码简析,启动流程

    com.android.camera.Camera.java,主要的实现Activity,继承于ActivityBase. ActivityBase 在ActivityBase中执行流程: onCre ...

  2. [WebApp开发]基础教程-Google官方文档-第四篇

    文档内容 在Android Browser中使用控制台API 在WebView中使用控制台API 参考 调试 如果你是在为Android开发web应用,那么,你可以使用控制台(console)的Jav ...

  3. Android 内核源码编译记录

    注:此处内容总结自google官网:AOSP 编译内核.编译完成后刷机部分参考自其他大佬的文章.文中末尾提供了上传至CSDN的msm内核和Aarch64gcc工具 的下载链接,不想从官网下载的可以直接 ...

  4. 【Android 命令行工具】Android 命令行工具简介 ( 官方文档 | SDK 命令行工具 | SDK 构建工具 | SDK 平台工具 | 模拟器工具 | Jetifier 工具 )

    文章目录 一.官方文档 二.Android 命令行工具简介 1.SDK 命令行工具 2.SDK 构建工具 3.SDK 平台工具 4.模拟器工具 5.Jetifier 工具 一.官方文档 Android ...

  5. Android 8.1/9.0 MTK Camera源码分析之快门声音控制流程

    Android 8.1/9.0 MTK Camera源码分析之快门声音控制 在Android 8.1上mtk camera有控制快门声音的接口,但是并没有了控制录像快门声音的接口.之所以会有这个现象, ...

  6. android 汽车 源码_汽车级Linux,无需Google即可运行Android等

    android 汽车 源码 开源新闻让您阅读愉快. 2014年6月28日至7月4日 在本周的开源新闻摘要中,我们庆祝我们的数字独立性,并使用Automotive Grade Linux进行巡游. 再加 ...

  7. Android 8.1/9.0 MTK Camera源码分析之录像快门声音控制流程

    前面已经针对拍照快门声音控制流程进行了分析,接下来分析一下录像快门声音的控制流程. Android 8.1/9.0 MTK Camera源码分析之快门声音控制流程 这两篇文章其实都是相对于手机系统RO ...

  8. Android系统源码学习——源码目录结构介绍

    2019独角兽企业重金招聘Python工程师标准>>> Android 4.0源码目录结构: 本文介绍Android源码目录结构,以便读者理清Android编译系统核心代码在Andr ...

  9. Android项目源码分享

    ├─android web应用 │      jqmDemo_static.zip │      jqmMobileDemo-master.zip │      jqmMobileDemo1_1-ma ...

最新文章

  1. 用深度学习就不怕买到山寨奢侈品?LeCun投了这样一家公司
  2. ajax-典型应用-验证用户名
  3. 数据方面高可用方案简单总结
  4. redis反杀面试官之10问
  5. C# FolderBrowserDialog 的用法
  6. android客户端注入及清除cookie,Android客户端注入及清除Cookie
  7. 她16岁因汶川地震改志学医,仅27岁当上浙大博导!她说:科研是“止不住想念到失眠的对象”...
  8. mysql事务锁导致tomcat崩溃_数据库连接池连接耗尽,导致tomcat请求无响应,呈现出假死状态...
  9. Cookie Theft and Session Hijacking
  10. kafka php 安装配置,kafka安装及Kafka-PHP扩展的使用,kafkakafka-php扩展_PHP教程
  11. python简单代码-python实现顺序表的简单代码
  12. 【深入理解JS核心技术】3. 调用、应用和绑定有什么区别
  13. Unity发布PC版本接入支付(威富通)
  14. ckeditor带公式编辑器
  15. spring quartz 实现全局任务
  16. pygame 精灵精灵组
  17. 思科模拟器(Cisco Packet Tracer7.2.1)安装过程
  18. stp转obj, stp转stl转换小工具
  19. 获取高匿代理ip的想法思路
  20. 【批量解压d文件】d文件是GNSS观测数据文件

热门文章

  1. Android Studio快捷键汇总
  2. bootStrap实现tab页切换
  3. MPU9250的Motion Driver
  4. scrcpy——Android投屏神器
  5. 百度AI的使用:解析身份证
  6. 2022安全员-B证考题及在线模拟考试
  7. pl/sql sql语句
  8. HTML5 基础知识,第 3 部分 HTML5 API 之应用-介绍HTML5 API 的用法和价值,Canvas 提供的创造性,以及Web storage的离线应用
  9. 关于禁止ST芯片SWD引脚导致无法下载程序问题
  10. 用一小时实现的娃娃机,你敢信?