总览:
在camera service中通过四个接口来与HAL交互,Camera Server通过ICameraProvider获得一些其他接口,Camera Server通过ICameraDevice获得HAL层对于摄像头的一个抽象设备,
Camera Server通过ICameraDeviceSession来进行会话,IDeviceCallback用于HAL将数据传递回Camera Server。
HAL的接口大致可以分为Device HAL和Provider HAL。
Middleware层
APP Stream Manager + Camera Device Manager:实现IDeviceCallback的接口。
APP Stream Manager:Framework层传递下来的Request由APP Stream Manager进行解析,进行callback的注册,并在下层有数据时进行打包,回调。
Pipeline Model:主体是Pipline Context,其中包含所有的组件,并管理frame的生命周期。
CamSetting:主体是FeatureSetting,所有对于HAL3的配置,都会保存在FeatureSetting中。
MetadataProvider:对于Metada做一个集中地管理,并回调给Framework。
StreamBuffer:管理Pipeline中的StreamBuffer。
Pipe层
Hardware Node层:包含了管道中每个节点的实现。
P1Node:双摄会有两个P1Node,并且在P1Node的下挂载了SyncHelper子管道用于同步两颗摄像头的数据,生成RAW数据。3A和ISP的数据的交互。
Raw16Node:APP需要RAW数据时,将Raw16节点加入整个管道中,将P1Node的Raw数据进行转换为Raw16,打包,然后传回给APP。
P2CaptureNode:用于takepicture(HDR,夜景)功能的节点,并在其下挂载了CaptureFeaturePiple,在FeaturePiple中又有各个节点(MetaFrameNode,YUVNode)用于实现其功能,
在FeaturePiple中还有pipePlugin(三方算法挂载点(美颜,虚化)),通过pipePlugin挂载到FeaturePiple的对应的节点。
FDNode:人脸识别节点。
JPEGNode:压缩图片为jpeg数据格式的节点。
P2StreamingNode:实现了preview和record功能的节点,并在其下挂载了StreamingFeaturePiple用于实现其功能,在FeaturePiple中用于实现其功能。
在FeaturePiple中还有pipePlugin(三方算法挂载点),通过pipePlugin挂载到FeaturePiple的对应的节点。
Pipeline框架:
Pipeline Model 是HAL3最核心的组件,当Framework向HAL3传递一个Request时,Pipeline Model接收到后调用camseting去转化这一个Request,获取其中的CaptureStream,StreamimgStream
· 保存到IPipelineFrame,双摄对应的两个P1Node抓取不同的图像数据,再根据上面配置的是Streaming还是Capture来走不同的组合的Node而形成P2StreamingNode / P2CaptureNode,PipelineFrame作为数据流过不同的节点被处理,
如果是P2CaptureNode,走完后会被压缩为JPEG数据并回调上去。
如果是P2StreamingNode ,走完后判断是否做面部识别,并将数据回调给preview / record,再回调给surface。
标签:HAL3,HAL,overview,APP,Camera,挂载,FeaturePiple,节点 From: https://www.cnblogs.com/zsy12138/p/11392970.html