本讲是Android Camera性能分析专题的第14讲,我们介绍从CameraServer角度详解Camera启动性能,包括如下内容:
- 从CameraServer角度详解Camera启动性能
- CameraServer核心函数流程拆解
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
从CameraServer角度详解Camera启动性能
模块 | 开始点 | 结束点 |
---|---|---|
App | 点击Camera App Icon | 开始调用connectDevice |
HAL | 开始调用connectDevice | 调用connectDevice结束 |
App | 调用connectDevice结束 | 开始调用endConfigure |
HAL | 开始调用endConfigure | 调用endConfigure结束 |
App | 调用endConfigure结束 | 调用submitRequestList |
HAL | 调用submitRequestList | CameraServer收到第一帧 |
CameraServer核心函数流程拆解
getCameraCharacteristics
connectDevice
会调用到HAL的CameraHal::openSession
createDefaultRequest
会调用到HAL的CameraHal::constructDefaultRequestSettings
beginConfigure
CameraDeviceClient::beginConfigure //Not implemented yet
createStream
核心在创建 Camera3OutputStream
endConfigure
会调用到HAL的CameraHal::configureStreams
submitRequestList
CaptureRequest送下来后会等待Active
Request thread线程开始给HAL送Request,调用 CameraHal::processBatchCaptureRequests
StatusTracker通知status变化:
Stream 0: first full buffer
HAL回调processCaptureResult后,如果有Buffer,则取出来 queueBuffer给 Consumer