高通 Camera HAL3:添加一个Feature

news2024/12/22 19:20:53

一.概述

HDR Feature为例,在CamX中添加一个新的Feature

  1. 从上游stream(upstream) feature获取格式P010的多帧数据作为input
  2. pipeline(SWMFMergeYuv)运行算法
  3. 生成同样格式的单帧数据作为输出,发送给下游stream(down stream) feature

二.添加

2.1 从Feature基类派生Feature

2.1.1 重要的文件:

  • /chi-cdk/oem/qcom/feature2/chifeature2hdr/chifeature2hdr.cpp
  • /chi-cdk/oem/qcom/feature2/chifeature2hdr/chifeature2hdr.h
  • /chi-cdk /oem/qcom/feature2/chifeature2hdr/common/build/android/Android.mk

2.1.2 重要的函数

  • DoQueryCaps(){ }
  • CreateFeature(){ }
  • OnSelectFlowToExecuteRequest (){ }
  • DoPrepareRequest(){ }
  • DoStreamNegotiation(){ }

2.2 添加Feature Descriptor (Feature描述符)

2.2.1 CHI Feature descriptor包括如下细节组件:

  • ChiFeature input/output target buffer descriptor.
  • ChiFeature input/output port descriptor.
  • ChiFeature pipelines descriptor.
  • ChiFeature session info descriptor.
  • ChiFeature input dependency and config descriptor.
  • ChiFeature stage info descriptor

Session, Pipeline, 和 port numbers 从 0 开始递增 1

如果1个session里面有2个pipeline,pipeline Id就是 0 和 1

2.2.2 重要定义:

vendor\qcom\proprietary\chi-cdk\core\chifeature2\Chifeature2utils.h

确保所有的input/output target都在chifeature2utils.h的TargetStreamMap有列出

vendor\qcom\proprietary\chi-cdk\core\chifeature2\Chifeature2utils.h

ChiFeature2Type 中添加一个新的 feature type

2.2.3 chifeature2HDRdescriptor.cpp放在正确的目录

将Feature Descriptor文件chifeature2HDRdescriptor.cpp放在正确的文件目录下

2.2.4 添加ChiFeature2TargetDescriptor

ChiFeature2TargetDescriptor结构体描述 Feature 的 Input/output Targets

ChiFeature2TargetDescriptor的target buffer名字要和feature使用的pipeline(SWMFMergeYuv)的target buffer名字保持一致

2.2.5 添加ChiFeature2PortDescriptor

ChiFeature2PortDescriptor 结构体描述了Feature的ports, 包括session的info、pipeline、port index、port direction、port type 和 Feature port 到 Target 的映射

2.2.6 添加ChiFeature2PipelineDescriptor

ChiFeature2PipelineDescriptor结构体描述Feature里pipeline的信息

2.2.7 添加ChiFeature2SessionDescriptor

ChiFeature2SessionDescriptor结构体描述Feature中的Session信息

2.2.8 添加ChiFeature2StageDescriptor

ChiFeature2StageDescriptor 结构体描述Stage Id,Stage Name, pointer to the input dependency descriptor tale

2.2.9 添加ChiFeature2Descriptor 

ChiFeature2Descriptor 结构体描述Feature Id、Feature name、Feature里stages的个数,并且指向session descriptor table。

pFeatureName("HDRDemo") 必须和DoQueryCaps()中的ppCapabilities("HDRDemo ")一样

三.Feature2中使用Feature描述符(Descriptor)

3.1 在Android.mk中包含Feature descriptor和Feature class files

/chi-cdk/oem/qcom/feature2/chifeature2hdr/common/build/android/Android.mk

# Block this if use generated
LOCAL_SRC_FILES := \
    chifeature2hdrdemo/chifeature2hdr.cpp \
    chifeature2graphselector/descriptors/nongenerated/chifeature2hdrdescriptor.cpp
LOCAL_INC_FILES := \
    chifeature2hdr/chifeature2hdr.h
# Binary name
LOCAL_MODULE := com.qti.feature2.hdr
...
include $(BUILD_SHARED_LIBRARY)

3.2 oem/Android.mk中 Include HDR Feature mk

