当前位置: 代码迷 >> 综合 >> 【Android Camera2】Camera2系统源码5大模块
  详细解决方案

【Android Camera2】Camera2系统源码5大模块

热度:40   发布时间:2024-01-10 22:27:02.0

Camera2系统源码5大模块

  • 一、简介
  • 二、源码5大模块
    • 2.1 应用框架
    • 2.2 AIDL
    • 3.3 原生框架
    • 3.4 相机服务
    • 3.5 HAL
  • 三、总结

一、简介

本片文章主要正对Camera2源码分析做一次宏观的拆分和概览,后续会一小块一小块的进行源码讲解。

相关文章:

  1. Android Camera系列文章目录索引汇总
  2. Android Camera2 综述
  3. Camera2开源项目源码分析汇总
  4. 源码分析 —— Camera2Basic官方源码分析
  5. Android Camera架构设计详解

二、源码5大模块

Camera2的源码总共分为6大模块。如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j9kb9LSQ-1627209883385)(../../img/android_fwk_all.png)]

模块 说明
应用框架 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:

  1. package android.hardware.camera2
  2. package android.hardware.camera2.extension
  3. package android.hardware.camera2.impl
  4. package android.hardware.camera2.marshal
  5. package android.hardware.camera2.params
  6. 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定义的接口和相机硬件设备供应商进行交互。
后续会逐一进行拆解进行分析。

  相关解决方案