框架
Android Camera硬件抽象层(HAL,Hardware Abstraction Layer)主要用于把底层camera driver的实现接口进行封装,再经过算法处理,提供接口给framework连接起来。
在安卓上实现camera的功能会有这么几个流程实现,open、config、request、result、close
- Hal层封装了kernel的器件实现,向Camera service封装了各种算法接口,供其调用。在hal3中有这么几个接口,ICameraProvider, ICameraDevice, ICameraDeviceSession, ICameraDeviceCallback。
- ICameraProvider主要是向上层提供能力值查询,比如属性类的metadata,并且通过它可以获取CameraDevice3lmpl(例如open camera)和cameradevice3sessionimpl实例。
- AppStreamMgr主要是向framework层提供process result、转化framework request格式为hal3 request和pipeline request、更新厂商定义的帧缓冲区使用方法。
- 在pipeline中p1node主要输出raw图。JPEJ nod e主要是将yuv转化为jpeg,metadata转化为app metadata。P1node就是root node是所有节点的根node,输出raw data到p2c或者p2s
AppStreamMgr
负责AppStreamMgr的回调
alps/vendor/mediatek/proprietary/hardware/mtkcam3/main/hal/device/3.x/app/AppStreamMgr.CallbackHandler.cpp
负责AppStreamMgr的Frame处理
alps/vendor/mediatek/proprietary/hardware/mtkcam3/main/hal/device/3.x/app/AppStreamMgr.FrameHandler.cpp
负责AppStreamMgr的Batch处理
alps/vendor/mediatek/proprietary/hardware/mtkcam3/main/hal/device/3.x/app/AppStreamMgr.BatchHandler.cpp
负责AppStreamMgr的处理请求
alps/vendor/mediatek/proprietary/hardware/mtkcam3/main/hal/device/3.x/app/AppStreamMgr.RequestHandler.cpp
负责AppStreamMgr的结果返回
alps/vendor/mediatek/proprietary/hardware/mtkcam3/main/hal/device/3.x/app/AppStreamMgr.ResultHandler.cpp
负责AppStreamMgr的Config处理
alps/vendor/mediatek/proprietary/hardware/mtkcam3/main/hal/device/3.x/app/AppStreamMgr.ConfigHandler.cpp
Open