精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入理解Camera的整體五層架構(gòu)

新機(jī)器視覺(jué) ? 來(lái)源:csdn ? 2024-04-25 14:41 ? 次閱讀

相機(jī)架構(gòu)概覽

Android系統(tǒng)利用分層思想,將各層的接口定義與實(shí)現(xiàn)分離開(kāi)來(lái),以接口作為各層的脈絡(luò)連接整體框架,將具體實(shí)現(xiàn)的主導(dǎo)權(quán)交由各自有具體實(shí)現(xiàn)需求的平臺(tái)廠商或者Android 開(kāi)發(fā)者,這樣既做到把控全局,也給予了眾多開(kāi)發(fā)者足夠大的創(chuàng)作空間,這體現(xiàn)出了一個(gè)優(yōu)秀的開(kāi)源系統(tǒng)應(yīng)有的胸懷和遠(yuǎn)見(jiàn)。其中,谷歌根據(jù)職能的不同將Camera框架一共劃分成了五層,分別是App、Service、Provider、Driver以及Hardware,下面的Camera的整體架構(gòu)圖很清晰地顯示出了其五層架構(gòu)以及相互的關(guān)聯(lián)接口。

219a7d46-0224-11ef-a297-92fbcf53809c.jpg

程序員Android轉(zhuǎn)于網(wǎng)絡(luò)

Camera App

應(yīng)用層處于整個(gè)框架的頂端,承擔(dān)著于用戶直接進(jìn)行交互的責(zé)任,承接來(lái)自用戶直接或者間接的比如預(yù)覽/拍照/錄像等一系列具體需求,一旦接收到用戶相關(guān)UI操作,便會(huì)通過(guò)Camera Api v2標(biāo)準(zhǔn)接口將需求發(fā)送至Camera Framework部分,并且等待Camera Framework回傳處理結(jié)果,其中包括了圖像數(shù)據(jù)以及整體相機(jī)系統(tǒng)狀態(tài)參數(shù),之后將結(jié)果以一定方式反饋給用戶,達(dá)到記錄顯示種種美好瞬間的目的。

Camera Framework

該層主要位于Camera App與Camera Service之間,以jar包的形式運(yùn)行在App進(jìn)程中,它封裝了Camera Api v2接口的實(shí)現(xiàn)細(xì)節(jié),暴露接口給App進(jìn)行調(diào)用,進(jìn)而接收來(lái)自App的請(qǐng)求,同時(shí)維護(hù)著請(qǐng)求在內(nèi)部流轉(zhuǎn)的業(yè)務(wù)邏輯,最終通過(guò)調(diào)用Camera AIDL跨進(jìn)程接口將請(qǐng)求發(fā)送至Camera Service中進(jìn)行處理,緊接著,等待Camera Service結(jié)果的回傳,進(jìn)而將最終結(jié)果發(fā)送至App。

Camera Service

該層位于Camera Framework與Camera Provider之間,作為一個(gè)獨(dú)立進(jìn)程存在于Android系統(tǒng)中,在系統(tǒng)啟動(dòng)初期會(huì)運(yùn)行起來(lái),它封裝了Camera AIDL跨進(jìn)程接口,提供給Framework進(jìn)行調(diào)用,進(jìn)而接收來(lái)自Framework的圖像請(qǐng)求,同時(shí)內(nèi)部維護(hù)著關(guān)于請(qǐng)求在該層的處理邏輯,最終通過(guò)調(diào)用Camera HIDL跨進(jìn)程接口將請(qǐng)求再次下發(fā)到Camera Provider中,并且等待結(jié)果的回傳,進(jìn)而將結(jié)果上傳至Framework中。

Camera Provider

