對於運行 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 緩衝區的靜態或動態元資料緩衝區。
有關相機 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+ 尼特顯示),並且影片檢視應用程式(例如 Google Photos)支援 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 暗。如果調整選擇導致無法實現此目的,請確保第三方應用程式行為與本機相機應用程式行為相符。