/chi-cdk/oem/Android.mk

include $(CAMX_CHICDK_OEM_PATH)/qcom/feature2/chifeature2hdrdemo/common/build/android/Android.mk
include $(CAMX_CHICDK_OEM_PATH)/qcom/feature2/chifeature2realtimeserializer/common/build/android/Android.mk

3.3 项目配置mk文件中的PRODUCT_PACKAGES Include "HDR Feature class lib"

com.qti.feature2.hdrdemo.so由HDR feature的.cpp和.h编译生成

/chi-cdk/configs/product.mk

PRODUCT_PACKAGES = com.qti.feature2.rawhdr
PRODUCT_PACKAGES = com.qti.feature2.hdrdemo
PRODUCT_PACKAGES = com.qti.feature2.rt

3.4 LOCAL_SHARED_LIBRARIES中 Include "HDR Feature class lib"

当在graphselector里使用HDRDemo feature时,需要添加com.qti.feature2.hdrdemo到LOCAL_SHARED_LIBRARIES

/chi-cdk/oem/qcom/feature2/chifeature2graphselector/sm8350/build/android/Android.mk

LOCAL_SHARED_LIBRARIES = \
    com.qti.feature2.rawhdr \
    com.qti.feature2.hdrdemo \
    com.qti.feature2.swmf \

四.结束

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

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

相关文章

自动计算图片的宽度和高度拉伸至全屏附CSS及VUE简单实现

1、简介 场景:比如说APP封面等特点:能够自动适应设备的宽高,保证图片100%显示,不会缺失或者留边,但有可能会变形。 2、实现 注意以下代码尽管是在Vue环境下实现的,但与Vue关系不大,代码本身也足…

