Composição com SDR e HDR

Esta página descreve os requisitos, a configuração e a validação do recurso de escurecimento 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, introduzindo 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 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 a conteúdo HDR.

    Quando o conteúdo em HDR está na tela, o brilho da tela é aumentado para acomodar o maior intervalo de luminância do conteúdo HDR. Qualquer conteúdo SDR que também esteja na tela é escurecido perfeitamente à medida que o brilho da tela aumenta, para que o brilho perceptível do conteúdo SDR não mude. Os OEMs podem configurar as telas integradas para escurecer o conteúdo SDR na tela quando apresentado ao lado de conteúdo HDR.

Requisitos de OEM

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

  • Implemente a versão AIDL do HWC, que inclui suporte à escurecimento acelerado por hardware no pipeline de cores do dispositivo. Consulte AIDL para HWC para implementar os recursos necessários.

  • Para escurecer com precisão as sobreposições de hardware no HWC, é necessário usar um hardware específico para dimensionar a luz linear das sobreposições. As implementações sem hardware suficiente são necessárias para adiar a composição do SurfaceFlinger para a GPU, causando consumo da bateria e possível escurecimento de baixa 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 que o equilíbrio entre a duração da bateria, o burn-in e a fidelidade do conteúdo seja estabelecido.

A ativação e o ajuste da composição aprimorada são feitos por uma configuração de exibição cujo esquema está localizado em display-device-config.xsd. Os seguintes elementos-chave são importantes para definir a configuração de exibição:

  • O elemento sdrHdrRatioMap ativa o escurecimento de SDR e define uma tabela de pesquisa (LUT, na sigla em inglês) para mapear o brilho da tela para o HDR ser exibido no ponto branco do SDR quando houver conteúdo HDR na tela.

    Se sdrHdrRatioMap for definido, como parte do controle do brilho da tela, o DisplayManagerService comunicará o ponto branco SDR desejado ao SurfaceFlinger para que o SurfaceFlinger possa enviar a proporção 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 ofereça suporte ao escurecimento SDR.

  • 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 brilho alto em mais situações, como cenários de picture-in-picture. As versões anteriores do AOSP fixaram esse valor em 50%.

Confira os principais elementos da configuração de exibição no bloco de código abaixo:

<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

A ativação dos recursos de mapeamento de tom e escurecimento de conteúdo SDR pode levar às seguintes situações:

  • A fidelidade do conteúdo HDR reproduzido no dispositivo pode aumentar, à medida que os elementos do conteúdo SDR ficam esmaecidos.

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

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

    • Configurações de exibição que permitem um limite mais baixo para ativar o modo de alto brilho podem aumentar o consumo de energia para executar a tela em um brilho mais alto.

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

Validação

Os OEMs podem usar os testes VTS, que são incluídos como parte do conjunto de testes do HWC, para verificar a correção do escurecimento e validar a proporção de escurecimento da entrada.

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

Os OEMS precisam executar testes manuais para validar se a qualidade da imagem de elementos SDR escurecidos é aceitável. Os OEMs podem reproduzir conteúdo para padrões HDR com suporte no dispositivo acima de SurfaceView para garantir que os elementos SDR reproduzidos com o conteúdo HDR não fiquem excessivamente brilhantes.

Problemas

A redução de imagens SDR pode resultar em black crush ou perda de informações em áreas mais escuras da imagem original. Isso ocorre porque os valores de cores mais escuras são reduzidos a um conjunto menor de códigos escuros.

Uma implementação de escurecimento que causa esmagamentos pretos inaceitáveis precisa implementar algoritmos de pontilhamento, que injetam ruído na imagem final para que os efeitos das faixas sejam reduzidos.

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

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