在搭載 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_BIT
availableDynamicRangeProfilesMap
的 HAL 詳細資料recommendedTenBitDynamicRangeProfile
10BIT_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 的螢幕面板亮度等級各不相同 (以 nit 或流明為單位),因此下列數字僅供參考:
- 在光線中等至昏暗的場景中,HDR 短片會以螢幕最高亮度 (可能高達 1000 nit) 呈現蠟燭或小燈的明亮高光,SDR 短片則會以 SDR 最高亮度 (約 100 nit) 呈現。在 HDR 短片中,明亮的高光部分應從螢幕中發出光芒,捕捉使用者對場景真實動態範圍的感知。與 HDR 短片相比,SDR 短片應會顯得較為平淡,亮度也較低。
- 在明亮的輸出場景中,視裝置的調整方式而定,HDR 短片與 SDR 短片相比,螢幕亮度會明顯不同。如果是 HDR 短片,整體場景的螢幕亮度 (視預留空間而定) 應更高,例如最高可達 800 nit,如果是亮部 (例如鍍鉻保險桿),亮度甚至應接近最高亮度。
- 在中階低動態範圍室內拍攝時,HDR 和 SDR 短片在色彩和色調方面相似,但 HDR 拍攝的影片可能比 SDR 更明亮。HDR 影像不應比 SDR 影像暗。如果調整選項會導致無法達成這個目標,請確保第三方應用程式的行為與原生相機應用程式的行為一致。