一、Node简单介绍
较官方的定义:Node节点在Camx/Chi架构中至关重要,主要用于处理pipeline下发的request,最终的数据处理都是通过封装好的Node节点来进行的。
简单来说Node用于数据处理;
同时也可以是一些特殊的算法处理,比如EIS,FD,SW Remosaic等等。
大概了解下Node所处的具体位置,如下图:
Node在Camx/Chi中均会存在,Camx中主要位于:android/vendor/qcom/proprietary/camx/src/(hwl/swl),例如:IFE,IPE,BPS,Sensor等。
Chi中主要位于:android/vendor/qcom/proprietary/chi-cdk/oem/qcom/node/,例如:三方EIS,memcpy等。
那两种Node之间有何差异呢?
主要体现在:Camx node是平台已经封装好的节点,一般不需要改动;而Chi node则是提供给vendor自定义实现的节点,用于自定义算法处理。
二、Node如何加载
今天讲解的是Chi Node,大概分为三类,主要关注COMPONENT NODE;
enum class ExternalComponentNodeAlgo
{
COMPONENTNODE = 0, ///< Node
COMPONENTALGORITHM = 1, ///< Algorithm
COMPONENTHVX = 2, ///< Hvx
};
在开机过程中系统会加载很多东西,比如各种应用程序、so文件等等,在加载HAL进程时同样会一起加载Node,我们共同在以下方法中梳理Node的加载流程:
android/vendor/qcom/pro