高通Camx架构解析(二)——从HAL到CHI的交互机制与实现细节

高通camx架构学习(二)——深入理解高通Camx Hal 同样地,CHI中的ExtensionModule在初始化的时候,其构造方法中也会通过调用dlopen方法加载camera.qcom.so库,并将其入口方法ChiEntry通过dlsym映射出来,之后调用该方法,将g_chiContextOps(ChiContextOps,该结构体中定义了很多指针函数)作为参数传入CamX中,一旦进入CamX中,便会将本地的操作方法地址依次赋值给g_chiContextOps中的每一个函数指针,这样CHI之后就可以通过g_chiContextOps访问到CamX方法。 阅读详情

1. 高通Camx架构概述

高通Camx架构是高通公司为Android平台开发的相机软件架构,全称为Camera Experience。这个架构的设计初衷是为了更精细化地控制底层硬件(如Sensor、ISP等关键硬件),同时方便手机厂商进行功能定制化开发。

在Camx架构中,高通将功能划分为两个主要部分:

  • CamX:包含高度统一的功能性接口
  • CHI(Camera Hardware Interface):提供可定制化的部分

这种设计的最大优势在于,即使开发者对CamX核心架构了解不深,也能通过CHI模块方便地添加自定义功能,大大降低了开发门槛。

2. HAL与CHI交互机制

2.1 动态库加载机制

CamX和CHI通过动态库(.so文件)互相加载对方的功能模块,这是整个交互机制的基础:

  1. CamX加载CHI:

    • 通过dlopen加载com.qti.chi.override.so
    • 使用dlsym映射出CHI入口方法chi_hal_override_entry
    • 将CHIAppCallbacks结构体传入CHI,CHI会将本地方法地址回填
  2. CHI加载CamX:

    • 通过dlopen加载camera.qcom.so
    • 使用dlsym映射出CamX入口方法ChiEntry
    • 将ChiContextOps结构体传入CamX,CamX会回填本地方法地址

这种双向绑定机制确保了双方都能调用对方提供的接口,同时保持了模块间的松耦合。

2.2 接口映射实现

在实际交互中,关键的接口映射包括:

  • CamX提供给CHI的接口:

    • process_capture_result:处理拍照结果
    • notify:事件通知
    • 这些接口通过CHIAppCallbacks结构体暴露给CHI
  • CHI提供给CamX的接口:

    • chi_override_process_request:处理拍照请求
    • chi_initialize_override_session:初始化会话
    • 这些接口通过ChiContextOps结构体暴露给CamX

3. 核心组件交互流

深入理解高通Camx实现 和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、概览二、基本组件概念三、组件结构关系四、关键流程详解相机硬件抽象层实现一、概览回顾高通平台Camera HAL历史,之前高通采用的是QCamera & MM-Camera架构,但是为了更精细化控制底层硬件(Sensor/ISP等关键硬件),同时方便手机厂商自定义一些功能,现在提出了CamX-CH... 阅读详情

相关推荐

从CamX-CHI架构看高通平台相机HAL的模块化设计哲学

本文深入解析了高通CamX-CHI架构在Android相机HAL中的模块化设计哲学,详细介绍了其分层架构、核心组件及交互机制。通过CamX与CHI的解耦设计,实现了硬件控制精细化和厂商定制便捷化,显著提升相机系统的灵活性和扩展性。文章还提供了开发实践案例和性能优化技巧,助力开发者高效利用这一架构。

7h6j5k4l3的博客 852

高通Camx架构解析(三)——CamX与CHI交互机制深度剖析

本文深度剖析了高通CamX相机架构与CHI定制层之间的核心交互机制。通过双向动态链接与接口交换的“握手”协议,实现了CamX负责通用硬件操作与CHI专注厂商定制功能的解耦设计。文章详细解读了请求与结果在两者间的双向流动路径,并提供了实用的调试技巧,是理解高通相机新架构的关键。

read5的博客 711

高通camx架构学习(三)—— HalQcom Hal3 CamX

Camera HAL3学习: HAL层操作简单总结:&emsp:&emsp:Qcom作为平台厂商会根据谷歌定义的HAL3接口来实现自己的Camera HAL3,新的主流的Qcom Camera HAL3 架构就是CamX了.   Camx的详细过程可参考高通文档:80-pc212-1_d_qualcomm_spectra_isp_camera_chi_api_reference.pdf   最主要还是要看code,手机厂商对该层代码有自己的改动,可能差别还是有的,具体项目大体框架一致但细节有区别,差异和

