對於搭載 Android 13 以上版本的裝置,Android 會透過動態範圍設定檔支援 10 位元相機輸出,相機用戶端可在串流設定中設定這些設定檔。裝置製造商可以新增支援 10 位元動態範圍設定檔,例如 HLG10、HDR 10、HDR 10+ 和 Dolby Vision。
10 位元相機輸出支援功能可讓相機用戶端透過呼叫 getSupportedProfiles
,找出裝置支援的 10 位元動態範圍設定檔。接著,架構會傳回 DynamicRangeProfiles
執行個體,其中包含支援的動態範圍設定檔相關資訊,以及擷取要求限制 (如適用)。必須支援 HLG10
設定檔。建議的動態範圍設定檔會列於 REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE
欄位中。
攝影機用戶端可以呼叫 setDynamicRangeProfile
來設定串流組合。如要進一步瞭解強制輸出串流組合,請參閱「一般擷取」中的「10 位元輸出額外保證設定」表格。
需求條件
如要支援 10 位元相機輸出,裝置必須具備支援 10 位元以上鏡頭的相機感應器,並分別支援個別網際網路服務供應商 (ISP)。如要進一步瞭解 10 位元支援的相關相容性要求,請參閱 7.5. CDD 中的攝影機。
實作
如要支援 10 位元相機輸出內容,裝置製造商必須進行下列 Camera AIDL HAL 整合:
- 在相機功能中加入
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT
。 - 將
ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP
填入所有支援的動態範圍設定檔及其限制的點陣圖。必須支援HLG10
設定檔。您還必須加入建議的動態範圍設定檔,告知相機用戶端採用最佳支援格式。 - 確保在使用 P010 格式串流的串流設定期間,支援動態範圍設定檔值,或支援實作定義的格式 (
ImageFormat.PRIVATE
)。 - 視動態範圍設定檔而定,請先設定已處理 Gralloc 4 緩衝區的靜態或動態中繼資料緩衝區,再通知攝影機服務。
如要進一步瞭解相機 HAL 中的 10 位元相機輸出內容,請參閱 metadata_definitions.xml
中的以下內容:
DYNAMIC_RANGE_TEN_BIT
availableDynamicRangeProfilesMap
的 HAL 詳細資料recommendedTenBitDynamicRangeProfile
10BIT_OUTPUT
如需支援 10 位元相機輸出的參考相機 HAL 實作方式,請參閱 /hardware/google/camera/devices/EmulatedCamera/hwl
。
驗證
如要驗證 10 位元相機輸出內容的實作結果,並確保第三方應用程式可以啟用這項功能,建議您執行下列三個階段驗證程序。
如要視覺驗證 10 位元相機輸出內容,我們假設裝置支援 HDR 顯示 (1000 nits 以上的顯示器),且影片觀看應用程式 (例如 Google 相簿) 支援 HDR 影片播放功能。
測試 API 功能正確性
如要測試 10 位元相機輸出內容的 API 功能正確性,請執行下列 CTS、相機 ITS 和 VTS 測試:
hardware/interfaces/camera/provider/aidl/vts/
:測試基本探索、設定和串流功能,並檢查 HDR 中繼資料是否符合需求。tests/camera/src/android/hardware/camera2/cts/
:確保相機的運作方式符合 AOSP API 規格。cts/apps/CameraITS
:確認使用 HDR 設定檔時,一般影片行為是否一致。具體測試為tests/scene4/test_video_aspect_ratio_and_crop.py
。
比較原生相機和第三方應用程式
強烈建議您確保使用第三方應用程式拍攝 10 位元影片的結果與原生相機應用程式相似 (如果不是完全相同)。也就是說,曝光、動態範圍和色彩等調整選項應從原生應用程式沿用至第三方應用程式。如要驗證第三方應用程式中支援 10 位元相機輸出內容的錄影行為,請使用 GitHub 上的 Camera2Video 範例應用程式。以下指南說明由於感應器、面板、視觀條件及供應商偏好各有不同,因此 HDR 在沒有客觀編號的情況下,不會有客觀數據的原因。
建議的比較場景
如要比較原生相機應用程式和第三方應用程式,請使用原生相機應用程式和 Camera2Video 範例應用程式,拍攝多個不同場景的影片。以下是建議用於比較的場景:
- 中度至低光的場景,其中有明亮的物體,例如蠟燭或小型亮光燈,可產生較大的亮度範圍。這麼做可確認自動曝光行為和動態範圍。
- 明亮的戶外場景,含有鮮豔色彩和反光物體,例如車上的鍍鉻保險桿,可產生明亮的亮點。這可確認明亮場景的算繪效果,並顯示更亮的亮部。
- 中階的低動態範圍場景,例如住家或辦公室的室內自然場景。這可證實在光線較不極端的情況下,系統的運作方式是否如預期。
對於所有場景,我們建議您使用人物和臉孔來驗證曝光、色彩和膚色處理方式。減少鏡頭對焦變化,可更輕鬆地進行對照比較。
比較標準動態範圍和高動態範圍
為確保使用 10 位元動態範圍設定檔比使用標準動態範圍設定檔更有益,請比較使用 SDR (沒有 HDR 設定檔) 和 HDR 的影片擷取畫面,確認 HDR 的關鍵元素是否出現在擷取畫面中。如要比較 SDR 和 HDR,請使用 Camera2Video 範例應用程式和建議的場景,比較原生相機應用程式和第三方應用程式。
以下是建議場景中需要驗證的重要事項。支援 HDR 的螢幕面板亮度等級會有所不同 (以 nit 或流明度為單位),因此以下數字僅供參考:
- 在中度光源到低光源場景中,蠟燭或小燈的亮部高光會以 HDR 剪輯片段中的螢幕最高亮度 (可能高達 1000 nit) 算繪,並以 SDR 剪輯片段中的SDR 最高亮度 (約 100 nit) 算繪。在 HDR 短片中,明亮的亮部應會從螢幕上閃爍,捕捉使用者對場景真實動態範圍的感知。相較於 HDR 短片,SDR 短片的色調應較平淡,亮度也較低。
- 在明亮的輸出場景中,HDR 剪輯會根據裝置的調整,顯示與 SDR 短片相比的螢幕亮度明顯差異。如果是 HDR 短片,整體場景 (視進步空間而定) 的螢幕亮度應較高,例如高達 800 nit,以及提昇亮度等高亮度部分 (例如 Chrome 串場廣告),但亮度接近最大亮度。
- 在室內拍攝的 HDR 和 SDR 短片,色彩和色調相似,HDR 短片可能會比 SDR 短片更亮。HDR 不應比 SDR 更暗。如果調整選項無法達到此效果,請確認第三方應用程式的行為符合原生相機應用程式的行為。