Em dispositivos com 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.
Com o suporte à saída de câmera de 10 bits, os clientes podem descobrir os perfis de intervalo dinâmico de 10 bits compatíveis de um dispositivo chamando getSupportedProfiles
.
Em seguida, a estrutura retorna uma instância de
DynamicRangeProfiles
,
que inclui informações sobre perfis de faixa dinâmica compatíveis e, se
disponível, restrições de solicitação de captura. O perfil
HLG10
precisa ser compatível. O perfil de alcance dinâmico recomendado está listado no campo REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE
.
Os clientes da câmera podem configurar combinações de streams chamando
setDynamicRangeProfile
.
Para mais informações sobre combinações obrigatórias de fluxos de saída, consulte a tabela Configurações adicionais garantidas 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 superior com suporte ao ISP respectivo. 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 de HAL AIDL da câmera:
- Inclua
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 faixa dinâmica compatíveis e um bitmap das restrições. O perfilHLG10
precisa ser compatível. Também é necessário incluir um perfil de intervalo dinâmico recomendado para informar aos clientes da câmera o formato ideal compatível. - Garanta o suporte ao valor do perfil de faixa dinâmica durante a configuração de stream para streams que usam o formato P010 ou um formato definido pela implementação (
ImageFormat.PRIVATE
). - Dependendo do perfil de faixa dinâmica, defina o buffer de metadados estáticos ou dinâmicos dos buffers Gralloc 4 processados antes de notificar o serviço de 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 da HAL para
availableDynamicRangeProfilesMap
recommendedTenBitDynamicRangeProfile
10BIT_OUTPUT
Para uma implementação de referência da HAL da câmera que oferece suporte à saída de câmera de 10 bits, consulte
/hardware/google/camera/devices/EmulatedCamera/hwl
.
Validação
Para validar sua implementação da saída da câmera de 10 bits e garantir que apps de terceiros possam ativar o recurso, recomendamos realizar as três etapas de validação a seguir.
- Testar a correção funcional da API
- Comparar a câmera nativa e um app de terceiros
- Comparar o intervalo dinâmico padrão e o intervalo dinâmico alto
Para validação visual da saída da câmera de 10 bits, presume-se que o dispositivo permite exibir HDR (tela de mais de 1.000 nits) e que o app de visualização de vídeo (por exemplo, Google Fotos) permite a reprodução de vídeo 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 do CTS, ITS da câmera e VTS:
hardware/interfaces/camera/provider/aidl/vts/
: testa a descoberta, a configuração e o streaming básicos e verifica a presença de metadados de 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 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 um app de terceiros
Recomendamos garantir que os resultados da captura de vídeos de 10 bits com um app de terceiros sejam semelhantes, se nã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, devem ser transferidas do app nativo para apps de terceiros. Para verificar o comportamento de gravação de vídeo de um app de terceiros que oferece suporte à saída de câmera de 10 bits no seu dispositivo, use o app de exemplo Camera2Video 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. Estas são as cenas sugeridas para comparação:
- Uma cena com iluminação média a baixa 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 alcance dinâmico.
- Uma cena externa clara com cores vibrantes e objetos reflexivos, como para-choques cromados em um carro, que criam destaques brilhantes. Isso confirma a renderização para cenas claras com realces ainda mais brilhantes.
- Uma cena de faixa dinâmica média ou baixa, como uma cena natural em um ambiente interno de uma casa ou escritório. Isso confirma que condições de iluminação menos extremas se comportam como esperado.
Para todas as cenas, recomendamos ter pessoas e rostos para verificar a exposição, a cor e o tratamento do tom de pele. Reduzir a variação de tomada para tomada facilita as comparações consecutivas.
Comparar o intervalo dinâmico padrão e o intervalo dinâmico alto
Para garantir que haja um benefício percebido ao 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 HDR para confirmar que os principais aspectos do HDR aparecem nas capturas. Para comparar SDR e HDR, use o app de exemplo Camera2Video e as cenas sugeridas para comparar o app de câmera nativo e apps de terceiros.
Confira a seguir os principais aspectos a serem verificados nas cenas sugeridas. Os painéis de exibição compatíveis com HDR variam em níveis de brilho (medidos em nits ou lúmens). Portanto, os números a seguir são apenas exemplos:
- Em uma cena com iluminação média a baixa, os realces brilhantes da vela ou da pequena luz são renderizados com brilho máximo para a tela (possivelmente até 1.000 nits) no clipe HDR e com brilho máximo para SDR (aproximadamente 100 nits) no clipe SDR. No clipe HDR, os destaques brilhantes precisam aparecer na tela, capturando a percepção do usuário sobre o verdadeiro alcance dinâmico da cena. Em comparação com o clipe HDR, o clipe SDR vai parecer mais plano e menos brilhante.
- Na cena de saída brilhante, dependendo do ajuste 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 realces brilhantes, como os para-choques cromados, em torno do brilho máximo.
- Em ambientes internos com captura de intervalo dinâmico baixo e médio, os clipes HDR e SDR são semelhantes em cor e tom, com a captura HDR sendo potencialmente 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 do app de câmera nativo.