該層位于Camera Service與Camera Driver之間,作為一個(gè)獨(dú)立的進(jìn)程存在于Android系統(tǒng)中,同時(shí)在系統(tǒng)啟動(dòng)初期被運(yùn)行,提供Camera HIDL跨進(jìn)程接口供Camera Service進(jìn)行調(diào)用,封裝了該接口的實(shí)現(xiàn)細(xì)節(jié),接收來(lái)自Service的圖像請(qǐng)求,并且內(nèi)部加載了Camera HAL Module,該Module由OEM/ODM實(shí)現(xiàn),遵循谷歌制定的標(biāo)準(zhǔn)Camera HAL3接口,進(jìn)而通過(guò)該接口控制Camera HAL部分,最后等待Camera HAL的結(jié)果回傳,緊接著Provider通過(guò)Camera HIDL接口將結(jié)果發(fā)送至Camera Service。

CamX-CHI(Camera HAL)

該部分是高通對(duì)谷歌Camera HAL3接口的實(shí)現(xiàn),以so庫(kù)的形式被加載至Camera Provider中,之前采用的是QCamera & MM-Camera架構(gòu),但是為了更好靈活性和可擴(kuò)展性,而今高通又提出了CamX-CHI架構(gòu),該架構(gòu)提供HAL3接口給Provider進(jìn)行調(diào)用,接收來(lái)自Provider的請(qǐng)求,而內(nèi)部對(duì)HAL3接口進(jìn)行了實(shí)現(xiàn),并且通過(guò)V4L2標(biāo)準(zhǔn)框架控制著相機(jī)驅(qū)動(dòng)層,將請(qǐng)求下發(fā)至驅(qū)動(dòng)部分,并且等待結(jié)果回傳,進(jìn)而上報(bào)給Camera Provider。

CamX-CHI架構(gòu)由CamX和CHI兩個(gè)部分組成,CamX負(fù)責(zé)一些基礎(chǔ)服務(wù)代碼的實(shí)現(xiàn),不經(jīng)常改動(dòng),CHI負(fù)責(zé)實(shí)現(xiàn)一些可擴(kuò)展性和定制化的需求,方便OEM/ODM添加自己的擴(kuò)展功能。CamX主要包括實(shí)現(xiàn)HAL3入口的hal模塊,實(shí)現(xiàn)與V4L2驅(qū)動(dòng)交互的csl模塊,實(shí)現(xiàn)硬件node的hwl和實(shí)現(xiàn)軟件node的swl。CHI通過(guò)抽象出Usecase、Feature、Session、Pipeline、Node的概念,使廠商可以通過(guò)實(shí)現(xiàn)Node接口來(lái)接入自己的算法,并通過(guò)XML文件靈活配置Usecase、Pipeline、Node的結(jié)構(gòu)關(guān)系。

Camera Driver

Linux視頻采集設(shè)備制定了標(biāo)準(zhǔn)的V4L2接口,并在內(nèi)核中實(shí)現(xiàn)了其基礎(chǔ)框架V4L2 Core。用戶空間進(jìn)程可以通過(guò)V4L2接口調(diào)用相關(guān)設(shè)備功能,而不用考慮其實(shí)現(xiàn)細(xì)節(jié)。V4L2提出了總設(shè)備和子設(shè)備的概念,并通過(guò)media controller機(jī)制向用戶空間暴露自己的硬件拓?fù)浣Y(jié)構(gòu)。視頻采集設(shè)備驅(qū)動(dòng)廠商按照V4L2 Core的要求開(kāi)發(fā)自己的驅(qū)動(dòng)程序,只需要實(shí)現(xiàn)相應(yīng)的結(jié)構(gòu)體和函數(shù)接口并調(diào)用注冊(cè)函數(shù)注冊(cè)自己就行。

