本頁面說明混合 SDR 和 HDR 組合的 SDR 內容調暗功能有何要求、設定和驗證。
Android 13 導入了下列功能,改善了在螢幕上同時呈現 SDR 和 HDR 組合的支援功能:
將 HDR 亮度與 SDR 相容範圍的色調映射。
使用
libtonemap
即可在 Hardware Composer (HWC)、SurfaceFlinger 和應用程式之間採用一致的色調對應。原始設備製造商 (OEM) 可導入自己的色調對應曲線,以便在供應商和架構元件之間共用。在與 HDR 內容同時顯示時,將螢幕上的 SDR 內容調暗。
當 HDR 內容顯示在螢幕上時,螢幕亮度會調高,以配合 HDR 內容的亮度範圍。同時在螢幕亮度提高的情況下,任何 SDR 內容都會順暢調暗,以保留 SDR 內容的感知亮度。原始設備製造商 (OEM) 可以設定內建螢幕,在播放 HDR 內容時將畫面上的 SDR 內容調暗。
原始設備製造商 (OEM) 規定
如要透過 SDR 內容動畫使用經過改善的 HDR 和 SDR 內容,請遵守下列需求條件:
實作 HWC 的 AIDL 版本,其中包括支援裝置色彩管線中的硬體加速調光功能。請參閱 HWC 適用的 AIDL 一文,瞭解如何實作所需功能。
如要精確調暗 HWC 中的硬體重疊,必須使用特定硬體調整疊加層的線性光源。在沒有足夠硬體的情況下,實作項目必須由 SurfaceFlinger 將合成作業延後至 GPU,這可能會導致電池耗盡,並可能造成亮度降低。
裝置必須支援至少一種由
Display.getHdrCapabilities
回報的 HDR 技術。
設定
混合 SDR 和 HDR 內容合成的功能可根據內建顯示裝置特性進行設定,以便在電池續航力、燒屏和內容真實度之間取得平衡。
您可以透過顯示設定啟用及調整改善後的組合,其結構定義位於 display-device-config.xsd
中。以下是設定顯示設定時的重要新元素:
sdrHdrRatioMap
元素可啟用 SDR 調光功能,並定義查詢表 (LUT),以便在畫面上顯示 HDR 內容時,將 HDR 的畫面亮度對應至 SDR 白點。如果已定義
sdrHdrRatioMap
,則在控制螢幕亮度的過程中,DisplayManagerService
會將所需的 SDR 白點傳達給 SurfaceFlinger,讓 SurfaceFlinger 能夠將每個圖層的適當亮度比率傳送給 HWC。如未定義
sdrHdrRatioMap
,即使 HWC 實作支援 SDR 調暗功能,SDR 亮度也不會啟用。minimumHdrPercentOfScreen
元素的值介於 0 到 100 之間,可控制是否允許開啟面板的高亮度模式。在 Android 13 中,這個門檻無法調整,以便在更多情況下 (例如子母畫面情境) 啟用高亮度模式。先前版本的 Android 開放原始碼計畫已將這個值修正為 50%。
如要瞭解顯示設定的主要元素,請參閱以下程式碼區塊:
<displayConfiguration>
...
<highBrightnessMode>
...
<!--Percentage of the screen that must be covered by HDR layers until high brightness mode is enabled.
<minimumHdrPercentOfScreen>...</minimumHdrPercentOfScreen>
<!--sdrHdrRatioMap, backed by spline, must have at least two entries -->
<sdrHdrRatioMap>
<point>
<sdrNits>...</sdrNits>
<hdrRatio>...</hdrRatio>
</point>
<point>
<sdrNits>...</sdrNits>
<hdrRatio>...</hdrRatio>
</point>
<!--More interpolation points may be added –->
...
</sdrHdrRatioMap>
...
</highBrightnessMode>
...
</displayConfiguration>
注意事項
啟用色調對應和 SDR 內容調暗功能可能會導致以下情況:
由於 SDR 內容元素會調暗,因此裝置播放 HDR 內容的忠實度可能會提高。
在下列情況下,電池續航力可能會降低:
將調光作業推遲至 GPU 的 HWC 實作可能會導致 GPU 使用量增加。
如果顯示設定允許在啟用高亮度模式的情況下設定較低的門檻,可以提高繪圖的功率繪圖,以更高的亮度執行螢幕。
在高亮度模式下花費的時間增加,可能導致螢幕健康度受到影響,而這可能會造成長期問題,例如顯示螢幕健康情形。
驗證
原始設備製造商 (OEM) 可以使用 VTS 測試 (已納入 HWC 的測試套件),檢查調光正確性,並驗證輸入調光比率。
這項功能的驗證作業取決於裝置,因此沒有支援 CTS 或 GTS 的測試。
OEM 必須執行手動測試,驗證調暗的 SDR 元素是否有可接受的圖像品質。原始設備製造商 (OEM) 可以播放裝置支援超過 SurfaceView
的 HDR 標準內容,藉此驗證在 HDR 內容一起播放的任何 SDR 元素不會過亮。
問題
調低 SDR 圖片的亮度可能會導致黑色壓縮,也就是原始圖片較暗區域的資訊流失。這是因為顏色較深的顏色值會收合到一組較小的深色代碼。
如果需要進行暗色操作的變色,會導致系統無法辨識的黑破壞,必須實作遞迴演算法,在最終圖像中插入雜訊,減少頻帶效果。
如果 HWC 實作無法在色彩管線的適當位置對圖片進行半色處理,就必須要求 SurfaceFlinger 在 GPU 上套用調光和半色處理。
實作方式也可以調整 sdrHdrRatioMap
的值,以限制 SDR 元素的調光量。將亮度調低至極低等級時,必須使用 GPU,雖然可改善影像品質,但可能會縮短電池續航力。