最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Android 高通Camx架構學習 - 第1章

2023-07-04 23:26 作者:小馳成長圈  | 我要投稿

關于高通Camx架構介紹的文章目前還是鳳毛麟角,我會盡自己能力盡可能講多點,講的通俗明白點~

這篇文章分下面幾點來展開:

1)Camx整體架構圖;

2)Camx基本組件及其概念;

3)Camx代碼目錄結構;

一、Camx整體架構圖

目前Android主流的機型,采用高通芯片的,使用的基本都是camx架構。

之前舊的架構叫做mm-camera,camx架構和之前架構的主要區(qū)別是芯片接口層的代碼從hardware/qcom遷移到?vendor/qcom/proprietary/下面。

我們先來看下camx整體的架構圖:

從上圖我們可以看到,在hal層,高通是結合自己的芯片硬件,添加了一層邏輯,這層邏輯高通內(nèi)部命名為camx架構。

下面我們來看下高通camx架構上,camera數(shù)據(jù)流向大體上是怎樣的?

  1. 從上圖我們可以清晰的看到,Camera數(shù)據(jù)從sensor出來,首先會經(jīng)過IFE,然后分預覽/視頻和拍照2種情況。如果是預覽或者錄像,是先經(jīng)過IPE處理,最后輸出到顯示。如果是拍照,則是先經(jīng)過BSP處理,然后再經(jīng)過JPEG編碼器,最后保存為圖片輸出。

  2. IFE、IPE、BPS、JPEG,它們表示的是芯片內(nèi)部的一個硬件處理單元,數(shù)據(jù)在這些單元內(nèi)部的處理還是比較復雜的,在不同的處理單元里面,會進行一些復雜的算法處理,這里大家先有個認識,有個基本概念。

IFE:圖像前端 IPE:圖像處理引擎 BPS:Bayer 處理區(qū)段復制代碼

二、Camx基本組件及其概念

一個架構總是由一些基本組件構成的,接下來我們來了解下構成camx架構的基本組件有那些。

1) UseCase

A set of streams configured by the client combined with a set of static properties specifying the processing of those streams (由客戶端配置的一組流,這組流是有著一系列靜態(tài)屬性相結合描述的流。) See? createCaptureSession in the Android CameraDevice documentation復制代碼

See? createCaptureSession in the Android CameraDevice

那我們結合下面這段代碼來好好理解下。

熟悉Camera2 API的小伙伴(不熟悉也沒關系,我會講的明白點)應該知道,下面的這段代碼,是把預覽的surface和錄像的surface都設進去,然后去創(chuàng)建session,就是表示我預覽和錄像都需要拿到camera數(shù)據(jù)。假設我預覽設置的size是1080 x 720,錄像是1080p的,那這個1080 x 720預覽+1080p錄像就是一個usecase(用例)。其它類推。

//UseCase: 預覽+錄像 List<Surface> surfaces = new ArrayList<>(); if(previewSurface != null && previewSurface.isValid()){ ?surfaces.add(previewSurface); ?mPreviewBuilder.addTarget(previewSurface); } if(mMediaRecorder != null && mMediaRecorderSurface != null ? ? ?&& mMediaRecorderSurface.isValid()){ ?surfaces.add(mMediaRecorderSurface); ?mPreviewBuilder.addTarget(mMediaRecorderSurface); } mCameraDevice.createCaptureSession(surfaces,...,...);復制代碼

UseCase在camx中很有很多衍生類,這是camx針對不同的stream來建立不同的usecase對象,用來管理選擇feature,并且創(chuàng)建 pipeline以及session。

2)Feature

代表一個特定的功能。高通上的feature有HDR(高動態(tài)范圍)、SuperNight(超級夜景)、MFNR(多幀降噪)等等,usecase選擇相應的feature,然后關聯(lián)一組pipeline,上層下發(fā)request請求,hal層會根據(jù)request去選擇對應的feature。

3)Node

Node是單個具有獨立處理功能的抽象模塊,可以是軟件單元也可以是硬件單元。Node是camx中非常重要的一個父類,是處理camera 請求的一個中間節(jié)點,用于處理pipeline下發(fā)的請求。

?Node 節(jié)點在camx chi架構中至關重要,數(shù)據(jù)的處理都是通過封裝好的Node節(jié)點來進行的。

