和你一起终身学习,这里是程序员 Android
本篇文章主要介绍 Android
开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
一、Camera 请求
二、HAL & Camera 子系统
三、Camera启动和预期的操作顺序
四、Camera 硬件Level
一、Camera 请求
应用程序框架向摄像头子系统发出对捕获结果的请求。一个请求对应一组结果。请求封装了有关这些结果的捕获和处理的所有配置信息。其中包括分辨率和像素格式等内容;手动传感器,镜头和闪光灯控制;3A工作模式;RAW到YUV处理控制;和统计信息生成。这样可以更好地控制结果的输出和处理。可以一次执行多个请求,并且提交请求是非阻塞的。并且始终按照接收到的顺序处理请求。
二、HAL & Camera 子系统
相机子系统包括相机管道中组件的实现,例如3A算法和处理控件。相机HAL为您提供了实现这些组件版本的接口。为了保持多个设备制造商与图像信号处理器(ISP或相机传感器)供应商之间的跨平台兼容性,相机管道模型是虚拟的,并不直接对应于任何实际的ISP。但是,它与真实的处理管道足够相似,因此您可以将其有效地映射到硬件。此外,它足够抽象,可以支持多种不同的算法和操作顺序,而不会影响质量,效率或跨设备兼容性。
摄像头管道还支持应用程序框架可以启动以打开诸如自动对焦之类的触发器。它还会将通知发送回应用程序框架,通知应用程序诸如自动对焦锁定或错误之类的事件。
请注意,上图中显示的某些图像处理模块在初始版本中定义不明确。相机管道进行以下假设:
- RAW拜耳输出不在ISP内部进行任何处理。
- 根据原始传感器数据生成统计信息。
- 将原始传感器数据转换为YUV的各种处理块按任意顺序排列。
- 虽然显示了多个缩放和修剪单位,但所有缩放器单位共享输出区域控件(数字缩放)