Android 10 Camera学习笔记:Camera Framework架构
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架构相关推荐
- 【高通SDM660平台 Android 10.0】(12) --- Camera Chromatix 代码分析
[高通SDM660平台 Android 10.0]Qcom Camera Daemon 代码分析 一.chromatix_imx258_lc898217xc 目录 1.1 例:imx258_lc898 ...
- motan学习笔记 二 motan架构分析
motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Demo 之 ...
- 架构mysql_MySQL学习笔记之MySQL架构
MySQL 最重要.最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理及其他系统任务和数据的存储/提取相分离.这种处理和存储分离的设计可以在使用时根据性能.特性,以及其他需求来选择数据存储的 ...
- Android编译及编译脚本、Android构建基础学习笔记
Android编译及编译脚本.Android构建基础学习笔记 Android编译及编译脚本 概述 Android.mk转换成Android.bp 例子(简单Android.mk文件转Android.b ...
- Android开发技术学习笔记
目标:全面学习知识点,能理解原理,多实战练习并做笔记与总结学习心得 Android开发技术学习笔记记录如下: Android开发Google的官网https://developer.android.g ...
- 【Android 10 源码】Camera v1 startPreview 流程
Camera v1 startPreview 起点位于 android.hardware 包下的 Camera 类中,这是老版本的 Camera 预览的起点. 上面这张相机架构图左边就是关于 Came ...
- 【高通SDM660平台 Android 10.0】(13) --- Camera ISP 之 数字成像系统介绍
[高通SDM660平台 Android 10.0] --- Camera ISP 之 数字成像系统介绍 一.成像系统的组成 1.1 视角 1.2 曝光 1.3 感光度 ISO 1.4 光源 1.5 光 ...
- 【高通SDM660平台 Android 10.0】(14) --- Camera ISP
[高通SDM660平台 Android 10.0]--- Camera ISP 一.Camera ISP 与 DSP 区别 1.1 名词解释 1.2 功能解释 1.3 手机摄像头ISP是独立好还是内置 ...
- Android之内核学习笔记
0.Android系统启动 <Android系统启动流程 -- bootloader> <The Android boot process from power on> < ...
最新文章
- 如何优雅的在 vue 中使用 非响应式对象_一篇文章上手Vue3中新增的API
- c语言中24个字母,菜鸟求助,写一个随机输出26个英文字母的程序
- easyui datagrid 后台分页,前端如何处理
- Linux 添加计划任务
- 为什么word下面有红线_这4个Word细节不做好,老板看了都想骂人!赶紧记下来
- Linux系统如何配置64个IP,Linux系统配置IP
- 判断web app是否从主屏启动
- Python 批量生成中文姓名(百家姓)
- 新工作 Day15 周四
- 开源项目:使用CUDA NV12转JPG
- java ioutils_关于Java:无法解析符号“ IOUtils”
- 数据结构1800题-错题集-第三章
- nodejs 安装教程
- PHP海补知识(6)-- nl2br/ucfirst/ucwords
- 2021中国机器人操作系统(ROS)暑期学校-转载
- python将电视剧按收视率进行排序_2019电视剧收视率排行榜
- D. Concatenated Multiples
- P1664 每日打卡心情好
- 南卡、ikf蓝牙耳机怎么样?南卡、ikf两款国产高性价比蓝牙耳机对比评测
- 蓝牙笔记《蓝牙技术基础》
热门文章
- 【ML】英雄联盟对局胜负预测任务
- 项目八总结 数据库安全与维护
- 微信小程序、uni-app使用iconfont-tools将iconfont彩色字体图标组件化并使用
- Kivy转apk——使用打包虚拟机(亲测~)
- greenDao框架浅入深出
- C语言程序设计(数据结构)——计算一元二次方程
- C++break语句用法
- 硬件工程师成长之路(6)——程序设计
- 解读 | 全球七大央行最新报告:CBDC发行原则与核心特征
- c语言Int16_t 什么意思,__IO uint16_t 是什么意思,在定义参数时为什么不直接写成 uint16...