天天看点

Android camera框架理解

转自:https://www.jianshu.com/p/bac0e72351e4

总体框图

Android camera框架理解

应用框架:应用代码位于应用框架级别,它使用 Camera 2 API 与相机硬件进行交互。在内部,这些代码会调用相应的 Binder 接口,以访问与相机互动的原生代码。

AIDL:与 CameraService 关联的 Binder 接口可在 frameworks/av/camera/aidl/android/hardware 中找到。生成的代码会调用较低级别的原生代码以获取对实体相机的访问权限,并返回用于在框架级别创建 CameraDevice 并最终创建 CameraCaptureSession 对象的数据。

原生框架:此框架位于

frameworks/av/

中,并提供相当于 CameraDevice 和 CameraCaptureSession 类的原生类。另请参阅 NDK camera2 参考。

Binder IPC 接口:IPC binder 接口用于实现跨越进程边界的通信。调用相机服务的若干个相机 Binder 类位于

frameworks/av/camera/camera/aidl/android/hardware

目录中。 ICameraService 是相机服务的接口;ICameraDeviceUser 是已打开的特定相机设备的接口;ICameraServiceListener 和 ICameraDeviceCallbacks 分别是对应用框架的 CameraService 和 CameraDevice 回调。

相机服务:位于 frameworks/av/services/camera/libcameraservice/CameraService.cpp 下的相机服务是与 HAL 进行互动的实际代码。

HAL:硬件抽象层定义了由相机服务调用、且您必须实现以确保相机硬件正常运行的标准接口。