高通 Feature2 客制化Feature流程

39a2a120e5dcd8f6f3a3ef35df5f5863.gif

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一.概述
二.添加客制化Feature
三.Feature2中使用Feature描述符(Descriptor)

一.概述

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

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

二.添加客制化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

42b0c9fa18d13cb63c1ef7a8a27f28c6.jpeg
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有列出

c356cecff1fc641a91ddc3be22a0c363.jpeg

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

ChiFeature2Type 中添加一个新的 feature type

2efd6bb507cb4569b293e926c6665f47.jpeg
2.2.3 chifeature2HDRdescriptor.cpp放在正确的目录

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

a13e1cc17340e7f70a3219bd79844fb2.jpeg
2.2.4 添加ChiFeature2TargetDescriptor

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

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

46d1f79658291fa199d60ea58326569a.jpeg
2.2.5 添加ChiFeature2PortDescriptor

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

060bfb5b1b346a6f81a61f56a9c55122.jpeg
2.2.6 添加ChiFeature2PipelineDescriptor

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

a5d9d7097bbc091901196a9880b8d96a.jpeg
2.2.7 添加ChiFeature2SessionDescriptor

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

b4b9b629f46cc5343f26729670bd55fb.jpeg
2.2.8 添加ChiFeature2StageDescriptor

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

dbe9536a4b208d04f4c347d3a87e7720.jpeg
2.2.9 添加ChiFeature2Descriptor

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

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

d9646e38768d2ee01349b7091f6469ea.jpeg

三.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 \

原文链接:https://blog.youkuaiyun.com/geyichongchujianghu/article/details/131034146

参考文献:

【腾讯文档】Android Framework 知识库
https://docs.qq.com/doc/DSXBmSG9VbEROUXF5

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

502c89c7a21bb21431cb6adda635fbc4.jpeg

点个在看,为大佬点赞!

内容概要:本文档详细介绍了ChiFeature2系统架构及其各个组件的功能与交互方式。ChiFeature2系统主要用于图像处理和相机控,涵盖了从请求创建、特征图(FeatureGraph)管理、数据流处理到最终输出的一系列流程。文档列举了多个关键的数据结构如ChiFeature2AnchorFrameSelectionData、ChiFeature2PortBufferInfo等,它们用于配置和管理图像处理任务的各种参数。此外,还定义了不同类型的回调函数和接口,确保系统的灵活性和可扩展性。ChiFeature2系统不仅支持单摄像头操作,还能处理多摄像头环境下的复杂场景,包括实时视频流处理、HDR合成等功能。 适合人群:具有图像处理或嵌入式系统开发经验的专业人士,尤其是从事移动设备或智能硬件中相机模块开发的技术人员。 使用场景及目标:适用于需要深入了解Android系统底层相机框架的人群,帮助开发者掌握如何利用ChiFeature2系统优图像质量、提高处理效率以及实现特定视觉效果。具体应用场景包括但不限于:自定义相机应用开发、增强现实技术研究、计算机视觉项目实施等。 其他说明:文档内容较为专业和技术,涉及大量API和内部机细节。对于初学者来说可能具有一定难度,建议先熟悉基本概念后再深入学习。同时,由于该系统不断更新迭代,实际开发时应参考最新版本的官方文档以获得最准确的信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值