Kompozycja z SDR i HDR

Na tej stronie opisujemy wymagania, konfigurację i weryfikację funkcji przyciemniania treści SDR w przypadku kompozycji mieszanych SDR i HDR.

Android 13 poprawia obsługę jednoczesnego wyświetlania kompozycji SDR i HDR na ekranie, wprowadzając te funkcje:

  • Mapowanie tonów jasności HDR na zakres zgodny z SDR.

    Za pomocą libtonemap można zapewnić spójność mapowania tonów między kompozycją sprzętową (HWC), SurfaceFlinger i aplikacjami. Producenci OEM mogą wdrażać własne krzywe mapowania tonów, które będą udostępniane między dostawcą a komponentami platformy.

  • przyciemnianie treści SDR wyświetlanych na ekranie, gdy są prezentowane jednocześnie z treściami HDR;

    Gdy na ekranie wyświetlane są treści HDR, jasność ekranu jest zwiększana, aby dostosować się do większego zakresu luminancji treści HDR. Wszelkie treści SDR wyświetlane na ekranie są płynnie przyciemniane wraz ze wzrostem jasności ekranu, dzięki czemu postrzegana jasność treści SDR nie ulega zmianie. Producenci OEM mogą skonfigurować wbudowane wyświetlacze tak, aby przyciemniały treści SDR wyświetlane na ekranie, gdy są one prezentowane obok treści HDR.

Wymagania dotyczące OEM

Aby korzystać z ulepszonej kompozycji treści HDR i SDR dzięki przyciemnianiu treści SDR, musisz spełnić te wymagania:

  • Wdrożenie wersji HWC w AIDL, która obejmuje obsługę przyciemniania z akceleracją sprzętową w potoku kolorów urządzenia. Informacje o wdrażaniu wymaganych funkcji znajdziesz w artykule AIDL dla HWC.

  • Precyzyjne przyciemnianie nakładek sprzętowych w HWC wymaga specjalnego sprzętu do skalowania liniowego światła nakładek. Implementacje bez wystarczającej ilości sprzętu muszą przekazywać kompozycję do procesora graficznego za pomocą usługi SurfaceFlinger, co powoduje rozładowanie baterii i możliwe przyciemnienie o niskiej jakości.

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

Konfiguracja

Funkcję kompozycji treści SDR i HDR można skonfigurować zgodnie z charakterystyką wbudowanego wyświetlacza, aby ustalić kompromis między żywotnością baterii, wypaleniem i wiernością treści.

Włączanie i dostrajanie ulepszonego komponowania odbywa się za pomocą konfiguracji wyświetlania, której schemat znajduje się w display-device-config.xsd. W konfiguracji wyświetlania ważne są te nowe kluczowe elementy:

  • Element sdrHdrRatioMap umożliwia przyciemnianie SDR i definiuje tabelę LUT do mapowania jasności ekranu dla HDR, która ma być wyświetlana w punkcie bieli SDR, gdy na ekranie są treści HDR.

    Jeśli zdefiniowano sdrHdrRatioMap, w ramach sterowania jasnością ekranu DisplayManagerService przekazuje do SurfaceFlingera żądany punkt bieli SDR, aby SurfaceFlinger mógł wysłać do HWC odpowiedni współczynnik przyciemniania dla każdej warstwy.

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

  • Element minimumHdrPercentOfScreen o wartości od 0 do 100 określa, kiedy można włączyć tryb wysokiej jasności panelu. W Androidzie 13 ten próg można dostosować, aby włączyć tryb wysokiej jasności w większej liczbie sytuacji, np. w przypadku obrazu w obrazie. W poprzednich wersjach AOSP ta wartość była stała i wynosiła 50%.

W bloku kodu poniżej znajdziesz 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>

Uwagi

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

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

  • Czas pracy na baterii może się skrócić w tych sytuacjach:

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

    • Konfiguracje wyświetlacza, które pozwalają na niższy próg włączania trybu wysokiej jasności, mogą zwiększać pobór mocy, ponieważ ekran działa przy wyższej jasności.

  • Stan ekranu może ulec pogorszeniu z powodu dłuższego czasu spędzanego w trybie wysokiej jasności, co może powodować długotrwałe problemy, takie jak wypalenie ekranu.

Weryfikacja

Producenci OEM mogą używać testów VTS, które są częścią pakietu testów HWC, aby sprawdzić prawidłowość przyciemnianiazweryfikować współczynnik przyciemniania wejściowego.

Weryfikacja tej funkcji zależy od urządzenia, więc nie ma testów CTS ani GTS, które by ją obsługiwały.

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

Problemy

Przyciemnianie obrazów SDR może powodować zacieranie czerni, czyli utratę informacji w ciemniejszych obszarach oryginalnego obrazu. Wynika to z tego, że ciemniejsze wartości kolorów są łączone w mniejszy zestaw ciemnych kodów.

Implementacja przyciemniania, która powoduje niedopuszczalne rozmycie czerni, musi implementować algorytmy ditheringu, które wprowadzają szum do obrazu końcowego, aby zmniejszyć efekt pasmowania.

Implementacje HWC, które nie mogą roztrząsać obrazu w odpowiednim miejscu w potoku kolorów, muszą zażądać, aby SurfaceFlinger zastosował przyciemnianie i roztrząsanie na GPU.

Implementacje mogą też dostosowywać wartość sdrHdrRatioMap, aby ograniczyć przyciemnianie 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.