高通camx开源部分简介

这篇具有很好参考价值的文章主要介绍了高通camx开源部分简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

camera整体框架

ISP Pipeline diagram

Simple Model

Camx and chi_cdk 整体框架

CtsVerifier, Camra Formats

Topology of Camera Formats.

Topology (USECASE: UsecaseVideo)

Nodes List

Links between nodes

Pipeline PreviewVideo

Buffer manager

Create

Destroy

Activate

Deactivate

GetImageBuffer

ReleaseReference

BinBuffer

MonitorThread

DeferredRequestQueue

ProcessRequest diagram

Complex design in camx.

Communication between modules

AddDeferredNode

Update Dependency

UpdateDependency

Process request

CSLFenceCallback

Callflow Sequence Diagram


camera整体框架

高通camx,# camera软件,camx

  1. sensor 上电,通过 MIPI协议传输,得到RAW图像数据。
  2. RAW图像数据经过ISP处理,得到YUV图像数据。
  3. YUV图像数据再经过DMA传输到DDR内存中,DDR内存也就是上图中标识的HOST。
  4. 每个厂家的 ISP原理和功能大致相同,像Auto Control(AEC、AF、AWB)都是在ISP里面做的,ISP里面还有 Raw Processing、Yuv Processing、Rgb Processing、Offline Processing(一般是去噪功能)。
  5. 每一个ISP里面都有一个MCU,MCU可以理解为一个处理器。ISP中的MCU需要上电工作,首先需要 load firmware。
  6. sensor只会出一路数据,但是经过 ISP之后,同时会存在至少三路数据 preview_stream 、snapshot_stream、video_stream。怎么样从sensor的一路数据变成 至少三路数据呢?这个就是 ISP内部做的事情,ISP内部可以将 sneosr出的一路数据拷贝分发成至少三路数据。
  7. 上图主要有三个部分组成:sensor、ISP、DDR。

ISP Pipeline diagram

高通camx,# camera软件,camx

  1. 以上流程图为 ISP工作处理流程图,每个厂商工作原理都差不多。
  2. 如果输入数据为 8bit,为了提高精度,会做一个 DC(data convert) 将8位数据转化为10位数据。
  3. 对于软件流程来说,我们最关心的是在什么阶段,图像数据是什么格式的?在DC之前,是Raw数据,在Demosaic之后是RGB数据,在CSC之后是YUV数据。在Linux/Andriod系统中 YUV数据是可以直接显示的,所以我们最关心的是 YUV数据。
  4. 在ISP里面,图像数据的转化为:RAW数据  --> RGB数据  --> YUV数据。 

Simple Model

• only have mainly function nodes.

高通camx,# camera软件,camx

  1. 来具体看一个最简单的camera模型。sensor -> IIFE -> IPE -> Target(输出)。
  2. sensor处理的是 RAW图像数据,作为HAL层,不能直接处理RAW图像数据,所以必须要经过IFE的处理,将RAW数据转化为YUV的数据。
  3. 经过IFE处理之后,又会经过一个IPE的模块,IPE的功能主要是 :做去噪 + SAT图像裁切。
  4. Target可以理解为:上层 ,FrameWork层想要的数据。比如:预览模式,Target就需要预览数据,拍照模式,Target就需要拍照数据,录像模式,Target就需要录像数据。
  5. IFE、IPE 这些模块都是称为一个 node,每个node都有很多输入 port,也有很多输出 port。如果一个node的输出 port 连接到 Target,那么这个 port 就可以称为 SinkPort。如果一个 Node的输出 port连接到不是 Target,那么这个 输出 port 就称为 NorSinkPort。
  6. NorSinkPort 需要的 buffer 是我们自己申请的,SinkPort 需要的buffer 是 app层给的。

Camx and chi_cdk 整体框架

高通camx,# camera软件,camx

  1. chi-cdk是客户自定义的所需要的功能。camx是高通的底层框架,一般手机厂商不会修改。如果用户需要新增功能,在chi-cdk中新增即可。
  2. camx模块是一个 camera.qcom.so,chi-cdk模块也是一个 com.qti.chi.override.so。这两个so之间可以互相提供多个回调函数,通过 dlopen 进行相互调用。
  3. frameworks 和 HAL层怎么通信的?framework给HAL下发一个 request,HAL需要回一个 notify(shutter),3个result,其中2个 result 是 metadata,一个 result 是 imagebuffer。
  4. framework下发一个 request -> camx -> chi-cdk -> camx -> kernel -> camx -> chi-cdk -> camx -> framework

CtsVerifier, Camra Formats

