Para dispositivos com Android 13 e versões posteriores, o Android oferece suporte à saída de câmera de 10 bits por meio de perfis de faixa dinâmica que podem ser configurados pelo cliente da câmera como parte da configuração do stream. Os fabricantes de dispositivos podem adicionar suporte para perfis de faixa dinâmica 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 de câmera descubram perfis de faixa dinâmica de 10 bits compatíveis de um dispositivo chamando getSupportedProfiles
. A estrutura então retorna uma instância de DynamicRangeProfiles
, que inclui informações sobre perfis de intervalo dinâmico suportados e, se disponíveis, restrições de solicitação de captura. O perfil HLG10
deve ser suportado. O perfil de intervalo dinâmico recomendado está listado no campo REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE
.
Os clientes de câmera podem configurar combinações de stream chamando setDynamicRangeProfile
. Para obter mais informações sobre combinações obrigatórias de fluxo de saída, consulte a tabela de configurações adicionais garantidas de saída de 10 bits em Captura regular .
Requisitos
Para suportar saída de câmera de 10 bits, o dispositivo deve ter um sensor de câmera com capacidade de 10 bits ou superior com suporte do respectivo ISP. Para obter 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 fornecer suporte para saída de câmera de 10 bits, os fabricantes de dispositivos devem realizar as seguintes integrações Camera AIDL HAL:
- Inclui
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 suportados e um bitmap de suas restrições. O perfilHLG10
deve ser suportado. Você também deve incluir um perfil de faixa dinâmica recomendado para informar os clientes da câmera sobre o formato compatível ideal. - Garanta suporte para o valor do perfil de intervalo dinâmico durante a configuração de fluxo para fluxos usando o formato P010 ou suporte para um formato definido pela implementação (
ImageFormat.PRIVATE
). - Dependendo do perfil de intervalo dinâmico, defina o buffer de metadados estático ou dinâmico dos buffers Gralloc 4 processados antes de notificar o serviço de câmera.
Para obter mais detalhes sobre a saída da câmera de 10 bits no Camera HAL, consulte o seguinte em metadata_definitions.xml
:
-
DYNAMIC_RANGE_TEN_BIT
- Detalhes HAL para
availableDynamicRangeProfilesMap
-
recommendedTenBitDynamicRangeProfile
-
10BIT_OUTPUT
Para obter uma implementação HAL de câmera de referência com suporte para 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 aplicativos de terceiros possam ativar o recurso, recomendamos realizar os três estágios de validação a seguir.
- Testar a correção funcional da API
- Compare a câmera nativa e o aplicativo de terceiros
- Compare faixa dinâmica padrão e faixa dinâmica alta
Para validação visual da saída da câmera de 10 bits, presume-se que o dispositivo suporte a exibição de HDR (exibição de mais de 1.000 nits) e o aplicativo de visualização de vídeo (por exemplo, Google Fotos) suporte 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 CTS, ITS de câmera e VTS:
-
hardware/interfaces/camera/provider/aidl/vts/
: testa descoberta, configuração e streaming básicos 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 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
.
Compare a câmera nativa e o aplicativo de terceiros
Recomendamos fortemente garantir que os resultados da captura de vídeos de 10 bits com um aplicativo de terceiros sejam semelhantes, se não idênticos, aos do aplicativo de câmera nativo. Isso significa que as opções de ajuste, como exposição, faixa dinâmica e cor, devem ser transferidas do aplicativo nativo para aplicativos de terceiros. Para verificar o comportamento de gravação de vídeo de um aplicativo de terceiros que oferece suporte à saída de câmera de 10 bits no seu dispositivo, use o aplicativo de exemplo Camera2Video no GitHub. A orientação a seguir serve 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 aplicativo de câmera nativo e um aplicativo de terceiros, capture vídeos usando diversas cenas diferentes com o aplicativo de câmera nativo e o aplicativo de amostra Camera2Video. A seguir estão sugestões de cenas para usar para comparação:
- Uma cena de meia-luz a pouca luz com 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 a faixa dinâmica.
- Uma cena externa brilhante com cores vibrantes e objetos refletivos, como para-choques cromados de um carro, que criam destaques brilhantes. Isso confirma a renderização de cenas brilhantes com destaques ainda mais brilhantes.
- Uma cena de alcance médio e baixo alcance dinâmico, como uma cena natural interna em uma casa ou escritório. Isto confirma que condições de iluminação menos extremas se comportam conforme o esperado.
Para todas as cenas, recomendamos ter pessoas e rostos para verificar o manuseio da exposição, cor e tom de pele. A redução da variação entre tomadas facilita comparações consecutivas.
Compare faixa dinâmica padrão e faixa dinâmica alta
Para garantir que haja um benefício percebido no uso de um perfil de faixa dinâmica de 10 bits em um perfil de faixa dinâmica padrão, compare as capturas de vídeo usando SDR (sem perfil HDR) com vídeos HDR para confirmar se os principais aspectos do HDR aparecem nas capturas. Para comparar SDR e HDR, use o aplicativo de amostra Camera2Video e cenas sugeridas para comparar o aplicativo de câmera nativo e aplicativos de terceiros.
A seguir estão os aspectos principais a serem verificados nas cenas sugeridas. Os painéis de exibição capazes de HDR variam em níveis de brilho (medidos em nits ou lúmens), portanto, os seguintes números fornecidos servem como exemplos:
- Na cena de meia a pouca luz, os destaques brilhantes da vela ou luz pequena são renderizados com brilho máximo para a tela (possivelmente até 1000 nits) no clipe HDR e renderizados com brilho máximo para SDR (aproximadamente 100 lêndeas) no clipe SDR. No clipe HDR, os destaques brilhantes devem brilhar na tela, capturando a percepção do usuário sobre qual era a verdadeira faixa dinâmica da cena. Comparado ao clipe HDR, o clipe SDR deve parecer mais plano e menos brilhante.
- Na cena de saída brilhante, dependendo do ajuste do dispositivo, o clipe HDR mostra uma aparente diferença 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) deve ser maior, por exemplo, até 800 nits, e ainda mais para os destaques brilhantes, como os pára-choques cromados, em torno do brilho máximo.
- Na captura interna de faixa dinâmica baixa e média, os clipes HDR e SDR são semelhantes em cor e tom, com a captura HDR sendo potencialmente mais brilhante que o SDR. O HDR não deve ser mais escuro que o SDR. Se as opções de ajuste tornarem isso impossível, certifique-se de que o comportamento do aplicativo de terceiros corresponda ao comportamento do aplicativo de câmera nativo.