1. Camera交互相关类
1.1 核心类
CameraManagerCameraDeviceCamera3DeviceCameraServiceCameraProviderManager这些类构成了Camera交互的核心功能。核心类的详细功能可以参考前一篇中的类图。
其中,
CameraDevice是相机设备的抽象,基于HAL的版本,存在不同版本(源码中有1.0/3.2/3.3和3.4版本)的接口和实现,主要功能有获取相机属性、打开相机、检测相机状态等功能。Camera3Device是对HAL版本大于3(即包含了3.2/3.3/3.4版本)的相机设备的抽象。1.2 Callbacks
AvailabilityCallback,提供了相机是否可用状态的回调StateCallback,提供了相机配置、连接、打开、关闭等状态的回调CameraDeviceCallbacks,提供了相机拍摄、结果返回等状态的回调CameraServiceListener,提供了相机状态、触摸状态等状态的回调这些回调或**,在与相机初始化或建立连接时传递到下层,供下层在对应状态发生变化时进行回调。是上下层级之间互相调用的关键。
1.3 Capture
CameraCaptureSession,是CameraDevice相机拍摄会话的管理类,可以处理预览、拍摄或处理图像的请求CaptureRequest,客户端创建的拍摄请求,包含设置和输出CaptureResult,拍摄结果,在拍摄后由CaptureCallback进行后处理CaptureCallback,负责处理拍摄状态变化的回调这些类是相机拍摄的操作管理类,会根据用户的操作、相机设备的配置进行拍摄、后处理等。
1.4 Streams
Camera3InputStream,处理相机设备的输入流Camera3OutputStream,处理相机设备的输出流Camera3StreamBufferListener,相机设备流的Buffer变化的**,包含输入流和输出流这些类主要是将相机设备和用户的操作使用流的方式进行传输,从而显示和控制相机的画面和操作。
2. Camera核心交互
Camera的两个核心功能就是预览和拍照。上图示意了通过
CameraDevice进行的预览和拍照的核心交互。可以看到,在
CameraDevice中维护了一个Request Queue,来统一管理CaptureRequest,保证发起的Request能够先进先出。同时在硬件层,相机设备会按照顺序处理
CaptureRequest,然后发送到输出设备(Configured output surfaces)进行预览,当结束拍摄时,会回调onCaptureCompletet()方法来生成CaptureResult。3. Camera整体交互
上图是将核心交互流程展开后的预览和拍照示意图。其中详细展示了Camera在应用层、框架层和硬件(驱动)层之间的交互,省略了服务层和硬件抽象层(HAL),下面会单独介绍。
4. Camera HAL层交互
上图是服务层的Camera3Device相机设备与HAL层之间进行交互的示意。可以看到在Camera3Device中维护着输入输出请求队列、输入输出流。
HAL层逐个处理从Camera3Device传入的请求,过程包括配置、图像捕获、读取和处理,并将输出流和处理结果返回给Camera3Device。
其中在HAL层还存在一个相机管道,管道包含一些组件的实现,负责对相机拍摄的图像进行处理,例如3A算法、处理控件等。见下图。
By-HW ZCX






































苏公安网备 32011402010933号