混合 SDR 和 HDR 成分

本頁面說明混合 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,雖然可改善影像品質,但可能會縮短電池續航力。