Composição com SDR e HDR

Nesta página, descrevemos os requisitos, a configuração e a validação do recurso de atenuação de conteúdo SDR para composição mista de SDR e HDR.

O Android 13 melhora o suporte à apresentação simultânea da composição SDR e HDR na tela com os seguintes recursos:

  • Mapeamento de tons da luminância HDR em um intervalo compatível com SDR.

    Usando libtonemap, o mapeamento de tons pode ser feito de forma consistente entre o Hardware Composer (HWC), o SurfaceFlinger e os apps. Os OEMs podem implementar as próprias curvas de mapeamento de tons para serem compartilhadas entre os componentes do fornecedor e do framework.

  • Diminuir o conteúdo SDR na tela quando apresentado simultaneamente com conteúdo HDR.

    Quando o conteúdo HDR está na tela, o brilho dela aumenta para acomodar o intervalo de luminância maior do conteúdo HDR. Qualquer conteúdo SDR que também esteja na tela é diminuído gradualmente à medida que o brilho da tela aumenta para que o brilho perceptual do conteúdo SDR não mude. Os OEMs podem configurar as telas integradas para diminuir o conteúdo SDR na tela quando apresentado junto com conteúdo HDR.

Requisitos de OEM

Para usar a composição aprimorada de conteúdo HDR e SDR com redução de brilho do conteúdo SDR, siga estes requisitos:

  • Implemente a versão AIDL do HWC, que inclui suporte para escurecimento acelerado por hardware no pipeline de cores do dispositivo. Consulte AIDL para HWC (link em inglês) para implementar os recursos necessários.

  • Para reduzir corretamente as sobreposições de hardware no HWC, é necessário um hardware específico para dimensionar a luz linear das sobreposições. Implementações sem hardware suficiente precisam adiar a composição para a GPU pelo SurfaceFlinger, causando consumo de bateria e possível redução de qualidade.

  • O dispositivo precisa ser compatível com pelo menos uma tecnologia HDR informada por Display.getHdrCapabilities.

Configuração

O recurso de composição de conteúdo SDR e HDR misto pode ser configurado de acordo com as características do dispositivo de exibição integrado para estabelecer o equilíbrio entre duração da bateria, burn-in e fidelidade do conteúdo.

Para ativar e ajustar a composição aprimorada, use uma configuração de exibição cujo esquema está localizado em display-device-config.xsd. Os novos elementos principais a seguir são importantes para definir a configuração de exibição:

  • O elemento sdrHdrRatioMap permite o escurecimento SDR e define uma tabela de pesquisa (LUT) para mapear o brilho da tela para HDR a ser exibido no ponto branco SDR quando houver conteúdo HDR na tela.

    Se sdrHdrRatioMap estiver definido, como parte do controle do brilho da tela, DisplayManagerService vai comunicar o ponto branco SDR desejado ao SurfaceFlinger para que ele possa enviar a taxa de escurecimento adequada por camada ao HWC.

    Se sdrHdrRatioMap não estiver definido, o escurecimento SDR não será ativado, mesmo que a implementação do HWC seja compatível com ele.

  • O elemento minimumHdrPercentOfScreen com um valor que varia de 0 a 100 controla quando o modo de alto brilho de um painel pode ser ativado. No Android 13, esse limite pode ser ajustado para ativar o modo de alto brilho em mais situações, como cenários de picture-in-picture. As versões anteriores do AOSP fixaram esse valor em 50%.

Confira o bloco de código a seguir para ver os principais elementos da configuração de exibição:

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

Avisos

Ativar os recursos de mapeamento de tons e redução de brilho do conteúdo SDR pode levar às seguintes situações:

  • A fidelidade do conteúdo HDR reproduzido no dispositivo pode aumentar, já que os elementos de conteúdo SDR são atenuados.

  • A duração da bateria pode diminuir nos seguintes cenários:

    • As implementações do HWC que adiam as operações de escurecimento para a GPU podem causar um aumento no uso da GPU.

    • Configurações de tela que permitem um limite menor para ativar o modo de alto brilho podem aumentar o consumo de energia para executar a tela com um brilho maior.

  • A integridade da tela pode ser afetada devido ao aumento do tempo gasto no modo de alto brilho, o que pode causar problemas de longo prazo, como burn-in, com a integridade da tela.

Validação

Os OEMs podem usar testes do VTS, que estão incluídos no conjunto de testes do HWC, para verificar a correção do escurecimento e validar a taxa de escurecimento da entrada.

A validação desse recurso depende do dispositivo. Portanto, não há testes CTS ou GTS para oferecer suporte a isso.

Os OEMs precisam executar testes manuais para validar se a qualidade da imagem dos elementos SDR escurecidos é aceitável. Os OEMs podem reproduzir conteúdo para padrões HDR compatíveis com o dispositivo em SurfaceView para validar se os elementos SDR reproduzidos junto com o conteúdo HDR não ficam muito brilhantes.

Problemas

O escurecimento de imagens SDR pode resultar em preto esmagado ou perda de informações em áreas mais escuras da imagem original. Isso acontece porque os valores de cores mais escuras se concentram em um conjunto menor de códigos escuros.

Uma implementação de escurecimento que causa um efeito de preto esmagado inaceitável precisa implementar algoritmos de dithering, que injetam ruído na imagem final para reduzir os efeitos de bandas.

Implementações de HWC que não conseguem fazer o dithering da imagem no local adequado no pipeline de cores precisam solicitar que o SurfaceFlinger aplique escurecimento e dithering na GPU.

As implementações também podem ajustar o valor de sdrHdrRatioMap para limitar a quantidade de escurecimento dos elementos SDR. Para diminuir o brilho a níveis muito baixos, é necessário usar a GPU, o que melhora a qualidade da imagem, mas pode reduzir a duração da bateria.