高通camx,# camera软件,camx

如上图所示,上图是一个简单的apk,只有2路数据,一路数据是 preview数据,一路数据是 video数据。

Topology of Camera Formats.

高通camx,# camera软件,camx

  1. 如上图所示,Topology of Camera Formats 就是上图 apk所描述的2路流数据。sensor通过MIPI协议出一路 RAW数据,经过 IPE之后,变成了2路数据。一路是 preview流,另外一路是 video流。这就是 IPE 的拷贝分发功能。
  2. Node的输出和输出 port 是通过 link 连接起来的。这种 link 关系是通过 XML来描述的。

高通camx,# camera软件,camx

高通camx,# camera软件,camx

高通camx,# camera软件,camx

高通camx,# camera软件,camx

高通camx,# camera软件,camx

高通camx,# camera软件,camx

通过一个 perl脚本将 XML 转化为 一个 .h文件。大概如下所示:

高通camx,# camera软件,camx

Topology (USECASE: UsecaseVideo)

通过 usecaseconverter.pl 脚本 将XML 转化为 .h文件。

• perl usecaseconverter.pl common_usecase.xml g_pipelines.h

高通camx,# camera软件,camx

Nodes List

高通camx,# camera软件,camx

Links between nodes

高通camx,# camera软件,camx

Pipeline PreviewVideo

高通camx,# camera软件,camx

Buffer manager

关于 Buffer manager 后续另外会写一篇博客,详细的介绍一下。这里简单的介绍一下。

  1. Allocate and free buffer in MemPoolMgr.
  2. MemPoolMgr and ImagebufferManger have interface to manager these buffers.

高通camx,# camera软件,camx

Create

  1. Allocate buffer.
  2. Insert buffer to freeBufferList.

高通camx,# camera软件,camx

Destroy

  1. Get buffer from freeBufferList.
  2. Free buffer.

高通camx,# camera软件,camx

Activate

  1. Allocate buffer.

高通camx,# camera软件,camx

Deactivate

  1. Free buffer.

高通camx,# camera软件,camx

GetImageBuffer

  1. Get buffer from freeBufferList.
  2. Insert to busyBufferList.

高通camx,# camera软件,camx

ReleaseReference

  1. Get buffer from busyBufferList.
  2. Insert to freeBufferList.

高通camx,# camera软件,camx

BinBuffer

高通camx,# camera软件,camx

MonitorThread

  1. Free buffer of freeBufferList.

高通camx,# camera软件,camx

DeferredRequestQueue

  1. Node dependent on property and data.
  2. Use readyNodes and deferredNodes to manager nodes.
  3. Property changed, update dependency.
  4. Data call back, update dependency, dispatch ready node.
  5. Subscribe observer to monitor the change.

ProcessRequest diagram

  1. ProcessRequest.
  2. CSLFenceCallback.

高通camx,# camera软件,camx

Complex design in camx.

高通camx,# camera软件,camx

Modify source code

  1. Remove redundant function calls.
  2. Use direct call instead of multi-thread.

Remove redundant function calls.

高通camx,# camera软件,camx

Use direct call instead of mult-thread.

高通camx,# camera软件,camx

高通camx,# camera软件,camx

Communication between modules

高通camx,# camera软件,camx

AddDeferredNode

高通camx,# camera软件,camx

Update Dependency

  1. Property changed.
  2. Data call back of NorSinkPort.

高通camx,# camera软件,camx

UpdateDependency

  1. When all dependency satisfied.
  2. Remove node from deferredNodes List, Insert to readyNodes List.

高通camx,# camera软件,camx

Process request

高通camx,# camera软件,camx

CSLFenceCallback

高通camx,# camera软件,camx

Callflow Sequence Diagram

高通camx,# camera软件,camx文章来源地址https://www.toymoban.com/news/detail-737098.html

