3A 模式和狀態轉換

雖然實際 3A 演算法才是 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):

  • 在關閉模式中,每組自動對焦 (AF)、自動曝光 (AE)、 和自動白平衡 (AWB) 模式都會關閉, 3A 常式可能會覆寫擷取控制項。
  • 在自動模式中,AF、AE 和 AWB 模式各自獨立運作 並具有專屬的模式、狀態與觸發中繼資料項目, 如下一節所述。
  • 在 USE_SCENE_MODE 中,ANDROID_CONTROL_SCENE_MODE 項目的值必須 用於判斷 3A 處理常式的行為在 SCENE_MODE 以外的程式中 FACE_PRIORITY,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,但 3 項常式必須偏向計量以及 著重在場景中偵測到的任何臉孔

自動對焦設定和結果項目

主要中繼資料項目
ANDROID_CONTROL_AF_MODE 用於選取目前自動對焦模式的控制項。由架構設定 封鎖。
AF_MODE_OFF AF 已停用;而架構/應用程式可直接控制鏡頭位置
AF_MODE_AUTO 一次性清除自動對焦。除非觸發 AF,否則鏡頭不會移動。
AF_MODE_MACRO 單掃向上自動對焦。除非觸發 AF,否則鏡頭不會移動。
AF_MODE_CONTINUOUS_VIDEO 流暢的連續對焦,可用於錄影。立即觸發 將焦點鎖定在目前的位置。如果取消,就能繼續對焦。
AF_MODE_CONTINUOUS_PICTURE 快速持續對焦,即使沒有延遲延遲也不受影響。觸發條件 會在目前進行中的清理作業結束時鎖定焦點。正在取消重新啟用 保持專注
AF_MODE_EDOF 進階的視野延伸深度。由於沒有自動對焦功能 因此觸發或取消任何動作不會產生任何效果圖片聚焦 由 HAL 自動觸發
ANDROID_CONTROL_AF_STATE 用於說明目前 AF 演算法狀態的動態中繼資料 (已回報) HAL 來處理結果
AF_STATE_INACTIVE 未聚焦或已重設演算法。智慧鏡頭靜止不動。 一律為 MODE_OFF 或 MODE_EDOF 的狀態。裝置開啟時 都必須處於此狀態
AF_STATE_PASSIVE_SCAN 系統目前正在掃描持續對焦演算法,以便找出適當的焦點。 鏡頭正在移動。
AF_STATE_PASSIVE_FOCUSED 持續聚焦的演算法則認為其聚焦程度良好。鏡頭 裝置並未移動HAL 可能會主動退出這個狀態。
AF_STATE_PASSIVE_UNFOCUSED 持續聚焦演算法認為其專注度並未妥善。鏡頭 裝置並未移動HAL 可能會主動退出這個狀態。
AF_STATE_ACTIVE_SCAN 使用者觸發的掃描作業進行中。
AF_STATE_FOCUSED_LOCKED AF 演算法認為該功能聚焦。鏡頭沒有移動。
AF_STATE_NOT_FOCUSED_LOCKED AF 演算法無法聚焦。鏡頭沒有移動。
ANDROID_CONTROL_AF_TRIGGER 用於啟動自動對焦掃描的控制項,取決於 模式和狀態由要求設定中的架構進行設定。
AF_TRIGGER_IDLE 沒有目前的觸發條件。
AF_TRIGGER_START 觸發 AF 掃描作業。影響取決於模式和狀態。
AF_TRIGGER_CANCEL 取消目前的 AF 掃描作業 (如有),並將演算法重設為預設值。
其他中繼資料項目
ANDROID_CONTROL_AF_REGIONS 用於選取視野 (FOV) 區域的控制項 來判斷重點所在適用於所有 AF 以及掃描是否有焦點由要求設定中的架構進行設定。

自動顯示設定和結果項目

