Android Camera 3A 模式和狀態轉換

雖然實際的 3A 算法取決於 HAL 實現,但高級狀態機的說明由 HAL 接口定義,以支持 HAL 設備和框架就 3A 的當前狀態進行通信並觸發 3A 事件。

當設備開啓時,所有單獨的 3A 狀態都必須爲 STATE_INACTIVE。流配置不會重置 3A。例如,在整個 configure() 調用期間必須保持焦點鎖定。

要觸發 3A 操作,只需在下一個請求的設置中設置相關觸發條目,以指示觸發開始即可。例如,若要觸發自動對焦掃描的啓動操作,只需將相應請求的 ANDROID_CONTROL_AF_TRIGGER 條目設爲 ANDROID_CONTROL_AF_TRIGGER_START 即可;若要觸發自動對焦掃描的取消操作,只需將 ANDROID_CONTROL_AF_TRIGGER 設爲 ANDROID_CONTRL_AF_TRIGGER_CANCEL 即可。否則,條目將會不存在或被設爲 ANDROID_CONTROL_AF_TRIGGER_IDLE。凡是具有已設爲非 IDLE 值的觸發條目的請求,都會被視爲獨立的觸發事件。

在頂層,3A 由 ANDROID_CONTROL_MODE 設置控制。該設置選項包括關閉 3A (ANDROID_CONTROL_MODE_OFF)、正常自動 (AUTO) 模式 (ANDROID_CONTROL_MODE_AUTO),以及使用取景模式設置 (ANDROID_CONTROL_USE_SCENE_MODE):

  • 在 OFF 模式下,單個的自動對焦 (AF)、自動曝光 (AE) 和自動白平衡 (AWB) 模式都會有效地關閉,且任何拍攝控件都不會被 3A 例程覆蓋。
  • 在 AUTO 模式下,AF、AE 和 AWB 模式都會運行各自的獨立算法,且具有自己的模式、狀態和觸發元數據條目,具體如下一節所示。
  • 在 USE_SCENE_MODE 下,必須使用 ANDROID_CONTROL_SCENE_MODE 條目的值來確定 3A 例程的行爲。在除 FACE_PRIORITY 以外的 SCENE_MODE 下,HAL 必須將ANDROID_CONTROL_AE/AWB/AF_MODE 的值替換爲它傾向於讓所選的 SCENE_MODE 使用的模式。例如,HAL 可能傾向於在 SCENE_MODE_NIGHT 下使用 CONTINUOUS_FOCUS AF 模式。當必須忽略這些取景模式下的場景時,用戶可隨意選擇 AE/AWB/AF_MODE。
  • 對於 SCENE_MODE_FACE_PRIORITY,AE/AWB/AFMODE 控件的工作方式與在 ANDROID_CONTROL_MODE_AUTO 模式下相同,但 3A 例程必須偏向測光,並對焦到場景中任何已檢測到的人臉上。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章