高通 Camera HAL3:添加一个VendorTag

news2024/12/28 19:13:24

一.概述

MetadataTag在CamX中有两种体现,可以是预定义的AndroidTag或是自定义VendorTag

VendorTag在HAL中定义,用来支持Camx和Chi所需的额外metadata

VendorTag类型有三种:

  • hwVendorTagInfo
  • componentvendortaginfo
  • coreVendorTagInfo

根据不同具体情况添加对应的VendorTag

  • hwVendorTagInfo:在 camxtitan17xcontext.cpp 中定义,并被Core、HWL, SWL 和etc使用,多数这类VendorTag都不属于HWL,并且他们是HW独立的。
  • componentvendortaginfo:这些VendorTag依赖于CHI node,并相应地在每个CHI组件中定义。
  • coreVendorTagInfo:在core layer(camxvendortags.cpp)中定义,并由core或其他层使用。

通过VendorTag访问metadata的接口在每一层(layer)中都不一样,下面是一个如何在APP中设置metadata,并通过使用VendorTag得不同层中的metadata的Sample Code(所有的操作都在 processRequests 阶段)。

例:

添加一个VendorTag,用于控制超夜Feature:
//由于项目中超夜的Feature用的是RawHdr Feature实现的,所以相关代码使用的都是"HDR",实际功能是用于控制超夜Feature

二.定义,填充VendorTag:

2.1 Step1:

\chi-cdk\api\common\chivendortagdefines.h

添加CHIVENDORTAGDATA Static变量:

2.2 Step2:

\camx\src\api\vendortag\camxvendortagdefines.h

这一段可以添加在 camxvendortagdefines.h 的 g_HwVendorTagSections[ ]

也可以添加在 chivendortagdefines.h 的 g_VendorTagSectionDataChiOverride[ ]

添加在Camx中是HWVendorTag,最好还是加在chivendortagdefines.h

2.3 Step3:填充Metadata默认数据

\camx\src\core\chi\camxchicontext.cpp

2.4 Step4:添加枚举Index

\chi-cdk\core\chiutils\chxdefs.h

2.5 Step5:

\chi-cdk\core\chiframework\chxextensionmodule.cpp

三.使用VendorTag:

3.1 Step1:

\chi-cdk\oem\qcom\feature2\chifeature2graphselector\chifeature2graphselector.cpp

选择FeatureGraph前解析pAppSettings

3.2 Step2:ParseAppRequestSetting()

3.3 Step3:相关枚举、变量、函数说明:

(1).\chi-cdk\oem\qcom\feature2\chifeature2graphselector\chifeature2graphselector.h

TEnable:用于标识HDR状态的枚举,实际超夜只用到了 T_OFF 和 T_ON 两个状态

m_hdrEnable:用于记录上层传下来的HDR状态的变量

(2).\chi-cdk\oem\qcom\feature2\chifeature2graphselector\chifeature2graphselector.cpp

判断HDR状态后,被其他函数调用

(3).\chi-cdk\oem\qcom\feature2\chifeature2graphselector\chifeature2graphselector.cpp

在拍照时选择FeatureGraph的函数中调用 isHDREanble()

四.结束

VendorTag加完,编译,Push So之后,

可以使用命令: adb shell dumpsys media.camera > D:\temp\media.camera.txt 检查Tag是否有正常添加

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「HTML和CSS入门指南」img 标签详解

什么是 img 标签? 在 HTML 中,img 标签用于插入图像。它是一个独立的标签,没有结束标记,并且可以设置多种属性来改变图片的大小、位置、样式等。使用 img 标记可以帮助您更好地展示您的内容,并让浏览器更快地加载网页。 img 标签的基本语法 以下是 img 标签的基本语法: …

卡尔曼滤波与组合导航原理笔记(一)卡尔曼滤波方程的推导 第二部分

文章目录 三、卡尔曼滤波1、随机系统状态空间模型2、状态预测3、状态量测4、增益矩阵K与状态估计5、Kalman滤波公式汇总6、Kalman滤波流程图1.划分为左右两部分(一阶矩和二阶矩)2.划分为上下两部分(时间更新、量测更新) 7、Kalman…

ESP8266开发阶段无线WIFI本地烧录升级 -- FOTA

【本文发布于https://blog.csdn.net/Stack_/article/details/130448713,未经允许不得转载,转载须注明出处】 前言 因为正在DIY一个WiFi计量插座,采用非隔离的方案,烧录时要拔掉220V插头,测试时要拔掉USB线,…

php获取文件的权限信息(获取权限信息、返回字符串涵义、二进制的转换方式、权限修改)

php获取文件的权限信息 说明1.获取文件的权限信息2.返回文件权限字符的解读3.转为二进制权限4.修改权限 说明 (图片来源于网络) 文件权限是指文件或目录对用户和其他进程的访问许可。在 Unix 和 Linux 系统中,文件和目录都有三个权限&#x…

高通 Camera HAL3:CamX、Chi-CDK 详解

网上关于高通CameraHAL3的介绍文档不多,之前做高通CameraHAL3的一些收集、总结,杂乱了一点,将就着看吧。 一.初步认知 高通CameraHAL3的架构很庞大,代码量也很巨大。 先对CamX、Chi-CDK的关键术语、目录等有个初步认知 1.1 术…

Servlet与Mybatis-2

