1. 程式人生 > >Android [Camera 原始碼] 元資料和控制元件(Metadata and Controls) Google官方文件(四)

Android [Camera 原始碼] 元資料和控制元件(Metadata and Controls) 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

元資料和控制元件

 

元資料支援


要支援通過 Android 框架儲存原始圖片檔案,需要具有大量有關感測器特性的元資料,包括色彩空間和鏡頭遮蔽功能等資訊。

其中大多數資訊是相機子系統的靜態屬性,因此可以在配置任何輸出管道或提交任何請求之前進行查詢。新的相機 API 極大地擴充套件了 getCameraInfo() 方法提供的資訊,以便將此類資訊提供給應用。

此外,手動控制相機子系統需要各種裝置提供的有關其當前狀態的反饋,以及在捕獲指定幀時使用的實際引數。必須在輸出元資料中包含硬體實際使用的控制元件(曝光時間、幀時長和感光度)的實際值。這一點至關重要,這樣應用就知道限制或舍入何時發生,並且可以補償用於圖片捕獲的實際設定。

例如,如果應用在請求中將幀時長設定為 0,則 HAL 必須將幀時長限制到該請求的實際最小幀時長,並在輸出結果元資料中報告這一鉗位最小持續時間。

因此,如果應用需要實現一個自定義 3A 例程(例如,為了適當地測量 HDR 連拍),則需要知道用於捕獲其收到的最新一組結果的設定,以便更新下一個請求的設定。因此,新的相機 API 會向每個捕獲的幀新增大量動態元資料。這包括用於捕獲的已請求引數和實際引數,以及時間戳和統計資訊生成器輸出等其他每幀元資料。

 

每個設定的控制元件


對於大多數設定而言,它們應該能夠隨著每一幀發生變化,而不會給輸出幀流帶來明顯的卡頓或延遲。理想情況下,輸出幀速率應該僅由捕獲請求的幀時長欄位控制,且不受處理塊配置發生的任何變化影響。實際上,我們已經知道一些特定控制元件發生變化的速度非常緩慢;這些控制元件包括相機管道的輸出解析度和輸出格式,以及鏡頭焦距等影響物理裝置的控制元件。稍後會詳細說明每個控制元件集的確切要求。

 

原始感測器資料支援


除了舊 API 支援的畫素格式之外,新 API 還添加了對原始感測器資料 (Bayer RAW) 的支援要求,這既適合高階相機應用,又是為了支援原始圖片檔案。