Saída de câmera de 10 bits

Para dispositivos com o Android 13 e versões mais recentes, o Android oferece suporte à saída de câmera de 10 bits usando perfis de intervalo dinâmico que podem ser configurados pelo cliente da câmera como parte da configuração do fluxo. Os fabricantes de dispositivos podem adicionar suporte a perfis de intervalo dinâmico de 10 bits, como HLG10, HDR 10, HDR 10+ e Dolby Vision.

O suporte à saída de câmera de 10 bits permite que os clientes da câmera descubram perfis de intervalo dinâmico de 10 bits compatíveis de um dispositivo chamando getSupportedProfiles. Em seguida, o framework retorna uma instância de DynamicRangeProfiles, que inclui informações sobre os perfis de faixa dinâmica compatíveis e, se disponível, captura restrições de solicitação. O perfil HLG10 precisa ser compatível. O perfil de alcance dinâmico recomendado é listado no campo REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE.

Os clientes da câmera podem configurar combinações de streaming chamando setDynamicRangeProfile. Para mais informações sobre combinações obrigatórias de stream de saída, consulte a tabela Configurações garantidas adicionais de saída de 10 bits em Captura regular.

Requisitos

Para oferecer suporte à saída de câmera de 10 bits, o dispositivo precisa ter um sensor de câmera de 10 bits ou mais compatível com o respectivo ISP. Para detalhes sobre os requisitos de compatibilidade relacionados ao suporte de 10 bits, consulte a seção 7.5. Câmeras no CDD.

Implementação

Para oferecer suporte à saída de câmera de 10 bits, os fabricantes de dispositivos precisam realizar as seguintes integrações da HAL da câmera AIDL:

  • Incluir ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT nos recursos da câmera.
  • Preencha ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP com todos os perfis de intervalo dinâmico aceitos e um bitmap das restrições deles. O perfil HLG10 precisa ser compatível. Você também precisa incluir um perfil de faixa dinâmica recomendado para informar aos clientes da câmera o formato ideal com suporte.
  • Garanta suporte ao valor do perfil de intervalo dinâmico durante a configuração de transmissões para transmissões que usam o formato P010 ou suporte a um formato definido pela implementação (ImageFormat.PRIVATE).
  • Dependendo do perfil de intervalo dinâmico, defina o buffer de metadados estáticos ou dinâmicos de buffers Gralloc 4 processados antes de notificar o serviço da câmera.

Para mais detalhes sobre a saída de câmera de 10 bits na HAL da câmera, consulte o seguinte em metadata_definitions.xml:

Para conferir uma implementação de referência da HAL da câmera com suporte à saída de câmera de 10 bits, consulte /hardware/google/camera/devices/EmulatedCamera/hwl.

Validação

Para validar sua implementação de saída de câmera de 10 bits e garantir que apps de terceiros possam ativar o recurso, recomendamos realizar as três etapas de validação abaixo.

Para a validação visual da saída de uma câmera de 10 bits, presume-se que o dispositivo oferece suporte à exibição de HDR (tela de mais de 1.000 nits) e que o app de visualização de vídeos (por exemplo, Google Fotos) oferece suporte à reprodução de vídeos em HDR.

Testar a correção funcional da API

Para testar a correção funcional da API da saída da câmera de 10 bits, execute os seguintes testes CTS, ITS da câmera e VTS:

Comparar a câmera nativa e o app de terceiros

Recomendamos que você verifique se os resultados da captura de vídeos de 10 bits com um app de terceiros são semelhantes, senão idênticos, ao app de câmera nativo. Isso significa que as opções de ajuste, como exposição, faixa dinâmica e cor, precisam ser mantidas do app nativo para os apps de terceiros. Para verificar o comportamento de gravação de vídeo de um app de terceiros com suporte à saída de câmera de 10 bits no dispositivo, use o app de exemplo Camera2Video (link em inglês) no GitHub. As orientações a seguir servem para ilustrar os aspectos visíveis do HDR sem números objetivos, devido à variabilidade de sensores, painéis, condições de visualização e preferências do fornecedor.

Cenas sugeridas para comparação

Para fazer uma comparação entre o app de câmera nativo e um app de terceiros, grave vídeos usando várias cenas diferentes com o app de câmera nativo e o app de exemplo Camera2Video. Confira a seguir cenas sugeridas para comparação:

  • Uma cena com pouca ou média iluminação e um objeto brilhante, como uma vela ou uma pequena luz brilhante que cria uma faixa significativa de brilho. Isso confirma o comportamento da exposição automática e o intervalo dinâmico.
  • Uma cena externa clara com cores vibrantes e objetos reflexivos, como para-choques cromados em um carro, que cria destaques claros. Isso confirma a renderização de cenas brilhantes com destaques ainda mais brilhantes.
  • Uma cena de gama dinâmica média e baixa, como uma cena natural em ambientes internos em uma casa ou escritório. Isso confirma que condições de iluminação menos extremas se comportam como esperado.

Para todas as cenas, recomendamos que você tenha pessoas e rostos para verificar a exposição, a cor e o tratamento do tom de pele. Reduzir a variação entre as tomadas facilita as comparações entre elas.

Comparar o alcance dinâmico padrão e o alcance dinâmico alto

Para garantir que haja um benefício percebido de usar um perfil de intervalo dinâmico de 10 bits em vez de um perfil de intervalo dinâmico padrão, compare as capturas de vídeo usando SDR (sem perfil HDR) com vídeos em HDR para confirmar se os principais aspectos do HDR aparecem nas capturas. Para comparar SDR e HDR, use o app de amostra Camera2Video e as cenas sugeridas para comparar o app de câmera nativo e os apps de terceiros.

Confira a seguir os principais aspectos a serem verificados nas cenas sugeridas. Os painéis de tela com suporte a HDR variam nos níveis de brilho (medidos em nits ou lúmens). Portanto, os números abaixo são exemplos:

  • Na cena com pouca ou média luminosidade, os destaques claros da vela ou da pequena luz são renderizados com o brilho máximo da tela (possivelmente até 1.000 nits) no clipe HDR e com o brilho máximo para SDR (aproximadamente 100 nits) no clipe SDR. No clipe em HDR, os destaques brilhantes precisam brilhar para fora da tela, capturando a percepção do usuário sobre qual era a verdadeira faixa dinâmica da cena. Em comparação com o clipe HDR, o clipe SDR deve aparecer mais plano e menos brilhante.
  • Na cena de saída clara, dependendo da configuração do dispositivo, o clipe HDR mostra uma diferença aparente no brilho da tela em comparação com o clipe SDR. Para o clipe HDR, o brilho da tela para a cena geral (dependendo do headroom) precisa ser maior, por exemplo, até 800 nits, e ainda mais para os destaques claros, como os para-choques cromados, em torno do brilho máximo.
  • Na captura em ambientes internos com alcance dinâmico médio e baixo, os clipes HDR e SDR são semelhantes em cor e tom, e a captura HDR pode ser mais brilhante que a SDR. O HDR não pode ser mais escuro que o SDR. Se as opções de ajuste impedirem isso, verifique se o comportamento do app de terceiros corresponde ao comportamento do app de câmera nativo.