到了这里,关于高通camx开源部分简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大气模型软件:WRF、CMAQ、SMOKE、MCM、CAMx、Calpuff、人工智能气象、WRFchem、PMF、FLEXPART拉格朗日粒子扩散、WRF-UCM、EKMA

    推荐给大家一些大气科学相关的模型软件,今天主要整理了一些需求量较高的,大家可以详细了解。零基础的可以点击此链接  零基础学习大气污染模式(WRF、WRF-chem、smoke、camx等) 目录 一、(WRF-UCM)高精度城市化气象动力模拟技术与案例应用 二、WRF DA资料同化系统理论、

    2024年01月25日
    浏览(44)
  • 第1讲 Camera Sensor Driver课程简介

    更多资源: 资源 描述 在线课程 极客笔记在线课程 知识星球 星球名称:深入浅出Android Camera 星球ID: 17296815 Wechat 极客笔记圈 目标: 课程主要帮助大家理解camera sensor基本概念及原理知识,理解高通camera sensor驱动框架,通过学习完本视频课程后,可以掌握高通平台上的sensor

    2024年02月11日
    浏览(34)
  • Camera简介(一):摄像头模组CCM的结构和原理简述

    我们常说的 Sensor 也就是图像传感器只是整个摄像头模组的一部分,主要负责将接收到的光信号转换成电信号,实际上整个 摄像头模组 (Camera Compact Module,CCM)由很多部分组成,除Sensor以外的其他模块会负责完成对焦、滤光、减震、数据传输等功能,以便更好地采集图像。 索尼

    2024年02月16日
    浏览(39)
  • 高通加入Eclipse基金会和SOAFEE,加速推动软件定义汽车技术的未来

    要点 • 高通技术公司加入汽车行业首批成立的软件定义汽车(SDV)联盟:Eclipse基金会SDV工作组和SOAFEE特别兴趣小组(SIG)。 • 以上联盟旨在通过开发基于开放标准的软件基础设施元素提升下一代车内体验,这些元素能够满足在汽车整个生命周期内开发和部署汽车软件功能

    2024年02月10日
    浏览(37)
  • 跑通GICI-LIB——上海交通大学开源GNSS/INS/Camera组合导航库

    GICI-LIB是由上海交通大学池澄博士开源的GNSS/INS/Camera组合导航库 GICI-LIB原文链接:C. Chi, X. Zhang, J. Liu, Y. Sun, Z. Zhang, and X. Zhan, \\\"GICI-LIB: A GNSS/INS/Camera Integrated Navigation Library,\\\" arXiv preprint, arXiv:2306.13268.  https://doi.org/10.48550/arXiv.2306.13268. GICI-LIB有以下几个特点: 基于 因子图优化(

    2024年02月08日
    浏览(45)
  • 基于断言的验证简介 – 第 1 部分

    基于断言的验证(ABV)是一种与传统方法相比可以大大减少验证过程的技术. ABV主要用于 ASIC 领域,但由于FPGA 设备的复杂性不断增加,事实证明它在 FPGA 验证流程中同样至关重要。 然而,在我们开始庆祝芯片项目验证周期大幅缩短的可能性之前,我们需要了解断言以及如何

    2024年02月02日
    浏览(26)
  • (一)ADRC自抗扰控制-各部分简介与仿真

    简单的说,ADRC可以理解为PID增强版,主要由ESO(扩展状态观测器)、非线性(或线性)控制器、TD(跟踪微分器)组成,其灵魂也是最核心的地方是ESO。 跟踪微分器是对输入进行连续化的过程,具体公式如下: 其中,“r”为跟踪速度因子,“h”为震荡因子。我们给一个阶跃

    2024年02月12日
    浏览(27)
  • Xilinx GTH 简介 ,CoaXpress FPGA PHY 部分

    GTH 是Xilinx UltraScale系列FPGA上高速收发器的一种类型,本质上和其它名称如GTP, GTX等只是器件类型不同、速率有差异;GTH 最低速率在500Mbps,最高在16Gbps CoaXpress Host/Device IP 均需要用到厂商的GT收发器模块,因此这里写一篇笔记作为开发记录 physical coding sublayer (PCS) 是Xilinx 高速收

    2024年02月08日
    浏览(30)
  • JavaScript上部分--头歌(educoder)实训作业题目及答案 JS简介

      目录 JS简介 第1关: JavaScript基础入门 第2关: JavaScript 与 HTML 第3关: JavaScript 变量 JS 数据类型 第1关: JavaScript 数据类型介绍 第2关: JavaScript 数据类型转换 JS运算符 第1关: 算术运算符 第2关: 比较和逻辑运算符 第3关: 条件和赋值运算符 第4关: 运算符的优先级和结合性 JS对象 第

    2023年04月22日
    浏览(74)
  • Camx-Dump Raw Frames

    vendor/qcom/proprietary/camx/src/settings/common/camxsettings.xml 两种方式dump数据: 一. Push a configuration file to/vendor/etc/camera/camxoverridesettings.txt adb shell \\\"echo dumpSensorEEPROMData=TRUE /vendor/etc/camera/camxoverridesettings.txt 二. Set Android properties adb shell setprop vendor.debug.camera.dumpSensorEEPROMData 1 拍张照片后,

    2024年02月09日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包