Camera2系统源码5大模块
- 一、简介
- 二、源码5大模块
-
- 2.1 应用框架
- 2.2 AIDL
- 3.3 原生框架
- 3.4 相机服务
- 3.5 HAL
- 三、总结
一、简介
本片文章主要正对Camera2源码分析做一次宏观的拆分和概览,后续会一小块一小块的进行源码讲解。
相关文章:
- Android Camera系列文章目录索引汇总
- Android Camera2 综述
- Camera2开源项目源码分析汇总
- 源码分析 —— Camera2Basic官方源码分析
- Android Camera架构设计详解
二、源码5大模块
Camera2的源码总共分为6大模块。如下图所示:
模块 | 说明 |
---|---|
应用框架 | App上层应用级别,使用 Camera 2 API 与相机硬件进行互动。内部会调用相应的 Binder 接口,以访问与相机互动的原生代码。 |
AIDL | 与 Camera关联的 binder 接口 |
原生框架 | NDK Camera,框架位于 frameworks/av/ 中,提供相当于 CameraDevice 和 CameraCaptureSession 类的原生类。 |
相机服务 | 位于 frameworks/av/services/camera/libcameraservice/CameraService.cpp 下的相机服务是与 HAL 进行互动的实际代码。 |
HAL | 硬件抽象层定义了由相机服务调用、且您必须实现以确保相机硬件正常运行的标准接口 |
2.1 应用框架
源码位于:frameworks/base/core/java/android/hardware/camera2/
分为几个Package:
- package
android.hardware.camera2
- package
android.hardware.camera2.extension
- package
android.hardware.camera2.impl
- package
android.hardware.camera2.marshal
- package
android.hardware.camera2.params
- package
android.hardware.camera2.utils
2.2 AIDL
源码位于 frameworks/av/camera/aidl/android/hardware/ICameraServiceListener.aidl
包含如下:
模块 |
---|
CameraInfo.aidl |
CameraSessionStats.aidl |
CameraStatus.aidl |
ICamera.aidl |
ICameraClient.aidl |
ICameraService.aidl |
ICameraServiceListener.aidl |
ICameraServiceProxy.aidl |
3.3 原生框架
传送门
3.4 相机服务
传送门
3.5 HAL
传送门
三、总结
camera2的源码包含如上5个部分。具体的流程为Camera2上层应用框架通过AIDL接口远程调用到NDK C++层面。然后C++层面提供相应的CameraService
并具体通过HAL定义的接口和相机硬件设备供应商进行交互。
后续会逐一进行拆解进行分析。