主要中繼資料項目
ANDROID_CONTROL_AE_MODE 用於選取目前自動曝光模式的控制項。由 管理架構
AE_MODE_OFF 自動曝光功能已停用。使用者會控制曝光、增益、影格 時間長度和 Flash 值
AE_MODE_ON (開啟模式) 標準自動顯示功能,停用閃光燈控制選項。使用者可以設定 Flash 觸發或切換至手電筒模式
AE_MODE_ON_AUTO_FLASH 標準自動曝光,HAL 自行斟酌是否開啟閃光燈 然後繼續拍攝已停用閃光燈的使用者控制項。
AE_MODE_ON_ALWAYS_FLASH 標準自動曝光,一律在拍攝時觸發閃光燈,而在 HAL 的 預先擷取。已停用閃光燈的使用者控制項。
AE_MODE_ON_AUTO_FLASH_REDEYE 標準自動曝光,HAL 自行斟酌是否開啟閃光燈 然後繼續拍攝在預先拍攝序列結束時使用閃光燈, 減少最終相片中的紅眼已停用閃光燈的使用者控制項。
ANDROID_CONTROL_AE_STATE 說明目前 AE 演算法狀態的動態中繼資料,由 HAL 的相關資訊
AE_STATE_INACTIVE 模式切換後的初始 AE 狀態。開啟裝置時,必須 初始化
AE_STATE_SEARCHING AE 並未轉換為良好價值,正在調整曝光 參數。
AE_STATE_CONVERGED AE 發現目前場景的曝光值良好, 曝光參數維持不變HAL 可能會自發性地離開 尋求更好的解決方案
AE_STATE_LOCKED AE 已鎖定 AE_LOCK 控制項。曝光值不是 不斷變化
AE_STATE_FLASH_REQUIRED HAL 已採用聚合通訊,但認為使用者需要閃光燈 並準備充分的相片用於判斷零延遲 才能使用
AE_STATE_PRECAPTURE HAL 出現在預先擷取序列中間。根據 AE 模式 開啟這個模式時,你可能會為了測光或突發閃光燈而開啟閃光燈 以減少紅眼的脈衝
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER 用來在擷取高品質計量序列之前,啟動計量序列的控制項 圖片。由要求設定中的架構進行設定。
PRECAPTURE_TRIGGER_IDLE 沒有目前的觸發條件。
PRECAPTURE_TRIGGER_START 啟動預先擷取序列。HAL 應使用後續的要求 衡量即將到來的高解析度相片/白平衡 擷取。
其他中繼資料項目
ANDROID_CONTROL_AE_LOCK 將 AE 控制項鎖定為目前值的控制項。
ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION 用於調整 AE 演算法目標亮度點的控制項。
ANDROID_CONTROL_AE_TARGET_FPS_RANGE 用於選取 AE 演算法目標影格速率範圍的控制項。 AE 處理常式無法將畫面更新率變更為這些範圍外 上下限
ANDROID_CONTROL_AE_REGIONS 用於選取應用於 FOV 區域的控制項 判斷良好的暴露量。這適用於所有 AE 模式 。

自動白平衡設定和結果項目

主要中繼資料項目
ANDROID_CONTROL_AWB_MODE 用於選取目前白平衡模式的控制項。
AWB_MODE_OFF 已停用自動白平衡功能。使用者可控制色彩矩陣。
AWB_MODE_AUTO 已啟用自動白平衡功能;3A 控制項顏色變換、 可能使用比簡單矩陣更複雜的轉換
AWB_MODE_INCANDESCENT 修正白平衡設定適用於室內白熾燈 (通風) 大約 270 萬
AWB_MODE_FLUORESCENT 固定白平衡設定 (大致上適用於螢光燈) 500 萬。
AWB_MODE_WARM_FLUORESCENT 固定白平衡設定 (大致上適用於螢光燈) 300 萬。
AWB_MODE_DAYLIGHT 固定白平衡設定適合日光模式 (大約 550 萬個)。
AWB_MODE_CLOUDY_DAYLIGHT 固定白平衡設定適用於雲層日光 (大約 650 萬個)。
AWB_MODE_TWILIGHT 固定白平衡設定,適合接近日落/日出時間 1500 萬。
AWB_MODE_SHADE 修正白平衡設定的功能,適合陽光間接照射的區域 大約 750 萬
ANDROID_CONTROL_AWB_STATE 說明目前 AWB 演算法狀態的動態中繼資料,由以下來源回報: HAL 的相關資訊
AWB_STATE_INACTIVE 模式切換後的初始 AWB 狀態。開啟裝置時,必須 初始化
AdWords 帳戶狀態搜尋 AWB 無法轉換到划算的價值,因此正在變更顏色調整 參數。
AWB_STATE_CONVERGED AWB 已為目前場景找到適當的色彩調整值, 參數維持不變HAL 可能會自發狀態離開 以尋找更好的解決方案
AWB_STATE_LOCKED AWB 已由 AWB_LOCK 控制項鎖定。色彩調整 這些值維持不變
其他中繼資料項目
ANDROID_CONTROL_AWB_LOCK 將 AWB 色彩調整鎖定為目前值的控制項。
ANDROID_CONTROL_AWB_REGIONS 用於選取應用於 FOV 區域的控制項 以決定最佳的色彩平衡度僅適用於自動白平衡 模式。

