前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Camera驱动 | 高通CAMX-CHI代码架构

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

作者头像
Abalone
发布2022-10-05 15:00:24
3K1
发布2022-10-05 15:00:24
举报
文章被收录于专栏:影像技术栈影像技术栈

代码路径

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

先看看camx

camx/src/core
camx/src/core

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

./chi用于与CHI进行交互

camx/src/core/chi
camx/src/core/chi

./hal用于实现hal3的接口

camx/src/core/hal
camx/src/core/hal

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

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

chi-cdk/oem/qcom/
chi-cdk/oem/qcom/

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

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

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

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

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

chi-cdk/oem/qcom/node
chi-cdk/oem/qcom/node
chi-cdk/oem/qcom/node/xxx
chi-cdk/oem/qcom/node/xxx

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

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

chi-cdk/oem/qcom/topology/bitra
chi-cdk/oem/qcom/topology/bitra

其目录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:

Usecase
Usecase

原来是JPEGEncodeLiveSnapshotPreview这个pipeline

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

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

node
node

12055行的修改去git show 一下:

node
node

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

flow
flow

参考:

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先看看camx
  • 再回到vendor/qcom/proprietary/chi-cdk/的内容
  • node/中存放了用户自定义的功能
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档