图像学习之旅 1322

高通camx-chi架构

代表了某个特定的图像采集场景,比如人像场景,后置拍照场景等等,在初始化的时候通过根据上层传入的一些具体信息来进行创建,这个过程中,一方面实例化了特定的。,这个实例是用来管理整个场景的所有资源,同时也负责了其中的业务处理逻辑,另一方面,获取了定义在。对应着一个特定的功能,如果场景中并不需要任何特定的功能,则也完全可以不使用也不创建任何。之间的连接也就越错综复杂,比如后置人像预览虚化效果的实现就是将拿到的主副双摄的图像通过。的起始端开始输入的时候,便可以按照这种定义好的轨迹在一个一个。

马不停提的专栏 1480

高通camx架构学习(零)—— 深入理解Camera 硬件抽象层

从上面的定义可以看出,主要是通过hw_module_t 代表了模块,通过其open方法用来打开一个设备,而该设备是用hw_device_t来表示,其中除了用来关闭设备的close方法外,并无其它方法,由此可见谷歌定义的HAL接口,并不能满足绝大部分HAL模块的需要,所以谷歌想出了一个比较好的解决方式,那便是将这两个基本结构嵌入到更大的结构体内部,同时在更大的结构内部定义了各自模块特有的方法,用于实现模块的功能,这样,一来对上保持了HAL的统一规范,二来也扩展了模块的功能。

图像学习之旅 1670

高通CamX架构实战:从零搭建调试环境到跑通第一个Camera HAL3流程

本文深入解析高通CamX架构,提供从零搭建调试环境到跑通Camera HAL3流程的实战指南。详细介绍了CamX-CHI架构的核心组件、HAL3接口调用链以及Usecase与Pipeline的创建过程,帮助开发者快速掌握高通Camera HAL3开发的关键技术。

eee77的博客 1111

高通CamX-CHI架构解析:从组件关系到定制化开发实践

本文深入解析高通CamX-CHI架构的双轨制设计,详细介绍了CamX标准化流程与CHI-CDK定制化开发的协作机制。通过组件关系解析、数据流转示例和实战开发技巧,帮助开发者快速掌握相机HAL架构的核心技术,实现高效定制化开发。

pca5navigator的博客 666

高通Camera驱动(1)--Camx架构介绍

此文转载自:https://blog.youkuaiyun.com/weixin_38328785/article/details/111881221 之前主要做的是MTK平台camera驱动,高通平台这块只是简单了解架构。为了做成一个系列,简单梳理下高通camx架构 一、Android分层架构 图片内容来自:https://source.android.google.cn/se...

Python研究所 2542

高通平台的 Camera HAL 架构解析:QCamera 与 CHI HAL 实战剖析

高通平台是 Android 移动终端中主流的 SoC 方案之一,其 Camera HAL 架构发展历程丰富,从传统 QCamera 到模块化 CHI HAL(Camera Hardware Interface HAL)再到底层 CamX 框架,逐步实现了从 ISP 驱动到 HAL 层的能力抽象与图像链路优化。本篇文章将基于最新高通平台(如 SM8550/SM7475 等)上的真实工程经验,系统梳理 QCamera 与 CHI HAL 架构的模块划分、控制流转、调试策略与平台适配机制,帮助开发者深入理解高通成

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 2697

高通CamX与CHI-CDK架构解析:Android相机HAL开发与定制实战

在Android相机开发中,硬件抽象层(HAL)是连接上层框架与底层硬件的关键组件,它定义了相机数据流和控制接口的标准化实现。其核心原理在于通过分层设计,将通用的相机操作流程抽象为统一的HAL接口,而将硬件相关的驱动和图像处理细节交由供应商实现,从而实现Android系统的硬件兼容性与灵活性。这一设计为OEM厂商提供了深度定制相机功能的技术基础,尤其在多摄协同、高帧率拍摄和计算摄影等复杂场景中价值显著。在移动设备领域,基于高通骁龙平台的相机开发广泛采用CamX(Camera eXtensions)架构与CH

weixin_30162121的博客 274

高通camera chi-cdk feature2框架介绍

高通camera chi-cdk feature2框架介绍