一般狀態機器轉換注意事項

在 AF、AE 或 AWB 模式間切換時,演算法的狀態一律會重設為 已停用。同樣地,在 CONTROL_MODE 或 CONTROL_SCENE_MODE 間切換的情況下, CONTROL_MODE == USE_SCENE_MODE 會將所有演算法狀態重設為 INACTIVE。

下表列出了個別模式。

AF 狀態機器

mode = AF_MODE_OFF 或 AF_MODE_EDOF
狀態 轉換原因 新狀態 附註
已停用 AF 已停用
模式 = AF_MODE_AUTO 或 AF_MODE_MACRO
狀態 轉換原因 新狀態 附註
已停用 AF_TRIGGER 有效掃描

開始抽獎

智慧鏡頭正在移動

有效掃描 通過 AF 清除作業 未鎖定

如果 AF 驗證成功

智慧鏡頭現已鎖定

有效掃描 通過 AF 清除作業 未鎖定

如果 AF 驗證成功

智慧鏡頭現已鎖定

有效掃描 AF_CANCEL 已停用

取消/重設 AF

智慧鏡頭現已鎖定

未鎖定 AF_CANCEL 已停用 取消/重設 AF
未鎖定 AF_TRIGGER 有效掃描

開始新的清除

智慧鏡頭正在移動

未鎖定 AF_CANCEL 已停用 取消/重設 AF
未鎖定 AF_TRIGGER 有效掃描

開始新的清除

智慧鏡頭正在移動

所有州/省 模式變更 已停用
模式 = AF_MODE_CONTINUOUS_VIDEO
狀態 轉換原因 新狀態 附註
已停用 HAL 開始新的掃描作業 PASSIVE_SCAN

開始抽獎

智慧鏡頭正在移動

已停用 AF_TRIGGER 未鎖定

AF 狀態查詢

智慧鏡頭現已鎖定

PASSIVE_SCAN HAL 完成目前的掃描作業 PASSIVE_FOCUSED (PASSIVE_FOCUSED)

結束 AF 掃描

智慧鏡頭現已鎖定

PASSIVE_SCAN AF_TRIGGER 未鎖定

立即轉型 如果聚焦得好

智慧鏡頭現已鎖定

PASSIVE_SCAN AF_TRIGGER 未鎖定

立即轉型 如果焦點不佳

智慧鏡頭現已鎖定

PASSIVE_SCAN AF_CANCEL 已停用

重設鏡頭位置

智慧鏡頭現已鎖定

PASSIVE_FOCUSED (PASSIVE_FOCUSED) HAL 開始新的掃描作業 PASSIVE_SCAN

開始掃描 AF

智慧鏡頭正在移動

PASSIVE_FOCUSED (PASSIVE_FOCUSED) AF_TRIGGER 未鎖定

立即轉型 如果聚焦得好

智慧鏡頭現已鎖定

PASSIVE_FOCUSED (PASSIVE_FOCUSED) AF_TRIGGER 未鎖定 立即轉型 如果焦點不佳

智慧鏡頭現已鎖定

未鎖定 AF_TRIGGER 未鎖定 沒有效果
未鎖定 AF_CANCEL 已停用 重新開始 AF 掃描
未鎖定 AF_TRIGGER 未鎖定 沒有效果
未鎖定 AF_CANCEL 已停用 重新開始 AF 掃描
模式 = AF_MODE_CONTINUOUS_PICTURE
狀態 轉換原因 新狀態 附註
已停用 HAL 開始新的掃描作業 PASSIVE_SCAN

開始掃描 AF

智慧鏡頭正在移動

已停用 AF_TRIGGER 未鎖定

AF 狀態查詢

智慧鏡頭現已鎖定

PASSIVE_SCAN HAL 完成目前的掃描作業 PASSIVE_FOCUSED (PASSIVE_FOCUSED) 結束 AF 掃描

智慧鏡頭現已鎖定

PASSIVE_SCAN AF_TRIGGER 未鎖定

最終轉型,盡全力

智慧鏡頭現已鎖定

PASSIVE_SCAN AF_TRIGGER 未鎖定

無法聚焦時的最終轉換

智慧鏡頭現已鎖定

