高通 Camera HAL3:添加一条PipeLine

news/2024/7/21 6:49:31 标签: android, 图像处理, 图形渲染

一.概述

添加一条PipeLine实现两路Raw进,一路Raw出

二.简介

要添加的PipeLine:SWMFMergeRawTwo2One

  • 包含1个memcpy node,
  • 这个node用于将2个raw buffer input输入 变为 1个raw buffer output输出

三.添加 

3.1 在相应的Usecase下添加一个pipeline xml

vendor\qcom\proprietary\chi-cdk\oem\qcom\topology\usecase\components\usecases\UsecaseZSL\pipelines\
目录下放置pipline文件:camxSWMFMergeRawTwo2One.xml

3.2 填充pipline xml文件

填充camxSWMFMergeRawTwo2One.xml

  • (1).SWMFMergeRawTwo2One //PipelineName 是唯一的
  • (2).在NodesList里链接所有需要链接的Node //List all nodes required by the pipeline in

3.3 修改NodesList:

 

  • NodeId:外部定制的Node使用 NodeId 255 (例如自己加的算法Node)
  • NodePropertyId:1是定制的Lib
  • NodePropertyValue:填入chi node lib name

关于 NodeProperty 的相关定义可以在 vendor\qcom\proprietary\chi-cdk\api\common\chi.h 中查到

3.4 修改PortLinkages

PortLinkages:input target,chi/camx Node 和 output target 的链接链表

  • SourceBuffer:NodeId 4
  • SinkBuffer:NodeId 2

所有软件softeware和硬件hardware NodeId的定义可以在 vendor\qcom\proprietary\camx\src\core\Camxhwdefs.h文件中查阅到

Source Target:

  • TARGET_BUFFER_RAW_IN0
  • TARGET_BUFFER_RAW_IN1

需要被填写不同的 NodeInstanceId 

3.5 CamxInclude添加对 pipeline 的引用

在相应的Usecase xml文件中,使用CamxInclude添加对 pipeline 的引用

vendor\qcom\proprietary\chi-cdk\oem\qcom\topology\usecase\components\usecases\usecasezsl\camxUsecaseZSL.xml

3.6 为pipeline添加一个新的target(TARGET_BUFFER_RAW_OUT2)

在camxUsecaseZSL.xml中为 pipeline 添加一个新的 target 定义

3.7 更新vendor\qcom\proprietary\chi\cdk\core\chifeature2\Chifeature2utils.h 文件中的 TargetStreamMap

3.8 为ChiUseCase添加pipeline Id

这个pipeline Id必须和pipeline name一致

\chi-cdk\core\chiusecase\chxadvancedcamerausecase.cpp

3.9 对pipeline id进行添加 

3.10 添加pipeline type

添加pipeline type:\chi-cdk\core\chiframework\chxfeature.h

四.使用

4.1 在Feature2架构的Feature中使用pipeline

在ChiFeature2PipelineDescriptor数组中添加 pipeline

feature target descriptor的target name 必须和pipeline xml文件中的target name保持一致

五.结束


http://www.niftyadmin.cn/n/396559.html

相关文章

PHP文件操作

预计更新第一章:入门 1.1 环境搭建1.2 变量和数据类型1.3 控制流程 第二章:函数 2.1 函数的定义和调用2.2 函数的参数和返回值2.3 匿名函数和闭包 第三章:数组 3.1 数组的基本操作3.2 多维数组3.3 数组函数和排序 第四章:文…

leetcode刷题之哈希表相关问题js

目录 242.有效的字母异位符方法一:使用两个map对象来保存方法二:使用一个map 349.两个数组的交集方法一:setmapfor of方法二:只是用set 242.有效的字母异位符 方法一:使用两个map对象来保存 时间复杂度:O(n) 空间复杂…

Java工程引入MybatisPlus插件处理持久化

MybatisPlug在DB持久化过程中,可以减少编写或不编写对应的XML,更多以Java方式完成DB持久化操作,故Java工程引入MybatisPlug非常好的开发方式,注意同时兼容原有写XML的方式,满足复杂SQL操作要求,Java工程引入…

Linux操作系统——第一章 进程

目录 基本概念 描述进程-PCB task_struct-PCB的一种 task_ struct内容分类 组织进程 查看进程 通过系统调用获取进程标示符 通过系统调用创建进程-fork初识 进程状态 进程状态查看 Z(zombie)-僵尸进程 僵尸进程危害 孤儿进程 进程优先级 基本概念 查看系统进程 …

GIN框架(GOLANG)讲解如何疯速入门

1.初始化项目: 1.初始化项目:go mod init 2.下载gin框架:go get -u github.com/gin-gonic/gin 3.引入:import "github.com/gin-gonic/gin" 注意点: 报错:$GOPATH/go.mod exists but should …

网络打流iperf3之拥塞控制(CWnd)

在我们测试嵌入式网络接口的时候,经常会使用到iperf3进行打流测试,从而看网络功能和性能指标,如下: iperf3 -s > /dev/null & [2] 65897 iperf3 -c 192.168.153.137 -i 1 -t 10 Connecting to host 192.168.153.137, port 5201 [ 4] local 192.168.153.137 p…

STM32F407的PWM

文章目录 32的PWM资源PWM输出原理捕获/比较模式寄存器(TIMx_CCMR1/2)捕获/比较使能寄存器(TIMx_CCER)捕获/比较寄存器(TIMx_CCR1~4) 库函数版本的F407的PWM波输出开启 TIM14 时钟以及复用功能初始化 TIM14,…

JAVA中.equals()与 ==的区别

1. “”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。 2..equals() equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比…