高通相机Camera Camx架构chi-cdk仓库全套源码

高通相机Camera Camx架构chi-cdk仓库全套源码

Dify+MCP 双剑合璧:告别知识库模糊统计,让AI精准查询数据库数据!

本文详细介绍了如何通过Dify和MCP的结合,解决知识库在数据库查询中的模糊统计问题。通过MCP中间件将自然语言实时转换为SQL语句,实现精准数据查询,并支持SSE协议持续更新数据。文章包含MySQL环境搭建、MCP服务端部署、Dify工作流配置等实战步骤,帮助用户高效构建智能数据库查询系统。

weixin_33737774的博客 370

FPGA远程升级必备:STARTUPE2原语控制Flash的避坑指南

本文深入解析了FPGA远程升级中STARTUPE2原语的核心价值与配置策略,详细介绍了其在QSPI Flash接口设计中的应用。通过Vivado工具和原语控制,开发者可以高效实现安全可靠的远程固件升级,提升系统稳定性和升级效率。

k8l9m0n的博客 399

保姆级教程:从Salmon输出到DESeq2,搞定RNA-seq表达矩阵标准化与下游分析准备

本文提供从Salmon输出到DESeq2标准化的RNA-seq数据分析全流程指南,详细解析表达矩阵构建、标准化方法选择及下游分析准备。重点介绍如何将Salmon定量结果转换为DESeq2兼容格式,包括TPM与原始计数的处理技巧,以及常见问题排查方法,帮助研究人员高效完成RNA-seq数据分析。

weixin_42699679的博客 306

姿态传感器/陀螺仪之SC7A20HTR是应用驱动程序设计

define SC7A20_CTRL1_PM_100HZ (0x5 << 4) // 正常模式,100Hz输出数据速率(ODR)// 用于存储6字节的原始数据(X_L, X_H, Y_L, Y_H, Z_L, Z_H)#define SC7A20_WHO_AM_I_VALUE 0x11 // 读取WHO_AM_I寄存器应该返回的值。// 但HAL_I2C_Mem_Read按顺序读,data[0]是X_L(低8位),data[1]是X_H(高8位)MX_I2C1_Init();

corlin6688的博客 763

hwasan / asan详细分析踩内存之一:Use after free

UAF漏洞全称为use after free ,即利用已经被free掉的堆块被再次利用,该漏洞的存在是因为程序编写者在free堆块部分没有将该堆块的fd指针改为0,进而导致该堆块可以被申请回来,3.内存块被free后,其对应的指针没有被设置为 NULL,但是在它下一次使用之前,有代码对这块内存进行了修改,那么当程序再次使用这块内存时,就很有可能会出现奇怪的问题。2.堆块free后,对应指针没有被设置为NULL,即还可以调用会该堆块,当我们申请一个比该堆块小于等于的size时。

1402

从零到一使用PXE实现系统的无人值守自动化安装的保姆级教程

本文是《从零到一使用PXE实现系统的无人值守自动化安装的保姆级教程》亲自实操可用,本文从PXE是什么?有啥用?及其亲自实践出通过以国产银河麒麟系统为例从零到一的搭建出PXE服务器端(适用于其他系统),且测试了该搭建的PXE服务端自动化无人值守安装系统的保姆级实操教程。适用于大批量设备系统安装部署场景。

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 584

SAP_FI模块_固定资产期初导入全流程(含导入代码)

SAP 期初导入资产主数据以及金额相关的操作全流程记录,包含了批导程序的代码,以及错误记录

风沙的博客 1405

图神经网络实战(21)——图神经网络的可解释性

在本节中,我们探讨了应用于图神经网络 (Graph Neural Networks, GNN) 的可解释性人工智能 (Explainable Artificial Intelligence, XAI) 技术。可解释性是许多领域的关键要素,可以帮助我们建立更好的模型。我们介绍了不同的局部解释技术,并重点讨论了 GNNExplainer (基于扰动的方法),在图分类任务中应用 GNNExplainer。

盼小辉丶的博客 9609

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 如何用Blender 4优化Tripo生成的3D模型?Kivicube AR场景搭建实战
下一篇: EPLAN箱柜清单隐藏的3个冷知识:为什么外部放置部件‘消失’?如何正确导出到材料表?
sql99
博客等级 码龄19年 168粉丝 1905原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值