在高通平臺(tái)上,高通對(duì)相機(jī)驅(qū)動(dòng)部分進(jìn)行了實(shí)現(xiàn),利用了V4L2框架的可擴(kuò)展特性,設(shè)計(jì)出了一套獨(dú)特的KMD框架。在該框架內(nèi)部主要包含了三個(gè)部分,CRM、Camera Sync以及一系列子設(shè)備,首先,作為框架頂層管理者,CRM創(chuàng)建了一個(gè)V4L2主設(shè)備用來(lái)管理所有的子設(shè)備,并且暴露設(shè)備節(jié)點(diǎn)video0給用戶空間,同時(shí)內(nèi)部維護(hù)著整個(gè)底層驅(qū)動(dòng)業(yè)務(wù)邏輯。其次,Camera Sync創(chuàng)建了一個(gè)V4L2主設(shè)備,同時(shí)暴露了設(shè)備節(jié)點(diǎn)video1給用戶空間,主要用于向用戶空間反饋圖像數(shù)據(jù)處理狀態(tài)。最后,子設(shè)備模塊被抽象成v4l2_subdev設(shè)備,同樣也暴露設(shè)備節(jié)點(diǎn)v4l2-subdev給用戶空間進(jìn)行更精細(xì)化的控制。另外,在整個(gè)框架初始化的過(guò)程中,通過(guò)media controller機(jī)制,保持了在用戶空間進(jìn)行枚舉底層硬件設(shè)備的能力。

Camera Hardware

相機(jī)硬件處在整個(gè)相機(jī)體系的最底層,是相機(jī)系統(tǒng)的物理實(shí)現(xiàn)部分,該部分包括鏡頭、感光器、ISP三個(gè)最重要的模塊,還有對(duì)焦馬達(dá)、閃光燈、濾光片、光圈等輔助模塊。鏡頭的作用是匯聚光線,利用光的折射性把射入的光線匯聚到感光器上。感光器的作用是負(fù)責(zé)光電轉(zhuǎn)換,通過(guò)內(nèi)部感光元件將接收到的光信號(hào)轉(zhuǎn)換為電子信號(hào)進(jìn)而通過(guò)數(shù)電轉(zhuǎn)換模塊轉(zhuǎn)為數(shù)字信號(hào),并最后傳給ISP。ISP負(fù)責(zé)對(duì)數(shù)字圖像進(jìn)行一些算法處理,如白平衡、降噪、去馬賽克等。

通過(guò)上面的介紹,我們可以發(fā)現(xiàn),谷歌通過(guò)以上五級(jí)分層,形成了整個(gè)相機(jī)框架體系,其中層與層之間通過(guò)行業(yè)協(xié)會(huì)、開(kāi)源社區(qū)或者谷歌制訂的標(biāo)準(zhǔn)接口進(jìn)行連接,上層通過(guò)調(diào)用標(biāo)準(zhǔn)接口下發(fā)請(qǐng)求到下層,下層負(fù)責(zé)對(duì)標(biāo)準(zhǔn)接口進(jìn)行實(shí)現(xiàn),最終將請(qǐng)求再次封裝并調(diào)用下一層級(jí)的對(duì)外接口下發(fā)到下層。所以總得來(lái)說(shuō),谷歌使用標(biāo)準(zhǔn)接口作為骨架搭建整體框架,而其具體實(shí)現(xiàn)交由各層自己負(fù)責(zé),從整體上來(lái)看,職責(zé)劃分明確,界限分明,這樣的設(shè)計(jì),一來(lái)利用標(biāo)準(zhǔn)接口,保持了整個(gè)框架業(yè)務(wù)正常流轉(zhuǎn),二來(lái)極大地降低了各層耦合度,保持了各層的相互獨(dú)立,最終讓整個(gè)框架處于一個(gè)穩(wěn)定同時(shí)高效的運(yùn)行狀態(tài)。

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3903

    瀏覽量

    126615
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207908
  • Camera
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    20706
  • 開(kāi)源系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    13651