过滤器 过滤器是一种代码重用的技术,它可以改变 HTTP 请求的内容,响应,及 header 信息。过滤器通常不产生响应或像 servlet 那样对请求作出响应,而是修改或调整到资源的请求,修改或调整来自资源的响应。 作用&#x…

Linux基础篇 使用SSH远程Ubuntu-03

目录 1.安装ssh服务器 2.启用SSH服务器 3.查看SSH服务运行状态 4.在Windows的CMD下进行验证 在默认情况下,外部设备是无法通过SSH远程Ubuntu的,因为Ubuntu没有启用ssh服务。 说明:当前Ubuntu系统为20.04 1.安装ssh服务器 sudo apt-get …

chatgpt赋能python:Python在一组数据中抽取数的方法

Python在一组数据中抽取数的方法 Python是一种非常流行的编程语言,因为它简单易学,可读性高,功能强大,适用于各种不同的应用场景。在数据科学领域,Python也非常受欢迎,因为它拥有广泛的数据处理和分析库。…

【Go LeetDay】总目录(1~88)

Leetcode Golang Day1~10 Golang每日一练(leetDay0001) 1. 两数之和 Two Sum 2. 两数相加 Add Two Numbers 3. 无重复字符的最长子串 Longest-substring-without-repeating-characters Golang每日一练(leetDay0002) 4. 寻找两个正序数组的中位数 Median of two sorted arra…

使用RP2040自制的树莓派pico—— [1/100] 烧录micropython固件

目录 开发环境烧录模式简介固件下载固件烧录验证阶段micropython初步了解 开发环境 软件:Thonny 烧录固件:micropython 烧录模式简介 正常插上电就启动,这是树莓派pico开发板的正常启动模式。 如果按住 bootset 按键再插上数据线&#xf…

Vue 设计模式

一、什么是设计模式? 设计模式是一套被反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。它是为了可重用代码,让代码更容易的被他人理解并保证代码的可靠性。 设计模式实际上是“拿来主义”在软件领域的贯彻实践,它是一套现成的工…

Linux下配置Qt6安装开发环境

安装JDK 选择自己定义JDK安装路径 点击如下图按钮 安装SDK 提示TLS初始化失败 由于HTTPS问题造成无法下载,暂用Android Studio来安装Android SDK 成功安装SDK 安装NDK与命令行工具 正在下载NDK及命令行工具 NDK与工具下载完成 配置QT的Android SDK路径 配置NDK路径 选择ND…

卡尔曼滤波与组合导航原理笔记(一)卡尔曼滤波方程的推导 第一部分

文章目录 一、滤波的基本概念1、传统数字滤波器2、现代控制中的状态观测器3、最优估计的含义4、温度估计的例子1.问题描述2.分析 二、递推最小二乘 课程链接:https://www.bilibili.com/video/BV11K411J7gp/?p1 参考书目:《捷联惯导算法与组合导航原理》…

日志框架 --- Log4j

文章目录 1. 什么是log4j2. log4j的日志级别3. 日志层级4. log4j使用实例4.1 添加log4j依赖4.2 添加配置文件4.3 编写代码4.4 测试代码4.5 运行结果 5. 配置文件5.1 Logger 日志记录器5.2 Appender 附加器5.3 Layout 日志格式化器 6. 整体演示6.1 配置文件6.2 运行结果 1. 什么…

Linux学习(四)Docker构建Python_Web环境

目录 Docker 安装Docker 使用Docker 启停Docker 换源Docker 镜像Docker 容器Docker 创建内部网段Docker Python 镜像创建Docker MySQL 镜像创建Docker 补充 Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器…

vulnhub靶场渗透之DC-4渗透教程(超级详细)

vulnhub靶场渗透之DC-4渗透教程目录 0x01靶机概述 0x02靶场环境搭建 0x03靶机信息发现 0x04靶机渗透过程 0x05靶机提权 0x06渗透实验总结 0x01靶机概述 靶机基本信息: 靶机下载链接https://download.vulnhub.com/dc/DC-4.zip作者DCAU发布日期2019年4月…

DINO代码学习笔记(二)

在DINO代码学习笔记(一)中已经将输入transformer之前的参数处理给捋了一遍,接下就是将这些参数传给transformer。 DINO的transformer使用了Deformable-DETR中的可变性transformer(他们之前的工作也有用到) 这里还是使用…

chatgpt赋能python:Python回滚-避免代码灾难的有效措施

Python回滚-避免代码灾难的有效措施 什么是Python回滚 Python回滚是一种避免代码灾难的有效措施,它可以让你在代码出现问题之后及时回退到之前的版本,保证系统不会受到影响。 回滚是一项非常重要的工作,越是复杂的项目越需要进行回滚。Pyt…

​【指针与数组的恩怨情仇】

指针和数组的关系 指针指的是指针变量,不是数组,指针变量的大小是4/8个字节,是专门来存放地址的。数组也不是指针,数组是一块连续的空间,存放一组相同类型的数据的。 没有关系,但是它们之间有比较相似的地方…

java String类型对象转换为自定义类型对象

问题 java String类型对象转换为自定义类型对象 详细问题 对于java自定义类型对象提供了toString()方法,实现自定义类型对象转换为String类型对象,如何将String类型对象转换为自定义类型对象,譬如对于如下代码所定义的Class类 package co…