<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深入理解Camera 二 (相機架構概覽)

          共 3177字,需瀏覽 7分鐘

           ·

          2024-04-19 07:45

          和你一起終身學習,這里是程序員Android

          經典好文推薦,通過閱讀本文,您將收獲以下知識點:

          相機架構概覽

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

          程序員Android轉于網(wǎng)絡

          Camera App

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

          Camera Framework

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

          Camera Service

          該層位于Camera Framework與Camera Provider之間,作為一個獨立進程存在于Android系統(tǒng)中,在系統(tǒng)啟動初期會運行起來,它封裝了Camera AIDL跨進程接口,提供給Framework進行調用,進而接收來自Framework的圖像請求,同時內部維護著關于請求在該層的處理邏輯,最終通過調用Camera HIDL跨進程接口將請求再次下發(fā)到Camera Provider中,并且等待結果的回傳,進而將結果上傳至Framework中。

          Camera Provider

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

          CamX-CHI(Camera HAL)

          該部分是高通對谷歌Camera HAL3接口的實現(xiàn),以so庫的形式被加載至Camera Provider中,之前采用的是QCamera & MM-Camera架構,但是為了更好靈活性和可擴展性,而今高通又提出了CamX-CHI架構,該架構提供HAL3接口給Provider進行調用,接收來自Provider的請求,而內部對HAL3接口進行了實現(xiàn),并且通過V4L2標準框架控制著相機驅動層,將請求下發(fā)至驅動部分,并且等待結果回傳,進而上報給Camera Provider。

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

          Camera Driver

          Linux為視頻采集設備制定了標準的V4L2接口,并在內核中實現(xiàn)了其基礎框架V4L2 Core。用戶空間進程可以通過V4L2接口調用相關設備功能,而不用考慮其實現(xiàn)細節(jié)。V4L2提出了總設備和子設備的概念,并通過media controller機制向用戶空間暴露自己的硬件拓撲結構。視頻采集設備驅動廠商按照V4L2 Core的要求開發(fā)自己的驅動程序,只需要實現(xiàn)相應的結構體和函數(shù)接口并調用注冊函數(shù)注冊自己就行。

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

          Camera Hardware

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

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

          原文鏈接:https://blog.csdn.net/u012596975/article/details/107136568

          友情推薦:

          Android 開發(fā)干貨集錦

          至此,本篇已結束。轉載網(wǎng)絡的文章,小編覺得很優(yōu)秀,歡迎點擊閱讀原文,支持原創(chuàng)作者,如有侵權,懇請聯(lián)系小編刪除,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!

          點個在看,方便您使用時快速查找!

          瀏覽 158
          10點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          10點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  50路人妻| 青青草手机免费在线看片 | 日韩欧美成人在线 | 日韩乱伦AV无码小说 | 国产人妻在线观看 |