元數據和控件

元數據支持

為了支持 Android 框架保存原始圖像文件,需要有關傳感器特性的大量元數據。這包括色彩空間和鏡頭陰影功能等信息。

大多數信息是相機子系統的靜態屬性,因此可以在配置任何輸出管道或提交任何請求之前進行查詢。新的相機 API 極大地擴展了getCameraInfo()方法提供的信息,以便將這些信息提供給應用程序。

此外,相機子系統的手動控制需要來自各種設備的關於其當前狀態的反饋,以及用於捕獲給定幀的實際參數。硬件實際使用的控件的實際值(曝光時間、幀持續時間和靈敏度)必須包含在輸出元數據中。這是必不可少的,以便應用程序知道何時發生箝位或舍入,以便應用程序可以補償用於圖像捕獲的實際設置。

例如,如果應用程序在請求中將幀持續時間設置為 0,則 HAL 必須將幀持續時間限制為該請求的實際最小幀持續時間,並在輸出結果元數據中報告該限制的最小持續時間。

因此,如果應用程序需要實現自定義 3A 例程(例如,正確測量 HDR 突發),它需要知道用於捕獲其收到的最新結果集的設置,以便為下一個請求更新設置。因此,新的相機 API 為每個捕獲的幀添加了大量的動態元數據。這包括用於捕獲的請求參數和實際參數,以及額外的每幀元數據,例如時間戳和統計生成器輸出。

按設定控制

對於大多數設置,期望它們可以在每一幀中更改,而不會給輸出幀流引入明顯的卡頓或延遲。理想情況下,輸出幀速率應僅由捕獲請求的幀持續時間字段控制,並且與處理塊配置的任何更改無關。實際上,眾所周知,某些特定的控件更改緩慢;其中包括相機管道的輸出分辨率和輸出格式,以及影響物理設備的控件,例如鏡頭焦距。每個控制集的確切要求將在後面詳述。

原始傳感器數據支持

除了舊 API 支持的像素格式外,新 API 還增加了對原始傳感器數據 (Bayer RAW) 支持的要求,既適用於高級相機應用程序,也適用於支持原始圖像文件。