在搭載 Android 13 以上版本的裝置上,Android 支援 10 位元相機輸出,方法是透過動態範圍設定檔,相機用戶端可將這些設定檔設為串流設定的一部分。裝置製造商可以新增對 10 位元動態範圍設定檔的支援,例如 HLG10、HDR 10、HDR 10+ 和 Dolby Vision。
相機用戶端可呼叫 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 緩衝區的靜態或動態中繼資料緩衝區,再通知攝影機服務。
如要進一步瞭解 Camera HAL 中的 10 位元相機輸出,請參閱 metadata_definitions.xml 中的下列內容:
DYNAMIC_RANGE_TEN_BITavailableDynamicRangeProfilesMap的 HAL 詳細資料recommendedTenBitDynamicRangeProfile10BIT_OUTPUT
如需支援 10 位元相機輸出的參考 Camera 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 nit) 呈現蠟燭或小燈的明亮高光,SDR 短片則會以 SDR 最高亮度 (約 100 nit) 呈現。在 HDR 短片中,明亮的高光部分應從螢幕中發出光芒,捕捉使用者對場景真實動態範圍的感知。與 HDR 短片相比,SDR 短片應會顯得較為平淡且不夠明亮。
- 在明亮輸出場景中,視裝置的調整方式而定,HDR 短片與 SDR 短片相比,螢幕亮度會出現明顯差異。如果是 HDR 短片,整體場景的螢幕亮度 (視預留空間而定) 應更高,例如最高可達 800 nit,而亮部 (例如鍍鉻保險桿) 應更亮,接近最高亮度。
- 在中範圍的低動態範圍室內拍攝中,HDR 和 SDR 短片在色彩和色調方面相似,但 HDR 拍攝的亮度可能高於 SDR。HDR 影像不應比 SDR 影像暗。如果調整選項會導致無法達成上述目標,請確保第三方應用程式的行為與原生相機應用程式的行為一致。