O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Configurações de fluxo

O Android 10 apresenta recursos que permitem que os clientes da câmera escolham os fluxos de câmera ideais para casos de uso específicos e para garantir que certas combinações de fluxo sejam suportadas pelo dispositivo de câmera. Uma configuração de fluxo refere-se a uma única corrente de câmara configurada no dispositivo de câmara e um fluxo de combinação refere-se a um ou mais conjuntos de correntes configurados no dispositivo de câmara. Para saber mais sobre esses recursos, consulte recomendado configurações de fluxo e API para combinações de fluxo consulta .

Implementação de referência

Há uma implementação de referência do lado do fornecedor dos fluxos de configuração recomendados e da API para consultar os recursos de combinação de fluxos. Você pode encontrar essa implementação em QCamera3HWI.cpp

Os fornecedores de câmeras podem anunciar configurações de fluxo recomendadas para casos de uso específicos para clientes de câmeras. Estas configurações de fluxo recomendados, que são subconjuntos de StreamConfigurationMap , pode ajudar os clientes a câmera escolher configurações ideais.

Embora StreamConfigurationMap fornece informações de configuração de fluxo exaustiva aos clientes da câmera, ele não fornece qualquer informação sobre a eficiência, a potência, ou impactos de escolher um fluxo em detrimento de outro desempenho. Os clientes da câmera podem escolher livremente entre todas as configurações de fluxo possíveis, mas, em muitos casos, isso leva os clientes a usar configurações e aplicativos de câmera abaixo do ideal, fazendo pesquisas exaustivas demoradas.

Por exemplo, embora alguns formatos YUV processados ​​sejam necessários e devam ser suportados, o dispositivo de câmera pode não ter suporte nativo para os formatos. Isso resulta em uma passagem de processamento adicional para a conversão de formato e reduz a eficiência. O tamanho e a proporção correspondente também podem ter um impacto semelhante, tornando determinadas dimensões preferíveis em termos de potência e desempenho.

Seus mapas configuração da transmissão recomendado não são obrigados a ser exaustiva comparação com o StreamConfigurationMap . Os mapas de configuração sugeridas devem seguir os requisitos na implementação seção e pode incluir qualquer um dos formatos, tamanhos ou outros valores disponíveis encontrados em StreamConfigurationMap . Formatos, tamanhos ou outros valores ocultos não encontrados em StreamConfigurationMap não podem ser incluídos em mapas de configuração de fluxo recomendados.

Todos os testes permanecem inalterados e não são relaxados, dependendo das configurações de fluxo recomendadas.

As configurações de fluxo recomendadas fornecidas pela implementação da câmera são opcionais e o cliente da câmera pode ignorá-las.

Implementação

Siga estas etapas para implementar esse recurso.

Entradas de metadados

Para ativar esse recurso, o HAL da câmera deve preencher as seguintes entradas de metadados estáticos:

  • android.scaler.availableRecommendedStreamConfigurations : O subconjunto recomendado de configurações de fluxo para casos de uso específicos. A declaração usa bitmaps simples indicando os casos de uso sugeridos na forma de [1 << PREVIEW | 1 << RECORD..] . Os casos de uso estendem a tupla regular (formato, largura, altura, entrada) com uma entrada adicional. Casos de uso público ou quaisquer outros bits definidos dentro do intervalo não-existente [PUBLIC_END, VENDOR_START] são proibidas.

    Esta informação é armazenada nas availableRecommendedStreamConfigurations tag de metadados.

    O exemplo a seguir mostra uma matriz para uma configuração de fluxo recomendada para um dispositivo de câmera que suporta apenas 4K e 1080p, onde ambas as resoluções são preferidas para gravação de vídeo, mas apenas 1080p é sugerido para visualização.

    [3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT),
    1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
    
  • android.depth.availableRecommendedDepthStreamConfigurations (disponíveis apenas se suportado pelo dispositivo): As configurações de fluxo profundidade DataSpace recomendadas sugeridas para este dispositivo de câmera. Semelhante à entrada de metadados acima, um bitmap de caso de uso adicional indica os casos de uso sugeridos.

    Esta informação é armazenada no availableRecommendedInputOutputFormatsMap tag de metadados.

  • android.scaler.availableRecommendedInputOutputFormatsMap (disponível apenas se suportado pelo dispositivo): O mapeamento de formatos de imagem recomendadas que são sugeridas para este dispositivo de câmera para fluxos de entrada, aos seus formatos de saída correspondentes.

    Esta informação é armazenada nas availableRecommendedDepthStreamConfigurations tag de metadados.

