该部分代码主要位于 vendor/qcom/proprietary/ 目录下:
其中 camx 代表了通用功能性接口的代码实现集合(CamX),chi-cdk代表了可定制化需求的代码实现集合(CHI),从图中可以看出Camx部分对上作为HAL3接口的实现,对下通过v4l2框架与Kernel保持通讯,中间通过互相dlopen so库并获取对方操作接口的方式保持着与CHI的交互。
camx中有如下几个主要目录:
- core:用于存放camx的核心实现模块,其中还包含了主要用于实现hal3接口的hal/目录,以及负责与CHI进行交互的chi/目录
- csl:Camera System Layer(相机系统层).用于存放主要负责camx与camera driver的通讯模块,为camx提供了统一的Camera driver控制接口.这个目录包含了与相机硬件和底层驱动程序相关的代码和配置文件。它涉及相机的底层操作和功能,如图像传感器、镜头控制、图像处理等。
- hwl: Hardware Layer(硬件层)目录。这个目录包含了与特定硬件平台相关的代码和配置文件。它涉及与硬件交互和驱动程序开发相关的内容。
- swl: Software Layer(软件层)目录。这个目录包含了与软件层面相关的代码和配置文件。它涉及相机功能的高级实现、算法、应用程序接口(API)等。
chi-cdk中有如下几个主要目录:
- core: 用于存放CHI实现的核心模块,负责与camx进行交互并且实现了CHI的总体框架以及具体的业务处理。
- config: 配置编译生成的PRODUCT_PACKAGES
- tools:配置编译的xml
- api:用于存放chromatix的头文件接口,sensor–解析xml的xsd文件,fd–人脸的api
- bin/: 用于存放平台相关的配置项
- topology/: 用于存放用户自定的Usecase xml配置文件
- node/: 用于存放用户自定义功能的node
慢慢添加文件接口的作用
camx/src/hwl/iqinterpolation/gamma15interpolation.cpp
– gamma 获取xml gamma table 的文件. 如果一个gamma table , CopyCCTData(pInput1, pOutput); 为入口
for(int i = 0 ;i < 257; i++){
CAMX_LOG_ERROR(CamxLogGroupIQMod, "mason honeywell Gamma15Interpolation:: CopyCCTData %f",pOutput->mod_gamma15_channel_data[chType].gamma15_rgn_data. table[i]);
}
chi-cdk/core/chiutils/chxutils.cpp
– 加载效果参数,对应的usecase,feature1,feature2,scene,effect.
导入对应scene效果参数, 修改
chiTuningModeParameter.TuningMode[5].subMode.scene = ChiModeSceneSubModeType::Barcode