本讲是Android Camera Native Framework专题的第39讲,我们介绍Camera Native FW的Camera3Device初始化流程详解。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
Android Camera API2 Open Flow
流程说明:
Camera App调用CameraManager的openCamera方法,调用到CameraService的connectDevice,然后创建CameraDeviceClient,在Camera2ClientBase的initializeImpl中创建AidlCamera3Device,然后在AidlCamera3Device的initialize方法中调用CameraProviderManager的openAidlSession方法,进而通过ICameraDevice的open方法调用到HAL去执行Open Camera动作。
AidlCamera3Device::initialize() Flow
Main Task | Description |
---|---|
创建Session | 与HAL交互打开Camera |
CAMERA CHARACTERISTICS | 获取静态Metadata,判断是否支持 •mSupportNativeZoomRatio •mIsCompositeJpegRDisabled |
LOGICAL MULTI-CAMERA CONFIGURATION | 如果是Logical Multicam,则对mPhysicalDeviceInfoMap,mDistortionMappers 和 mZoomRatioMappers,mUHRCropAndMeteringRegionMappers进行相应的赋值 |
METADATA QUEUES | 初始化Metadata Queue,通过FMQ (Fast Message Queue) 用共享内存的方式来传递CaptureRequest和CaptureResult Metadata Buffer |
Camera3Device::initializeCommonLocked() Flow
Main Task | Description |
---|---|
线程管理 | •StatusTracker •Request Thread •Preparer Thread •CameraServiceWatchdog |