原文標(biāo)題:深入理解Camera 二 (相機(jī)架構(gòu)概覽)

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深入理解SD卡原理和其內(nèi)部結(jié)構(gòu)總結(jié)

    深入理解SD卡原理和其內(nèi)部結(jié)構(gòu)總結(jié)
    發(fā)表于 08-18 11:11

    深入理解Android

    深入理解Android
    發(fā)表于 08-20 15:30

    深入理解和實(shí)現(xiàn)RTOS_連載

    和trcohili的帖子。深入理解和實(shí)現(xiàn)RTOS_連載1_RTOS的前生今世今天發(fā)布的是第一篇,"RTOS的前生今世"。通過(guò)軟件系統(tǒng)結(jié)構(gòu)的比對(duì)簡(jiǎn)要的介紹rtos為何而生。如果讀者對(duì)RTOS
    發(fā)表于 05-29 11:20

    深入理解和實(shí)現(xiàn)RTOS_連載

    和trcohili的帖子。trochili rtos完全是作者興趣所在,且行且堅(jiān)持,比沒(méi)有duo。深入理解和實(shí)現(xiàn)RTOS_連載1_RTOS的前生今世今天發(fā)布的是第一篇,"RTOS的前生今世"
    發(fā)表于 05-30 01:02

    深入理解Linux網(wǎng)絡(luò)技術(shù)內(nèi)幕》(EN)

    深入理解Linux網(wǎng)絡(luò)技術(shù)內(nèi)幕》(EN)
    發(fā)表于 02-06 15:17

    深入理解lte-a

    深入理解LTE-A
    發(fā)表于 02-26 10:21

    如何深入理解ES6之函數(shù)

    深入理解ES6之函數(shù)
    發(fā)表于 05-22 07:40

    深入理解STM32

    時(shí)鐘系統(tǒng)是處理器的核心,所以在學(xué)習(xí)STM32所有外設(shè)之前,認(rèn)真學(xué)習(xí)時(shí)鐘系統(tǒng)是必要的,有助于深入理解STM32。下面是從網(wǎng)上找的一個(gè)STM32時(shí)鐘框圖,比《STM32中文參考手冊(cè)》里面的是中途看起來(lái)清晰一些:重要的時(shí)鐘:PLLCLK,SYSCLK,HCKL,PCLK1,...
    發(fā)表于 08-12 07:46

    對(duì)棧的深入理解

    為什么要深入理解棧?做C語(yǔ)言開(kāi)發(fā)如果棧設(shè)置不合理或者使用不對(duì),棧就會(huì)溢出,溢出就會(huì)遇到無(wú)法預(yù)測(cè)亂飛現(xiàn)象。所以對(duì)棧的深入理解是非常重要的。注:動(dòng)畫(huà)如果看不清楚可以電腦看更清晰啥是棧先來(lái)看一段動(dòng)畫(huà):沒(méi)有
    發(fā)表于 02-15 07:01

    為什么要深入理解

    [導(dǎo)讀] 從這篇文章開(kāi)始,將會(huì)不定期更新關(guān)于嵌入式C語(yǔ)言編程相關(guān)的個(gè)人認(rèn)為比較重要的知識(shí)點(diǎn),或者踩過(guò)的坑。為什么要深入理解棧?做C語(yǔ)言開(kāi)發(fā)如果棧設(shè)置不合理或者使用不對(duì),棧就會(huì)溢出,溢出就會(huì)遇到無(wú)法
    發(fā)表于 02-15 06:09

    深入理解Android之資源文件

    深入理解Android之資源文件
    發(fā)表于 01-22 21:11 ?22次下載

    深入理解Android》文前

    深入理解Android》文前
    發(fā)表于 03-19 11:23 ?0次下載

    深入理解Android:卷I》

    深入理解Android:卷I》
    發(fā)表于 03-19 11:23 ?0次下載

    深入理解Android網(wǎng)絡(luò)編程

    深入理解Android網(wǎng)絡(luò)編程
    發(fā)表于 03-19 11:26 ?1次下載

    深入理解MOS管電子版資源下載

    深入理解MOS管電子版資源下載
    發(fā)表于 07-09 09:43 ?0次下載