近期工作上的业务将要从 HAL1 迁移到 HAL3 了,为了早日进入正常业务状态,我得提前把 Camera HAL3 的几个重要流程追踪一遍。
按照 HAL1 时候的思路,我打算从 Open Camera,即打开相机的流程开始分析。打开相机的流程就是打通 APP 到相机设备之间的连路的过程,按照 Android 的五层架构从上到下依次打通下行控制路线,并通过部署回调来构建上行的状态、数据路线。
这次在业务组内部已经有过一些培训,培训中给出了 HAL3 流程的大体框架,不过光是听培训能掌握到的内容少之又少,必须要再花时间根据这些线索去追踪代码,分析具体流程。
我打算在分析完打开相机流程之后,再把 Start Preview 与 Take Picture,即预览和拍照流程简单分析一轮,争取把 HAL3 的控制流和数据流摸个大概。
在业务培训时,有提到过 Camera HAL3 构建连路的过程,其总体框架可以通过下图直观地感受一下。
红色虚线是上行路线,黑色虚线则是下行路线。
接下来关于打开相机流程分析的系列文章,都将基于这个总体框架来跟踪代码,分析流程。
总的来说,会分成三大部分来分析:
从 App 连接到 CameraService;
从 CameraService 连接到 HAL Service;
从 HAL Service 连接到 Camera HAL。