本頁介紹混合 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 版本,其中包括對設備顏色管道中硬體加速調光的支援。請參閱AIDL for HWC以實現所需的功能。
在 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
,則不會啟用 SDR 調光,即使 HWC 實作支援 SDR 調光也是如此。minimumHdrPercentOfScreen
元素的值範圍為 0 到 100,控制何時允許開啟面板的高亮度模式。在 Android 13 中,此閾值是可調的,以便在更多情況下啟用高亮度模式,例如畫中畫場景。先前版本的 AOSP 已將此值固定為 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,這可以提高影像質量,但會縮短電池壽命。