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 perfilHLG10
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
:
DYNAMIC_RANGE_TEN_BIT
- Detalhes do HAL para
availableDynamicRangeProfilesMap
recommendedTenBitDynamicRangeProfile
10BIT_OUTPUT
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.
- Testar a correção funcional da API
- Comparar a câmera nativa e o app de terceiros
- Comparar o HDR padrão e o HDR alto
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:
hardware/interfaces/camera/provider/aidl/vts/
: testa a descoberta básica, a configuração e o streaming e verifica a presença de metadados HDR quando necessário.tests/camera/src/android/hardware/camera2/cts/
: garante que a câmera se comporte de acordo com as especificações da API do AOSP.cts/apps/CameraITS
: confirma que o comportamento geral do vídeo é consistente quando perfis HDR são usados. O teste específico étests/scene4/test_video_aspect_ratio_and_crop.py
.
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.