安卓相机系统架构与对应岗位
================================================================================================
1.camera开发涉及岗位:
- 安卓相机应用开发:camera application (camera UI) ====》安卓应用层与应用框架层
- 相机系统开发(算法集成):camera system ====》安卓HAL层与整个系统框架
- 相机效果调试:camera tuning (camera ISP/3A 调试) ====》安卓HAL层
- 相机驱动:camera driver ====》安卓kernal层
岗位之间的区别:camera驱动工程师与camera tuning工程师的区别在哪,职位核心价值又是什么?
================================================================================================
2.大概的任职要求:
(1)熟练掌握C/C++、Java等编程语言以及Linux的使用
(2)负责联发科或高通平台手机项目Camera HAL及frameworks的开发和维护、
(3)负责三方算法的导入、集成及性能优化,例如美颜、暗光、HDR、Bokeh(虚化)、AI等
(4)负责处理相机平台相关bug、能够与组员、领导、算法提供厂商的进行良好沟通
(5)熟悉Camera数据/控制Pipeline,能够独立解决Camera功能适配移植等问题
(6)熟悉常用三方算法的基本原理,如美颜,Bokeh(虚化),多帧降噪等
(7)对camera 3A知识有基本的了解
(8)撰写相应的开发文档
3.Camera根据Android 架构从上至下可分为:
1)Applications: 最上层的应用,编译后生成Camera APK;(Android UI)
2)Application Framework: 主要为Applications提供API; (Java)
3)JNI(Java Native Interface): 使Application Framework和Libraries可交互; (C/C++与Java交互)
4)Libraries: 包括Camera Framework和Camera Service.(C/C++)
5)HAL (Hardware Abstraction): 硬件抽象层, 用来链接driver和 Camera Service; (C/C++)
6) 驱动层:含linux内核(C)
4.学习camera的小目标:
- 通过高通或者联发科(MTK)官网上的文档,进行相机架构与HAL层的学习。
- 初步了解算法集成的基本思路
- 学习MTK平台下,camera open的基本工程
- 单帧算法集成的学习
- metadata参数的学习
- 独立集成一个预览算法
- 独立集成一个多帧拍照算法
- 学习MTK平台Plugin算法流程
- 尝试进行美颜、暗光算法的流程