第39讲 Camera Native FW 之 Camera3Device初始化流程详解

Android Camera API2 Open Flow

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

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

Camera3Device::initializeCommonLocked() Flow

Main Task Description
线程管理 •StatusTracker •Request Thread •Preparer Thread •CameraServiceWatchdog
1 个赞