PASSIVE_SCAN AF_CANCEL 已停用

重設鏡頭位置

智慧鏡頭現已鎖定

PASSIVE_FOCUSED (PASSIVE_FOCUSED) HAL 開始新的掃描作業 PASSIVE_SCAN

開始掃描 AF

智慧鏡頭正在移動

PASSIVE_FOCUSED (PASSIVE_FOCUSED) AF_TRIGGER 未鎖定

如果焦點很好,即立即轉型

智慧鏡頭現已鎖定

PASSIVE_FOCUSED (PASSIVE_FOCUSED) AF_TRIGGER 未鎖定

如果焦點不佳,即進行立即轉換

智慧鏡頭現已鎖定

未鎖定 AF_TRIGGER 未鎖定 沒有效果
未鎖定 AF_CANCEL 已停用 重新開始 AF 掃描
未鎖定 AF_TRIGGER 未鎖定 沒有效果
未鎖定 AF_CANCEL 已停用 重新開始 AF 掃描

AE 與 AWB 狀態機器

AE 和 AWB 狀態機器大致相同。AE 還有其他 FLASH_REQUIRED 和 PRECAPTURE 狀態。所以下方的資料列中,要參照這兩個 AWB 狀態機器應忽略該狀態。

mode = AE_MODE_OFF / AWB 模式不是 AUTO
狀態 轉換原因 新狀態 附註
已停用 AE/AWB 已停用
模式 = AE_MODE_ON_* / AWB_MODE_AUTO
狀態 轉換原因 新狀態 附註
已停用 HAL 啟動 AE/AWB 掃描 搜尋中
已停用 AE/AWB_LOCK 已開啟 已鎖定 值已鎖定
搜尋中 HAL 完成 AE/AWB 掃描 已對話 價值良好,維持不變
搜尋中 HAL 完成 AE 掃描 必要快遞 難以捉摸,但光線太暗而不使用閃光燈
搜尋中 AE/AWB_LOCK 已開啟 已鎖定 值已鎖定
已對話 HAL 啟動 AE/AWB 掃描 搜尋中 值已鎖定
已對話 AE/AWB_LOCK 已開啟 已鎖定 值已鎖定
必要快遞 HAL 啟動 AE/AWB 掃描 搜尋中 值已鎖定
必要快遞 AE/AWB_LOCK 已開啟 已鎖定 值已鎖定
已鎖定 AE/AWB_LOCK 已關閉 搜尋中 解鎖後的價值不佳
已鎖定 AE/AWB_LOCK 已關閉 已對話 解鎖後的價值
已鎖定 AE_LOCK 已關閉 必要快遞 曝光良好,但太暗
所有 AE 狀態 準備 預先掌握 開始預先擷取序列
預先掌握 序列已完成,已關閉 AE_LOCK 已對話 可開始拍攝高畫質相片
預先掌握 序列已完成,AE_LOCK 已開啟 已鎖定 可開始拍攝高畫質相片

啟用手動控制

將裝置 3A 模塊設定成 讓使用者直接控制應用程式

HAL 模型的 3A 控制項是,HAL 會針對每個要求檢查 控制欄位的狀態如果啟用了 3A 日常安排 處理常式會覆寫該處理常式相關的控制變數,且 這些覆寫值之後就會出現在 擷取。舉例來說,如果要求啟用了自動曝光功能,HAL 就會 應該會覆寫曝光、增益和影格持續時間欄位 (且 可能是請求的 Flash 欄位)。 相關控制項的清單為:

控制項名稱 單位 附註
android.control.mode 列舉:OFF、AUTO、USE_SCENE_MODE 這是高階 3A 控制項。設為「關閉」時,HAL 的所有 3A 控制項都會設為 已停用。應用程式必須設定擷取參數的欄位 機器學習是向機器提供資料和答案 讓機器自行探索規則的科學設為 AUTO 時, 已執行 android.control.*,例如 android.control.afMode。 設為 USE_SCENE_MODE 時,android.control 中的個別控制項。* 幾乎都是停用狀態,而且 HAL 導入了其中一個場景模式 (例如 ACTION、SUNSET 或 PARTY)。
android.control.afMode 列舉 關閉表示手動控制鏡頭 聚焦於 android.lens.focusDistance
android.control.aeMode 列舉 「關閉」表示透過手動控制曝光/觀看/影格持續時間 android.sensor.exposureTime / .sensitivity / .FrameDuration
android.control.awbMode 列舉 「關閉」表示手動控制白平衡。