對於運行 Android 13 及更高版本的設備,Android 通過動態範圍配置文件支持 10 位攝像頭輸出,攝像頭客戶端可以將其配置為流配置的一部分。設備製造商可以添加對 10 位動態範圍配置文件的支持,例如 HLG10、HDR 10、HDR 10+ 和杜比視界。
10 位相機輸出支持讓相機客戶端通過調用getSupportedProfiles
發現設備支持的 10 位動態範圍配置文件。然後,框架返回DynamicRangeProfiles
的一個實例,其中包括有關支持的動態範圍配置文件的信息,如果可用,還包括捕獲請求約束。必須支持HLG10
配置文件。推薦的動態範圍配置文件列在REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE
字段中。
相機客戶端可以通過調用setDynamicRangeProfile
來配置流組合。有關強制輸出流組合的更多信息,請參閱常規捕獲中的10 位輸出附加保證配置表。
要求
要支持 10 位相機輸出,設備必須具有 10 位或更高功能的相機傳感器,並支持相應的 ISP。 10位支持的相關兼容性要求詳見7.5節。 CDD 中的相機。
執行
要提供對 10 位相機輸出的支持,設備製造商必須執行以下相機 AIDL HAL 集成:
- 在相機功能中包括
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT
。 - 使用所有支持的動態範圍配置文件及其約束位圖填充
ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP
。必須支持HLG10
配置文件。您還必須包含推薦的動態範圍配置文件,以告知相機客戶端最佳支持格式。 - 確保在流配置期間支持使用P010格式的流的動態範圍配置文件值或支持實現定義的格式 (
ImageFormat.PRIVATE
)。 - 根據動態範圍配置文件,在通知相機服務之前設置已處理的 Gralloc 4 緩衝區的靜態或動態元數據緩衝區。
有關 Camera HAL 中 10 位相機輸出的更多詳細信息,請參閱metadata_definitions.xml
中的以下內容:
-
DYNAMIC_RANGE_TEN_BIT
- availableDynamicRangeProfilesMap 的 HAL 詳細
availableDynamicRangeProfilesMap
-
recommendedTenBitDynamicRangeProfile
-
10BIT_OUTPUT
有關支持 10 位相機輸出的參考相機 HAL 實現,請參閱/hardware/google/camera/devices/EmulatedCamera/hwl
。
驗證
為了驗證您的 10 位相機輸出實現並確保第三方應用可以啟用該功能,我們建議執行以下三個驗證階段。
對於 10 位相機輸出的視覺驗證,假設設備支持顯示 HDR(1000+ 尼特顯示),並且視頻查看應用程序(例如,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 的顯示面板的亮度級別(以尼特或流明為單位)有所不同,因此以下給出的數字僅作為示例:
- 在中光到低光場景中,燭光或小光的高光在 HDR 剪輯中以顯示器的最大亮度(可能高達 1000 尼特)渲染,而在SDR 中以最大亮度(約 100尼特)在 SDR 剪輯中。在 HDR 剪輯中,明亮的高光應該從顯示屏中閃耀出來,捕捉用戶對場景真實動態範圍的感知。與 HDR 剪輯相比,SDR 剪輯應顯得更平坦且不那麼明亮。
- 在明亮的輸出場景中,根據設備的調整,HDR 剪輯與 SDR 剪輯相比顯示出明顯的屏幕亮度差異。對於 HDR 剪輯,整個場景的屏幕亮度(取決於動態餘量)應該更高,例如高達 800 尼特,對於鍍鉻保險槓等明亮高光,在最大亮度附近更是如此。
- 在中檔、低動態範圍的室內捕捉中,HDR 和 SDR 剪輯的顏色和色調相似,HDR 捕捉可能比 SDR 更亮。 HDR 不應該比 SDR 更暗。如果調整選項無法做到這一點,請確保第三方應用程序行為與本機相機應用程序行為匹配。