1. 程式人生 > >Android [Camera 原始碼] 3A 模式和狀態轉換(3A Modes and State) Google官方文件(五)

Android [Camera 原始碼] 3A 模式和狀態轉換(3A Modes and State) Google官方文件(五)

Google原始碼網地址連結:https://source.android.com/devices/camera

該Google Camera的文件為系列文章,文章列表:

overview

Camera3

HAL Subsystem

Metadata and Controls

3A Modes and State

Output and Cropping

Errors and Streams

Request Creation

External USB Cameras

Multi-Camera Support

Motion Tracking

Session Parameters

Single Producer,Multiple Consumer

Version Support

 

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 例程必須偏向測光,並對焦到場景中任何已檢測到的人臉上。

自動對焦設定與結果條目


 

自動曝光設定與結果條目


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


一般狀態機轉換說明


在 AF、AE 和 AWB 模式之間進行切換一律會將演算法狀態重置為 INACTIVE 狀態。同樣,如果 CONTROL_MODE == USE_SCENE_MODE,在 CONTROL_MODE 和 CONTROL_SCENE_MODE 之間進行切換也會將所有演算法狀態重置為 INACTIVE 狀態。

下表列出了各模式的情況。

AF 狀態機


AE 和 AWB 狀態機


AE 和 AWB 狀態機大致上相同,但 AE 具有額外的 FLASH_REQUIRED 和 PRECAPTURE 狀態。因此,對於 AWB 狀態機,應忽略下表中這兩個狀態對應的行。

 

啟用手動控制


配置裝置 3A 塊以實現直接應用控制的過程還涉及到多個控制元件。

用於 3A 控制的 HAL 模式的運作方式為:對於每個請求,HAL 都會檢查 3A 控制欄位的狀態。如果啟用了任何 3A 例程,則該例程會覆蓋與該例程相關的控制變數,然後這些覆蓋值會在該拍攝的結果元資料中提供。例如,如果在請求中啟用自動曝光,則 HAL 應覆蓋請求的曝光、增益和幀時長欄位(還可能包括閃光燈欄位,具體取決於 AE 模式)。相關控制元件如下: