2024年11月03日 第26讲 Camera Native FW Device架构介绍 极客笔记
本讲是Android Camera Native Framework专题的第26讲,我们介绍Camera Native FW Device架构介绍。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
从两个角度来看Camera Device架构
回调Result Metadata和Image Buffer给上层 – FrameProcessor和Stream
CameraDeviceBase接口用于Client操作HAL2/HAL3 Device, Camera2Device是过渡产品,代码已经废弃
HidlCamera3Device对接HIDL HAL层接口,AidlCamera3Device对接AIDL HAL层接口,他们都继承自Camera3Device
camera_stream是一个结构体,与HAL Stream长得一模一样
疑问 | 答案 |
---|---|
为什么要抽象出 Camera3Stream | 1.Input和Output Stream的基类,继承camera_stream(与HAL Stream长得一样的结构体) 2.维护Stream的状态机切换 3.提供接口访问Stream的基本信息,比如ID、width、height、usage、dataspace等等 4.提供接口转换成HAL Stream |
为什么要抽象出 Camera3IOStreamBase | Input和Output Stream的基类,用于维护哪些Buffer给HAL了,感觉这个类有点冗余了,直接放Camera3Stream可能更好 |
为什么要抽象出 Camera3OutputStreamInterface | 1.Camera3Device对Input Stream和Output Stream操作的流程完全不一样,将Output Stream的特殊操作抽象出来放到Camera3OutputStreamInterface 2.对Input Stream的操作还是放在Camera3Stream,这是做得不太好的地方 |
上层使用API1时,Buffer送到Stream后,要么直接送给上层(Preview+Recording Stream),要么送给Processor取出Buffer回调给上层。
Processor | 作用 |
---|---|
StreamingProcessor | 创建Preview和Recording的Stream |
JpegProcessor | 创建Jpeg的Stream,用于Jpeg拍照 |
CallbackProcessor | 创建Callback的Stream,用于预览Callback |
ZslProcessor | 创建ZSL的Stream,用于实现ZSL逻辑 |
本文链接:http://so.lmcjl.com/news/16914/