4) pipeline

一連串node的集合。pipeline提供單一特定功能的所有資源集合,維護著所有硬件資源以及數(shù)據(jù)的流轉。

5)session

若干個有關聯(lián)的pipeline的集合,用于管理pipeline的抽象控制單元,其中至少包含一個pipeline,并控制著所有的硬件資源,管控著每個pipeline內(nèi)部的request流轉以及數(shù)據(jù)的輸入輸出。

6)Link

定義不同的Port的連接端口(輸入端口和輸出端口)。

7) Port

作為Node的輸入輸出端口,使用SrcPort以及DstPort結構定義XML文件。

8)Topologies

A topology is a directed acyclic graph (DAG) specifying an instantiation of a use case (拓撲是一個指定用例實例化的有向無環(huán)圖(DAG)) XML definition of use cases and associated topologies For CamX, this graph defines the HW, SW, and non-Qualcomm processing nodes, and the data flow between the nodes復制代碼

組件之間的關系

最后來總結下各個基本組件之間的關系。上層根據(jù)需求,config對應的stream下來,下面會根據(jù)申請的stream來選擇對應的usecase,usecase選擇完成后,又會去選擇需要的feature,然后不同的feature會去關聯(lián)對應的pipeline。我們知道pipeline是由一系列node組成的,那最終上層config的stream,就會交由各個node去處理。

三、代碼目錄結構

camx的代碼是在vendor/qcom/proprietary/目錄下,分camx和chi-cdk倆大目錄。

1)CamX中的目錄

core分為hal與chi目錄:存放CamX的核心實現(xiàn)模塊 hal/:實現(xiàn)hal3接口的hal/目錄 chi/:負責CHI進行交互的chi/目錄 hwl/:存放自身算法具有獨立運算能力的硬件node---受到csl管理 swl/:存放并不具有獨立運算能力,必須依靠CPU才能實現(xiàn)的node csl/:負責camx與camera driver的通訊模塊, ? ? ?為camx提供了統(tǒng)一的Camera driver控制接口復制代碼

2) chi-cdk中的目錄

core/:存放CHI實現(xiàn)的核心模塊,負責與Camx進行交互并且實現(xiàn)了CHI的總體框架 以及業(yè)務處理。 oem/qcom/topolog/:存放用戶自定義的Usecase xml配置信息 oem/qcom/node/:存放用戶自定義功能的node oem/qcom/module/:存放不同的sensor的配置文件,在初始化sensor時候需要用到。 oem/qcom/tuning/:存放不同場景下的效果參數(shù)的配置文件。 oem/qcom/sensor/:存放不同sensor的只有信息以及寄存器配置參數(shù) oem/qcom/actuator/:存放不同對焦模塊的配置信息。 oem/qcom/ois/:存放防抖模塊的配置信息。 oem/qcom/flash/:存放閃光燈模塊的配置信息。 oem/qcom/eeprom/:存放eeprom外部存儲模塊的配置信息。 oem/qcom/fd/:存放人臉識別模塊的配置信息。 復制代碼

*本人從事Android Camera相關開發(fā)已有5年,

*目前在深圳上班,

*歡迎關注我的微信公眾號 ?小馳筆記

*希望和更多的小伙伴一起交流學習~

-------- ?2021.03.27 深圳 ?23:54

參考文章:

bbs.huaweicloud.com/blogs/22509…

www.jianshu.com/p/cfb1da9d4…


Android 高通Camx架構學習 - 第1章的評論 (共 條)

分享到微博請遵守國家法律
肇东市| 富顺县| 右玉县| 通榆县| 剑阁县| 彭泽县| 华池县| 渑池县| 永靖县| 惠水县| 郓城县| 凤台县| 长宁县| 金乡县| 苏尼特右旗| 赤峰市| 南昌县| 乐山市| 上林县| 和静县| 兰西县| 汉寿县| 石渠县| 内江市| 永城市| 乃东县| 许昌市| 故城县| 丹棱县| 澜沧| 阿拉善右旗| 宁陕县| 墨脱县| 金寨县| 茂名市| 普兰店市| 泗洪县| 谢通门县| 榆林市| 铜鼓县| 宁陵县|