Mieszana kompozycja SDR i HDR

Na tej stronie opisano wymagania, konfigurację i weryfikację funkcji przyciemniania treści SDR dla mieszanej kompozycji SDR i HDR.

Android 13 poprawia obsługę jednoczesnego prezentowania kompozycji SDR i HDR na ekranie, wprowadzając następujące funkcje:

  • Tonalne mapowanie luminancji HDR do zakresu zgodnego z SDR.

    Korzystając libtonemap , mapowanie tonów może być spójne między Hardware Composer (HWC), SurfaceFlinger i aplikacjami. Producenci OEM mogą wdrażać własne krzywe mapowania tonów, które będą współdzielone między dostawcami i składnikami struktury.

  • Przyciemnianie zawartości SDR na ekranie, gdy jest ona prezentowana jednocześnie z zawartością HDR.

    Gdy zawartość HDR jest wyświetlana na ekranie, jasność ekranu jest zwiększana, aby dostosować się do zwiększonego zakresu luminancji zawartości HDR. Każda zawartość SDR, która jest również na ekranie, jest płynnie przyciemniana wraz ze wzrostem jasności ekranu, dzięki czemu percepcyjna jasność zawartości SDR nie ulega zmianie. Producenci OEM mogą skonfigurować swoje wbudowane wyświetlacze tak, aby przyciemniać ekranowe treści SDR, gdy są prezentowane obok treści HDR.

Wymagania OEM

Aby użyć ulepszonej kompozycji dla treści HDR i SDR poprzez przyciemnianie treści SDR, postępuj zgodnie z następującymi wymaganiami:

  • Zaimplementuj wersję AIDL HWC, która obejmuje obsługę przyciemniania przyspieszanego sprzętowo w potoku kolorów urządzenia. Zapoznaj się z AIDL for HWC , aby zaimplementować wymaganą funkcjonalność.

  • Dokładne ściemnianie nakładek sprzętowych w HWC wymaga specjalnego sprzętu do skalowania liniowego światła nakładek. Implementacje bez odpowiedniego sprzętu są wymagane, aby odłożyć kompozycję na GPU przez SurfaceFlinger, powodując rozładowanie baterii i możliwe przyciemnienie niskiej jakości.

  • Urządzenie musi obsługiwać co najmniej jedną technologię HDR zgłoszoną przez Display.getHdrCapabilities .

Konfiguracja

Mieszaną funkcję kompozycji treści SDR i HDR można skonfigurować zgodnie z wbudowanymi cechami urządzenia wyświetlającego, dzięki czemu można ustalić kompromis między żywotnością baterii, wypaleniem i wiernością treści.

Włączanie i dostrajanie ulepszonej kompozycji odbywa się za pomocą konfiguracji wyświetlania, której schemat znajduje się w display-device-config.xsd . Następujące nowe kluczowe elementy są ważne przy ustawianiu konfiguracji wyświetlacza:

  • Element sdrHdrRatioMap włącza przyciemnianie SDR i definiuje tabelę przeglądową (LUT) do mapowania jasności ekranu dla HDR, który ma być wyświetlany do punktu bieli SDR, gdy na ekranie znajduje się zawartość HDR.

    Jeśli zdefiniowano sdrHdrRatioMap , to w ramach kontrolowania jasności ekranu, DisplayManagerService przekazuje żądany punkt bieli SDR do SurfaceFlinger, aby SurfaceFlinger mógł wysłać odpowiedni współczynnik ściemnienia na warstwę do HWC.

    Jeśli sdrHdrRatioMap nie jest zdefiniowany, ściemnianie SDR nie jest włączone, nawet jeśli implementacja HWC obsługuje ściemnianie SDR.

  • Element minimumHdrPercentOfScreen o wartości z zakresu od 0 do 100 określa, kiedy można włączyć tryb wysokiej jasności panelu. W systemie Android 13 ten próg można dostosować, aby włączyć tryb wysokiej jasności w większej liczbie sytuacji, takich jak scenariusze obrazu w obrazie. Poprzednie wersje AOSP ustaliły tę wartość na 50%.

Zapoznaj się z następującym blokiem kodu, aby poznać kluczowe elementy konfiguracji wyświetlania:

<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>

Zastrzeżenia

Włączenie funkcji mapowania tonów i przyciemniania treści SDR może prowadzić do następujących sytuacji:

  • Wierność treści HDR odtwarzanych na urządzeniu może wzrosnąć, ponieważ elementy treści SDR są przyciemnione.

  • Żywotność baterii może ulec skróceniu w następujących sytuacjach:

    • Implementacje HWC, które odkładają operacje przyciemniania na GPU, mogą powodować zwiększone użycie GPU.

    • Konfiguracje wyświetlania, które pozwalają na niższy próg włączenia trybu wysokiej jasności, mogą zwiększyć pobór mocy podczas wyświetlania ekranu z wyższą jasnością.

  • Kondycja ekranu może być pogorszona z powodu dłuższego czasu spędzanego w trybie wysokiej jasności, co może powodować długotrwałe problemy, takie jak wypalanie się ze stanem wyświetlacza.

Walidacja

Producenci OEM mogą używać testów VTS, które są częścią zestawu testów HWC, w celu sprawdzenia poprawności ściemniania i walidacji współczynnika ściemniania wejściowego .

Walidacja tej funkcji zależy od urządzenia, więc nie ma testów CTS ani GTS, które by to wspierały.

Producenci OEM muszą przeprowadzić ręczne testy, aby sprawdzić, czy jakość obrazu przyciemnionych elementów SDR jest akceptowalna. Producenci OEM mogą odtwarzać zawartość w standardach HDR obsługiwanych przez urządzenie za pośrednictwem SurfaceView , aby sprawdzić, czy elementy SDR odtwarzane wraz z zawartością HDR nie stają się zbyt jasne.

Zagadnienia

Przyciemnianie obrazów SDR może spowodować zgniecenie czerni lub utratę informacji w ciemniejszych obszarach oryginalnego obrazu. Wynika to z tego, że ciemniejsze wartości kolorów zapadają się na mniejszy zestaw ciemnych kodów.

Implementacja ściemniania, która powoduje niedopuszczalne czarne zmiażdżenie, musi implementować algorytmy ditheringu, które wprowadzają szum do końcowego obrazu, aby zredukować efekty prążkowania.

Implementacje HWC, które nie mogą ditheringować obrazu w odpowiedniej lokalizacji w potoku kolorów, muszą zażądać, aby SurfaceFlinger zastosował dithering i dithering na GPU.

Implementacje mogą również dostosować wartość sdrHdrRatioMap , aby ograniczyć ilość przyciemniania elementów SDR. Przyciemnianie do bardzo niskich poziomów jasności wymaga użycia procesora graficznego, co poprawia jakość obrazu, ale może skrócić żywotność baterii.