第27讲 Camera Native FW API1和API2调用HAL3流程介绍

本讲是Android Camera Native Framework专题的第27讲,我们介绍Camera Native FW的API1和API2调用HAL3流程。

更多资源:

资源 描述
在线课程 极客笔记在线课程
知识星球 星球名称:深入浅出Android Camera 星球ID: 17296815
Wechat 极客笔记圈

API1->HAL3 参数设置流程

Camera Native FW API1和API2调用HAL3流程介绍

  • 上层App调用Camera2Client的setParameters将参数送下来

  • Camera2Client会将参数送给StreamingProcessor完成Parameters到CaptureRequest的转换

  • 转换后的CaptureRequest (mPreviewRequest和mRecordingRequest)保存在StreamingProcessor中

API1->HAL3 startPreview流程

Camera Native FW API1和API2调用HAL3流程介绍

  1. 调用StreamingProcessor和JPEG/Callback/ZSL Processor的update Stream,创建Stream

  2. 再次更新Preview/Recording Request

  3. 调用StreamingProcessor的startStream,将Repeating request送给Camera3Device,Camera3Device执行ConfigureStream并submit request给HAL

API1->HAL3 参数回调流程

Camera Native FW API1和API2调用HAL3流程介绍

  • FrameProcessorBase有一个线程不停问CameraDeviceBase是否有可用的CaptureResult

  • 拿到可用的CaptureResult后送给FrameProcessor执行processSingleFrame,处理Face Detect回调和向Parameters更新3A State。

API1 -> HAL3 图像数据回调流程

API1 -> HAL3 图像数据回调流程 – 预览/录像

StreamingProcessor(预览/录像)

Camera Native FW API1和API2调用HAL3流程介绍

CallbackProcessor

这里讨论非setPreviewCallbackTarget方式回调预览Data,PreviewCallbackTarget方式跟上面StreamingProcessor流程一样

Camera Native FW API1和API2调用HAL3流程介绍

API1 -> HAL3 图像数据回调流程 – 拍照

Google创建了一个CaptureSequencer来维护拍照的状态机转换。

Camera Native FW API1和API2调用HAL3流程介绍

API1->HAL3 Non-ZSL && Non-AE Precapture 流程

Camera Native FW API1和API2调用HAL3流程介绍

非ZSL且不带AE Prepare Trigger的拍照流程如上图所示,整个拍照过程由CaptureSequencer来驱动,JpegProcessor收到拍照图像后,通知给CaptureSequencer负责回调给App。

API2->HAL3 控制流程与参数回调

Camera Native FW API1和API2调用HAL3流程介绍

  • CameraDeviceClient收到上层的调用后,会对应调用到Camera3Device,进而调用到HAL层的接口
  • FrameProcessorBase拿到Result Metadata后会回调给CameraDeviceClient,CameraDeviceClient再通过onResultReceived接口回调给上层

API2->HAL3 数据流回调

Camera Native FW API1和API2调用HAL3流程介绍

API2中,所有数据流都走BufferQueue,Camera3Device通知Camera3Stream buffer处理完毕后,会直接queueBuffer给BufferQueue,进而Consumer就会被通知到有Buffer上来了。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Android Camera Native Framework