Esta informação está disponível para os clientes da câmera através do RecommendedStreamConfigurationMap API.

Casos de uso obrigatórios

As configurações de fluxo recomendadas devem ser fornecidas para os seguintes casos de uso e atender aos requisitos correspondentes:

Caso de uso Requerimento
PREVIEW A pré-visualização deve incluir apenas não atrasando configurações de transmissão processadas com formatos de saída, tais como YUV_420_888 e IMPLEMENTATION_DEFINED .
RECORD A gravação de vídeo deve incluir configurações de fluxo que correspondem a mídia anunciado suportados perfis com o IMPLEMENTATION_DEFINED formato.
VIDEO_SNAPSHOT Um instantâneo de vídeo deve incluir configurações de fluxo que sejam pelo menos tão grandes quanto as resoluções máximas de RECORD e apenas com a combinação formato BLOB + DATASPACE_JFIF / espaço de dados (JPEG). As configurações não devem causar falhas de visualização e devem ser capazes de rodar a 30 fps.
SNAPSHOT Configurações de fluxo instantâneo deve incluir, pelo menos, uma com um tamanho próximo de android.sensor.info.activeArraySize com o formato de blob + DATASPACE_JFIF / DataSpace combinação (JPEG). Levando em consideração as restrições de proporção, alinhamento e outras restrições específicas do fornecedor, a área do tamanho máximo sugerido não deve ser inferior a 97% da área do tamanho da matriz do sensor.
ZSL (se suportado) Se compatível com o dispositivo de câmera, as configurações de fluxo de entrada recomendadas devem ser anunciadas apenas em conjunto com outros formatos de saída processados ​​ou paralisados.
RAW (se suportado) Se compatível com o dispositivo de câmera, as configurações de fluxo raw recomendadas devem incluir apenas formatos de saída baseados em RAW.

Outros casos de uso

Você pode fornecer fluxos de configuração adicionais recomendados para casos de uso específicos para sua implementação.

Validação

Para testar sua implementação dos fluxos de configuração recomendados, execute os seguintes testes CTS e VTS:

API para consultar combinações de fluxo

A plataforma Android oferece suporte a uma API para consultar combinações de fluxo. A implementação desta API permite que os clientes da câmera de forma segura consulta combinações de fluxo em qualquer ponto depois de receber uma válida CameraDevice exemplo, removendo a sobrecarga de inicialização de uma sessão de captura da câmera e o potencial de ter exceções câmera subsequentes, incluindo a quebra da câmera, e permitindo consultas mais rápidas.

Esse recurso também permite que os clientes da câmera para receber uma lista de combinações de fluxo compilado de acordo com as diretrizes para CameraDevice eo nível HW suportados. Os testes CTS estão disponíveis para garantir a exatidão dos resultados da consulta, tanto quanto possível, cobrindo um subconjunto menor das combinações de fluxo mais comuns.

Você pode optar por oferecer suporte a esse recurso implementando uma chamada de API HIDL adicional no HAL da câmera.

Implementação

Para apoiar uma API para consulta combinações de fluxo, o HAL Camera deve fornecer uma implementação para o isStreamCombinationSupported interface API HIDL. Esta interface verifica se o dispositivo de câmera oferece suporte a uma combinação de fluxo de câmera especificada.

Quando chamada, a API deve retornar um dos seguintes códigos de status:

  • OK : A consulta combinação fluxo foi bem sucedida.
  • METHOD_NOT_SUPPORTED : O dispositivo de câmera não suporta a consulta combinação fluxo.
  • INTERNAL_ERROR : A consulta combinação de fluxo não pode ser concluída devido a um erro interno.

A API retorna verdadeiro se a combinação de fluxo for compatível. Caso contrário, retorna falso.

A estrutura usa a API pública isSessionConfigurationSupported para verificar se a configuração de sessão especial é suportado pelo dispositivo de câmera.

As chamadas para a API não devem ter nenhum efeito colateral na operação normal da câmera. As chamadas de API não devem alterar nenhum estado interno ou diminuir o desempenho da câmera. Certifique-se de que após o HAL da câmera validar com sucesso uma combinação de fluxo, os clientes da câmera possam configurar a combinação de fluxo com sucesso. Para evitar problemas, certifique-se de que a implementação não armazene nenhuma informação durante as consultas de combinação de fluxo, altere seu estado interno ou se envolva em operações demoradas.

Validação

Para validar esse recurso, execute os seguintes casos de teste de câmera CTS e VTS:

Módulos de câmera CTS:

Câmera VTS:

VtsHalCameraProviderV2_4TargetTest.cpp