雖然實際 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 | 列舉 | 「關閉」表示手動控制白平衡。 |