zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

Camera驱动 | 高通CAMX-CHI代码架构

驱动架构代码 高通 Camera CHI
2023-06-13 09:13:49 时间

代码路径

camx目录中是统一的功能性接口,chi-cdk目录中则是可以供厂商客制化的部分:

先看看camx

camx/src/core 这个目录下就是主要实现hal功能的代码了

./chi用于与CHI进行交互

./hal用于实现hal3的接口

再回到vendor/qcom/proprietary/chi-cdk/的内容

为了有个快速的认识,直接进到**vendor/qcom/proprietary/chi-cdk/oem/qcom/**目录中:

actuator/ 存放对焦模块的配置信息

ois/ 存放防抖模块的配置信息

tuning/ 存放效果参数的配置信息

topology/ 存放用户自定的Usecase配置文件

node/中存放了用户自定义的功能

实存在很多很多自定义的模块,node/下的这些目录都是一个个具有独立处理功能的模块这些模块可以是硬件单元,也可以是软件单元,每个node的可定制化部分会在XML中定义

在这个目录下grep一下virtual,能看到:

其目录topology/ 也和上面说的存放用户自定的Usecase配置文件对上了

一个Node结构的组成如下:

NodeName: 用来定义该Node的名称

NodeId: 用来指定该Node的ID,其中IPE NodeId为65538,IFE NodeId为65536,用户自定义的NodeId为255。

NodeInstance: 用于定义该Node的当前实例的名称。

NodeInstanceId: 用于指定该Node实例的Id。

这些有不同处理功能的Node组成了不同的Pipeline,那么可以看看我们关注的这个TctVirtualCameraNode所在的Pipeline:

原来是JPEGEncodeLiveSnapshotPreview这个pipeline

Camx-CHI架构中,要构成一个pipeline除了node,还需要描述node的输入输出端口(port),以及连接这些node之间的link(参考https://segmentfault.com/a/1190000024445632)

在上述文件中查找,确实有port和link的描述:

12055行的修改去git show 一下:

看上去是修改了link所连接的node和node两端的port,梳理一下具体的修改:

参考:

https://blog.csdn.net/u012596975/article/details/107138576?spm=1001.2014.3001.5501