【Python】列表 List ④ ( 插入操作 / 追加操作 | 列表插入操作 List#insert | 列表追加元素操作 List#append )

文章目录 一、列表插入操作1、List#insert 函数简介2、代码示例 - 列表插入元素 二、列表追加元素操作1、List#append 函数简介2、代码示例 - 列表追加元素 一、列表插入操作 1、List#insert 函数简介 Python 列表 通过调用 List#insert 函数 插入元素 , 该函数需要传入两个参数…

chatgpt赋能python:Python商场打折问题详解

Python商场打折问题详解 在商场营销策略中,打折是一种常见的手段。而Python作为一种广泛应用于数据科学和机器学习的编程语言,也可以用来解决商场打折问题。本文将介绍Python实现商场打折的方法和步骤,希望能对广大商场营销人员和数据科学家…

C语言——数据在内存中的存储(未完待续)

文章目录 一、数据类型的介绍1.0、有符号跟无符号计算原理在这里插入图片描述1.1、数据类型的基本分类 二、整形与浮点型在内存中的存储1.整型1.0、大小端的介绍 2.原码、反码、补码2.0、原码2.1、反码2.2、补码2.3、补码转原码第二种方法 三 、浮点型3.0、浮点数存储的例题&am…

20230604给coolpi4b开发板刷机的LOG

20230604给coolpi4b开发板刷机的LOG 2023/6/4 23:49 IMG I:\BaiduNetdiskDownload\20230317[在线刷机]-RKDevTool专用镜像 I:\BaiduNetdiskDownload\20230317[在线刷机]-RKDevTool专用镜像\Windows驱动程序\DriverAssitant_v5.12.zip I:\BaiduNetdiskDownload\20230317[在线…

WGCNA | 不止一个组的WGCNA怎么分析嘞!?~(三)(共识网络分析-第三步-共识模块与特异模块相关联)

1写在前面 有小伙伴子留言问最近介绍的WGCNA共识网络的意义是什么,保守性吗!?🧐 与把雄性小鼠和雌性小鼠的数据merge在一起,一起构建网络、确定模块的方式有什么区别呢!?😗 其实区别…

JavaSE进阶(day13,复习自用)

单元测试、反射、注解、动态代理 单元测试单元测试概述单元测试快速入门单元测试常用注解 反射反射概述反射获取类对象反射获取构造器对象反射获取成员变量对象反射获取方法对象反射的作用-绕过编译阶段为集合添加数据反射的作用-通用框架的底层原理 注解注解概述自定义注解元注…

数据在内存中存储的现象

🤩本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C知识系统分享》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽&#xff0c…

chatgpt赋能python:Python图片合成:背景设计的新方案

Python 图片合成:背景设计的新方案 简介 图像合成是一项艺术性和创新性的工作,它涉及到多个过程,包括图像处理、透明度和滤镜应用。Python 我们可以使用其各种库快速、可靠地进行图像合成。在这篇文章中,我们将介绍如何使用 Pyt…

chatgpt赋能python:Python在线模拟器:让编程变得更加轻松

Python 在线模拟器:让编程变得更加轻松 介绍 Python 在线模拟器是一个非常实用的工具,它可以帮助用户直接在浏览器中测试和运行 Python 代码。在线模拟器的出现简化了编程过程,不需要安装 Python IDE 等软件,只需要有一台连接互…

LSM零知识学习三、插桩原理实现细节(1)

本文内容参考: LSM(Linux Security Modules)框架原理解析_lsm框架_pwl999的博客-CSDN博客 Linux LSM(Linux Security Modules) Hook Technology_weixin_30929011的博客-CSDN博客 特此致谢! 一、插桩具体实现 前文介绍了插桩原理,本文来详…

chatgpt赋能python:Python图片大小怎么算?

Python图片大小怎么算? 在Web开发中,经常需要展示图片,但是为了让网页加载速度更快,我们需要对图片进行压缩和优化,其中一个重要的参数就是图片的大小。那么在Python中,如何计算图片大小呢? 图…

包扫描工具实现(详解)

文章目录 前言包扫描实现思路(需求分析): 具体实现完整代码 前言 注解在 Java 是一个非常重要的存在,而且它出现的非常频繁。 在一个工程下可能有许多的包或者Jar包,为了结合注解可以准确的定位到一个需要的类上&…

代码随想录算法训练营第四十六天|139.单词拆分

LeetCode139.单词拆分 动态规划五部曲: 1,确定dp数组以及下标的含义: dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词。 2,确定递推公式: 如果确定dp[j…

javascript基础二十:说说你对DOM的理解,常见的操作有哪些?

一、DOM 文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口 它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容 任何 HTML或XML文档都可以用 DOM表示为一个由节点构成的层级结构…

交通物流模型 | Python建模实现动态交通分配优化问题求解

文章目录 效果一览文章概述研究内容程序设计参考资料效果一览 文章概述 交通物流模型 | Pyomo建模框架实现动态交通分配优化问题求解,DTA 交通分配问题通常需要考虑许多因素,例如道路容量、交通需求、速度限制、车辆类型、交通信号灯等,在城市规划和交通管理领域中具有重要的…

分布式系统概念和设计——分布式事务

分布式系统概念和设计 分布式事务 访问多个服务器管理的对象的事务称为分布式事务。 当一个分布式事务结束时,事务的原子特性要求所有参与事务的服务器必须全部提交或全部放弃。 实现: 其中一个服务器承担了协调者的角色,保证在所有的服务器…

chatgpt赋能python:Python图片取模:提高网页加载速度与用户体验

Python图片取模:提高网页加载速度与用户体验 随着互联网的发展与全球化进程的加速,网站的速度与易用性成为用户选择网站的重要因素。在这种情况下,我们需要优化网站的加载速度与用户体验。其中一种优化方法就是使用图片取模。 本文将向您介…

chatgpt赋能python:Python图像处理技术:学习Python,掌握图像处理!

Python图像处理技术:学习Python,掌握图像处理! 在当今时代,图像处理已成为现代生活中不可或缺的一部分,从照片、视频到尖端医疗设备中的医学图像,都需要使用图像处理技术。Python图像处理技术是当今广泛使…

2023年淘宝天猫京东618活动时间安排和活动攻略

2023年淘宝天猫京东618活动力度大吗?活动什么时候开始?有什么省钱技巧?让我们来一起看一下! 2023年淘宝618活动一览 时间安排 第一波(开门红) 预售时间:5月26日 14:00-5月26日 20:00 定金时间:5月26日 …