【Qcom Camera】Camx架构Chi External Node 三部曲之简单集成

上篇文章讲解了如何加载Node

这篇文章以memcpy 为例讲解下Node的简单集成 (这里我们不去关注算法本身,只关注集成流程----简单集成

一、准备相关文件:

1.在以下列举的node中,将memcpy node文件夹复制一份,命名为memcpy2:

2.更改相关文件名称:

   2.1 更改文件名称,并在camxchinodememcpy2.cpp中,需要将node的 sectionname更改为com.qti.node.memcpy2. 

     每个node的sectionname需要与mk文件中要生成的so文件名相对应。

   2.2 更改算法文件中的mk文件,将包含的头文件与源文件修改成一致:

        LOCAL_INC_FINES:需要包含的所有头文件

        LOCAL_SRC_FILES:需要包含的所有源文件

        LOCAL_MODULE:编译生成的库文件名称

 3.算法自己的mk文件已修改完毕,需要注意:算法本身处于CHI中,这里需要修改上级mk文件,将算法包含进来:

准备工作已经ok了,通过以下命令进行编译:

    mmm vendor/qcom/proprietary/chi-cdk/ -j32 2>&1 | tee chilog

    算法库文件生成的路径在

二、现在已经有了算法库,该如何应用到具体的相机场景中去呢?

 以ZSL普通拍照为例:

 

将算法memcpy2 node嵌入到拍照流程中,如下图所示:

修改前后如下:

具体修改方案patch如下:

 +++ b/oem/qcom/topology/usecase-components/pipelines/camxZSLSnapshotYUV.xml@@ -21,6 +21,18 @@             <NodeInstance>IPEInstanceName0</NodeInstance>            
                   <NodeInstanceId>0</NodeInstanceId>        
</Node>
+       <Node>
+            <NodeName>ChiNode</NodeName>
+            <NodeId>255</NodeId>
+            <NodeInstance>ChiNodeInstanceName0</NodeInstance>
+            <NodeInstanceId>0</NodeInstanceId>
+            <NodeProperty>
+                <NodePropertyName>NodePropertyCustomLib</NodePropertyName>
+                <NodePropertyId>1</NodePropertyId>
+                <NodePropertyDataType>STRING</NodePropertyDataType>
+                <NodePropertyValue>com.qti.node.memcpy2</NodePropertyValue>
+            </NodeProperty>
+        </Node>    
</NodesList>    
<PortLinkages>        
<TargetName>TARGET_BUFFER_RAW</TargetName>@@ -161,5 +173,42 @@                 <NodeInstanceId>0</NodeInstanceId>             </DstPort>         </Link>
+     <Link>
+            <SrcPort>
+                <PortName>IPEOutputPortDisplay</PortName>
+                <PortId>9</PortId>
+                <NodeName>IPE</NodeName>
+                <NodeId>65538</NodeId>
+                <NodeInstance>IPEInstanceName0</NodeInstance>
+                <NodeInstanceId>0</NodeInstanceId>
+            </SrcPort>
+            <DstPort>
+                <PortName>ChiNodeInputPortFull-0</PortName>
+                <PortId>0</PortId>
+                <NodeName>ChiNode</NodeName>
+                <NodeId>255</NodeId>
+                <NodeInstance>ChiNodeInstanceName0</NodeInstance>
+                <NodeInstanceId>0</NodeInstanceId>
+            </DstPort>
+        </Link>
+    <Link>
+            <SrcPort>
+                <PortName>ChiNodeOutputPortFull</PortName>
+                <PortId>0</PortId>
+                <NodeName>ChiNode</NodeName>
+                <NodeId>255</NodeId>
+                <NodeInstance>ChiNodeInstanceName0</NodeInstance>
+                <NodeInstanceId>0</NodeInstanceId>
+            </SrcPort>
+            <DstPort>
+                <PortName>TARGET_BUFFER_YUV</PortName>
+                <PortId>1</PortId>
+                <NodeName>SinkBuffer</NodeName>
+                <NodeId>2</NodeId>
+                <NodeInstance>SinkInstanceName0</NodeInstance>
+                <NodeInstanceId>0</NodeInstanceId>
+            </DstPort>
+        </Link>

 到这里,基本集成流程也差不多了,当然,算法集成不可能一帆风顺,也不会这么简单。这里只介绍大概的流程,仅供了解,有错误的地方欢迎指出。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cam_Rxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值