CameraFramework架构

又是很久没有写了,这几天一直在看camera framework相关源码,于是乎整理出了这个架构图。Camera API2比较好整理,反而是Camera API1花了我不少时间。好了,现在开始正文吧。本文主要是基于Android 10源码分析得出。
横向看:Camera从上到下,主要分为三层:APP client 、CameraFramework、CameraHal。这三层分别运行在不同的进程,APP client运行在APP用户进程中,CameraFramework运行在cameraserver进程中,而CamerHal运行在provider进程中。
纵向看:Camera 包含Camera API1和Camera API2。Camera API2与API1完全不同,调用流程也不一样,Camera API2更为复杂,但是支持的功能更多,比如3A控制等等,然而API1是无法支持的。

APP client

相关代码目录:frameworks/base/core/java/android/hardware
主要是运行在app client进程中,主要包含譬如CameraManager.java、Camera.java等Java文件和部分C++文件,譬如Camera.cpp等。Java层通过JNI方式调用到navitve相关接口,进而native再通过binder与cameraserver建立通讯。

Camera Framework

相关代码目录:frameworks/av/services/camera/libcameraservice/
cameraserver:camera framework核心进程模块,主要向上层提供API接口能力以及向下通过HIDL方式调用到camera hal层。主要通过以下三个接口进行通讯: ICameraDevice.hal、ICameraDeviceSession.hal、ICameraProvider.hal。

Camera Hal

相关接口代码目录:hardware/interfaces/camera/
从Android 8以后,camerahal 以单独的进程(camera provider)进行运行于native服务中,全部通过binder进行通讯(HIDL方式)。这部分主要有SOC厂商实现,位于vendor目录下。camerahal提供了丰富的功能给到上层。
好了,其他的就不多说了,都在图里面了:

小结

这个还是比较简单的总结,主要记录一下最近的一个学习成果。有了这个架构图,后续进行初始化分析,调用流程就事半功倍了(其实部分初始化流程以及调用流程已经画出来了,只不过使用这个drawio不太上手,没有EA方便,所以还没正式整理出来)。接下来会进一步研究部分调用流程和CameraHal层架构。
小弟不才,如果有什么错误,还请多多指教~

相关参考:
https://source.android.com/devices/camera#architecture

Android 10 Camera学习笔记:Camera Framework架构相关推荐

  1. 【高通SDM660平台 Android 10.0】(12) --- Camera Chromatix 代码分析

    [高通SDM660平台 Android 10.0]Qcom Camera Daemon 代码分析 一.chromatix_imx258_lc898217xc 目录 1.1 例:imx258_lc898 ...

  2. motan学习笔记 二 motan架构分析

    motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Demo 之 ...

  3. 架构mysql_MySQL学习笔记之MySQL架构

    MySQL 最重要.最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理及其他系统任务和数据的存储/提取相分离.这种处理和存储分离的设计可以在使用时根据性能.特性,以及其他需求来选择数据存储的 ...

  4. Android编译及编译脚本、Android构建基础学习笔记

    Android编译及编译脚本.Android构建基础学习笔记 Android编译及编译脚本 概述 Android.mk转换成Android.bp 例子(简单Android.mk文件转Android.b ...

  5. Android开发技术学习笔记

    目标:全面学习知识点,能理解原理,多实战练习并做笔记与总结学习心得 Android开发技术学习笔记记录如下: Android开发Google的官网https://developer.android.g ...

  6. 【Android 10 源码】Camera v1 startPreview 流程

    Camera v1 startPreview 起点位于 android.hardware 包下的 Camera 类中,这是老版本的 Camera 预览的起点. 上面这张相机架构图左边就是关于 Came ...

  7. 【高通SDM660平台 Android 10.0】(13) --- Camera ISP 之 数字成像系统介绍

    [高通SDM660平台 Android 10.0] --- Camera ISP 之 数字成像系统介绍 一.成像系统的组成 1.1 视角 1.2 曝光 1.3 感光度 ISO 1.4 光源 1.5 光 ...

  8. 【高通SDM660平台 Android 10.0】(14) --- Camera ISP

    [高通SDM660平台 Android 10.0]--- Camera ISP 一.Camera ISP 与 DSP 区别 1.1 名词解释 1.2 功能解释 1.3 手机摄像头ISP是独立好还是内置 ...

  9. Android之内核学习笔记

    0.Android系统启动 <Android系统启动流程 -- bootloader> <The Android boot process from power on> < ...

最新文章

  1. 如何优雅的在 vue 中使用 非响应式对象_一篇文章上手Vue3中新增的API
  2. c语言中24个字母,菜鸟求助,写一个随机输出26个英文字母的程序
  3. easyui datagrid 后台分页,前端如何处理
  4. Linux 添加计划任务
  5. 为什么word下面有红线_这4个Word细节不做好,老板看了都想骂人!赶紧记下来
  6. Linux系统如何配置64个IP,Linux系统配置IP
  7. 判断web app是否从主屏启动
  8. Python 批量生成中文姓名(百家姓)
  9. 新工作 Day15 周四
  10. 开源项目:使用CUDA NV12转JPG
  11. java ioutils_关于Java:无法解析符号“ IOUtils”
  12. 数据结构1800题-错题集-第三章
  13. nodejs 安装教程
  14. PHP海补知识(6)-- nl2br/ucfirst/ucwords
  15. 2021中国机器人操作系统(ROS)暑期学校-转载
  16. python将电视剧按收视率进行排序_2019电视剧收视率排行榜
  17. D. Concatenated Multiples
  18. P1664 每日打卡心情好
  19. 南卡、ikf蓝牙耳机怎么样?南卡、ikf两款国产高性价比蓝牙耳机对比评测
  20. 蓝牙笔记《蓝牙技术基础》

热门文章

  1. 【ML】英雄联盟对局胜负预测任务
  2. 项目八总结 数据库安全与维护
  3. 微信小程序、uni-app使用iconfont-tools将iconfont彩色字体图标组件化并使用
  4. Kivy转apk——使用打包虚拟机(亲测~)
  5. greenDao框架浅入深出
  6. C语言程序设计(数据结构)——计算一元二次方程
  7. C++break语句用法
  8. 硬件工程师成长之路(6)——程序设计
  9. 解读 | 全球七大央行最新报告:CBDC发行原则与核心特征
  10. c语言Int16_t 什么意思,__IO uint16_t 是什么意思,在定义参数时为什么不直接写成 uint16...