Pipline Model Session
Pipeline Setting Policy
overview:
IPipelineModelManager:一个Logic Device对应于一个Manager。用于创建和管理PipelineModel。
API:
get() / getPipelineModel() 当调用 IPipelineModelManager 的 get() 接口时会创建一个IPipelineModel,并会创建一个保存(openID,deviceID,DualCamera)信息的Static Info对象
IPipelineModel:
API:
open() / close() 当调用 IPipelineModel 的 open() 接口时,会创建Open Info,并调用到 IHalDeviceAdapter给sensor上电。
configure() 当调用 IPipelineModel 的 configure() 接口时,会创建IPipelineModelSession和IPipelineSettingPolicy,
通过session和policy去创建PipelineContext,PipelineContext会把各个Node串联起来组成一个Pipeline。
submitRequest() 当调用 IPipelineModel 的 configure() 接口时,会调用到IPipelineModelSession,创建一个PipelineFrame,放到Pipeline中跑。
beginFlush() / endFlush()
Static Info:get() / getPipelineModel() 被调用时创建,创建后不可更改。
Open Info:open() / close()被调用时创建,创建后不更改。
IPipelineModelSession:第一阶段配置时,会产生与Pipeline 和 Policy不相关的信息(openmode,sessionParams,metadata)。创建后不可更改。
第二阶段配置时,会产生与Pipeline 和 Policy强相关的信息。创建后不可更改。
IPipelineSettingPolicy: 创建一些策略,并
IHalDeviceAdapter: 管理sensor的上电下电
OperationTimeoutHandler:
IPipelineModelCallback:
IPipeline 数据域:
第一阶段的配置信息是独立于Pipeline的,当第一阶段的配置信息输入到IPipelineSettingPolicy会产生第二阶段的信息,根据第二阶段信息产生特定的Pipeline。
第一阶段的信息:Stream相关信息。
第二阶段信息:sensor的设置信息,P1Node硬件设置信息,Pipeline需要哪些Node,streamfeature的设置。
Pipeline Model:
配置阶段经过第一阶段配置和第二阶段配置后,会根据配置信息生成特定的PipelineContext。
请求阶段会创建一个PipelineFrame放到PipelineContext 的 Pipeline Queue 运行。
ConfigState:
配置Pipeline时,根据第一阶段的信息和IPipelineSettingPolicy,会产生和PipelineContext相关的信息(stream中buffer的数量,CPU的控制),
最后会这些信息创建出一个PipelineContext
RequestState:
上层通过函数submitRequest()下放Request到IPipelineModel中的IPipelineModelSession,此时IPipelineModelSession根据IPipelineModelPolicy得到PipelineFrame配置信息。
再创建出PipelineFrame,放到PipelineContext中跑。
IPipelineModelPolicy:
配置阶段决定一些用于创建PipelineContext的信息。请求阶段决定一些用于创建PipelineFrame的信息。
最上层提供一个IPipelineModelPolicy接口,下层又分为ConfigSettingPolicyMediator 和 RequestSettingPolicyMediator,分别对应以上的配置阶段和请求阶段
通过以上两个Mediator来串联起各个Policy
ConfigSettingPolicyMediator :
ConfigSettingPolicyMediator 是一个容器,其中包含了不同模块的Policy,全部Policy进行先后排序产生完整的一个PipelineContext的配置信息。
PipelineNodeNeed:决定哪些节点是要添加到管道的
SensorSettingPolicy:决定sensor的mode,size属性
Configuation_P1HSettingPolicy:摄像头P1的硬件设置
Configuation_P1DmaNeedPolicy:摄像头P1是否需要DMA
Configuration_StreamInfo_P1Policy:摄像头P1对应的Stream中的buffer数量(RAW buffer数量)
Configuration_StreamInfo_NonP1Policy:非摄像头P1对应的Stream中的buffer数量(FD buffer数量)
StreamingFeatureSettingPolicy:Streaming Feature Setting(VHDR,NR3D)
ConfigSettingPolicyMediator:确定需要哪些Policy 和 各个policy之间的先后联系。
ConfigurationAPPStreamInfoMaxBufNumPolicy:app image stream流中跑的最多buffer数量。
RequestSettingPolicyMediator:
同样的一个request经过各个Policy进行配置,最后通过IOMAP生成一个Pipeline Frame放到PipelineContext跑。
FacingDetectionIntent Policy:决定是否使能面部识别
CaptureSettingUpdate Policy:
P2NodeDecision Policy:决定哪个P2节点来产生 output image和meta stream
FeatureSetting Policy:决定streaming和capture所需要的feature,以及这些feature什么时候开关。
Topology Policy:节点拓扑图,也就是这一次所要跑的Node,以及跑Node的先后顺序。
IOMAP Policy;P2StreamNode和P2CaptureNode的输入输出。
RequestSettingPolicyMediator:决定这一个Request需要哪些Policy,以及Policy先后关系。
源码地址:
PipelineModel and PipelineSession:
/vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/model/
PipelineContext:
/vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/pipeline/
标签:Pipeline,创建,配置,PipelineContext,信息,Policy,Model From: https://www.cnblogs.com/zsy12138/p/11393352.html