<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>

          驍龍相機啟動流程分析

          共 4672字,需瀏覽 10分鐘

           ·

          2024-06-20 18:09

          一、驍龍相機啟動流程分析

          1. 相機啟動階段關鍵TAG

          關鍵字 解釋
          deliverInputEvent 點擊事件
          bindApplication App 冷啟動 創(chuàng)建application
          activityStart 創(chuàng)建camera activity
          activityResume camera UI界面開始顯示
          connectDevice cameraFWK 開始鏈接并open sensor
          CameraHal::openSession Camera FWK 響應 opencamera
          camera_module->open HAL 響應 opencamera
          HAL3Open HAL 開始準備opencamera
          constructDefaultRequestSettings 獲取Camera request setting 比如一下metadata等
          createStream 創(chuàng)建配流信息,可以查看配幾路流
          endConfigure 配流結束
          CameraHal::configureStreams Camera FWK 配流階段常用搜索關鍵字
          HAL3ConfigureStreams Camera HAL 配流階段常用關鍵字
          AdvancedCameraUsecase::Initialize chi usecase 初始化
          submitRequestList,setRepeatingRequests 發(fā)起預覽請求
          CameraHal::processBatchCaptureRequests 下發(fā)預覽請求
          HAL3ProcessCaptureRequest camera HAL 響應第0幀預覽請求
          CSLStreamOn,KMDStreamON: DevType20 sensor 開始streamon
          HAL3ProcessCaptureRequest : 1 Camera HAL 響應第一次預覽請求
          Stream 0: first full buffer Camera FWK接收到返回第一幀
          SurfaceView[org.codeaurora.snapcam/com.android.camera.CameraLauncher]#1(BLAST Consumer)1 Camera app 接收第一幀
          BufferTX - SurfaceVieworg.codeaurora.snapcam/com.android.camera.CameraLauncher#529 Surfaceflinger bufferTX 用來存儲buffer 供SF 消費
          VSYNC-sf SF 開始繪制處理,對應的BufferTX - 1
          prepareFrame SF開始預處理幀
          HwcPresentOrValidateDisplay SF 與HWC進行通信驗證顯示
          postComposition Last HWVsyncHint post 顯示合成結果
          presentFence fence 155,waiting for presentFence 155,REThreaded::mapExternalTextureBuffer 上屏顯示(SF不太熟大致是這個時候屏幕可以顯示處理)

          2. 相機啟動階段拆解

          階段 模塊 關鍵字 備注
          S0 system deliverInputEvent---> ZygoteInit之前 app 開始running的地方 創(chuàng)建 camera app
          S1 APP app 開始running的地方--->connectDevice 開始 Camera App 開始請求openCamera
          S2 Camera HAL connectDevice HAL 處理open camera 操作
          S3 Camera APP、FWK connectDevice 結束--->CameraHidlHal::constructDefaultRequestSettings-->createStream-->endConfigure start 請求配流
          S4 Camera HAL CameraHal::configureStreams Camera HAL 響應配流
          S5 Camera APP CameraHal::configureStreams 結束 -->submitRequestList、setRepeatingRequests 請求預覽
          S6 Camera HAL submitRequestList、setRepeatingRequests--> first full buffer Camera HAL 返回第一幀
          S7 SF first full buffer-->上屏顯示 SF送顯階段

          3. 相機啟動階段概覽


          相機啟動階段概覽

          4. 相機啟動階段詳解

          S0 :Launcher 點擊Camera Icon 響應事件到Camera app 創(chuàng)建


          S0 :Launcher 點擊Camera Icon 響應事件到Camera app 創(chuàng)建

          S1: Camera APP UI 創(chuàng)建 到 OpenCamera 開始


          S1: Camera APP UI 創(chuàng)建 到 OpenCamera 開始

          S2 Camera HAL 響應 opencamera


          S2 : Camera HAL 響應 opencamera

          S3:APP開始下發(fā)請求配流


          S3:APP開始下發(fā)請求配流

          對應log中創(chuàng)建的2路流如下:

              Line 10538: 06-19 18:09:04.173  1907  3718 I CameraDeviceClient: createStream : stream size is 960 x 720
          Line 10543: 06-19 18:09:04.180 1907 3718 I CameraDeviceClient: createStream : stream size is 4608 x 3456

          S4: Camera HAL 響應配流


          S4: Camera HAL 響應配流

          S5:請求預覽 startpreview


          S5:請求預覽 startpreview

          S6: Camera HAL callback 首幀請求結果


          S6: Camera HAL callback 首幀請求結果

          6.1 一幀callback流程

          一幀數(shù)據(jù)傳輸通過Binder 進行
          Camera HAL: HAL3ProcessCaptureResult
          --->
          Camera FWK: processCaptureResult
          --->
          Camera App: onFrameAvaillable
          --->
          SF: SurfaceView +1
          SF: BufferTX SurfaceView +1
          SF:QueueBuffer +1



          一幀callback流程

          S7: Surface 送顯上屏階段

          1. App queuebuffer 后SurfaceView +1
          2. Vsync-sf 到來后SF 從BufferQueue中取出app 送顯幀進行消費合成
          3. SF跟HWC通過bind通信后,調(diào)用postComposition Last HWVsyncHint ,在對應 presentFence fence 到來后,調(diào)用SF的REThreaded::mapExternalTextureBuffer 開始上屏顯示(非display研發(fā),待理清上屏顯示的真正時間)



            Surface 送顯上屏階段


          瀏覽 142
          1點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产亚洲精品成人a v久久网站 | 欧美操屄网站 | 懂色一区二区三区四区在线看 | 天天爽夜夜爽一区二区三区 | 久久99精品国产.久久久久久 |