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

Parâmetros de Sessão

O recurso de parâmetros de sessão reduz atrasos, permitindo que os clientes da câmera configurem ativamente o subconjunto de parâmetros de solicitação caros, ou seja, parâmetros de sessão, como parte da fase de inicialização da sessão de captura. Com esse recurso, suas implementações HAL recebem os parâmetros do cliente durante a fase de configuração do fluxo em vez da primeira solicitação de captura e podem, dependendo de seus valores, preparar e construir o pipeline interno com mais eficiência.

No Android 10, você pode melhorar o desempenho usando o recurso opcional de consulta de reconfiguração de sessão para obter mais controle sobre a lógica de reconfiguração de parâmetro de sessão interna. Para mais informações, consulte consulta reconfiguração Session .

Exemplos e fonte

A implementação parâmetro de sessão de referência já faz parte do CameraHal . Este HAL usa a API Hal legada. O binderized CameraHal que implementa a câmera HIDL API deve usar o respectivo HIDL sessionParams entrada para acessar quaisquer novos parâmetros de sessão de entrada durante a configuração do fluxo.

Clientes da câmara podem consultar as chaves de todos os parâmetros de sessão suportados pelo telefone getAvailableSessionKeys() e, eventualmente, definir seus valores iniciais via setSessionParameters() .

Implementação

Sua implementação CameraHal deve preencher os ANDROID_REQUEST_AVAILABLE_SESSION_KEYS dentro do respectivo metadados da câmera estática e fornecem um subconjunto de ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS , que contém uma lista de chaves que são difíceis de aplicar per-frame e pode resultar em atrasos inesperados quando modificado durante a vida sessão de captura.

Exemplos típicos incluem parâmetros que requerem uma reconfiguração de hardware demorada ou uma mudança de pipeline de câmera interna. O controle sobre os parâmetros da sessão ainda pode ser exercido nas solicitações de captura, mas os clientes devem estar cientes e esperar atrasos em seus aplicativos.

O framework monitora todas as solicitações de entrada e se detectar uma mudança no valor de um parâmetro de sessão, ele reconfigura internamente a câmera. A nova configuração de fluxo passada para CameraHal inclui os valores de parâmetro de sessão atualizados, que são usados ​​para configurar o pipeline da câmera com mais eficiência.

Costumização

Você pode definir tags na lista de parâmetros de sessão disponíveis que é preenchida no lado CameraHal. Este recurso não estará ativo se CameraHal deixar a lista de parâmetros de sessão disponíveis vazia.

Validação

CTS inclui os seguintes novos casos para parâmetros de sessão de teste:

Em geral, depois que um determinado parâmetro faz parte da lista de chaves de sessão, seu valor atual é incluído como parte dos parâmetros de sessão passados ​​durante a configuração do fluxo na camada HAL.

Os parâmetros da sessão devem ser selecionados cuidadosamente. Os valores não devem mudar com frequência, se é que mudam, entre as configurações de fluxo. Parâmetros que mudam com frequência, como intenção de captura, são inadequados e adicioná-los à lista de parâmetros de sessão pode causar falhas de CTS devido à excessiva reconfiguração interna.

Consulta de reconfiguração de sessão

O Android 10 apresenta um recurso opcional de consulta de reconfiguração de sessão para melhorar o desempenho, pois as reconfigurações de stream interno resultantes de modificações de valor de parâmetro de sessão podem reduzir o desempenho. Para resolver este problema, HIDL ICameraDeviceSession versão 3.5 e superior suporta os isReconfigurationRequired método, que fornece controle de grão fino sobre a lógica interna reconfiguração parâmetro de sessão. Usando este método, a reconfiguração do fluxo pode ocorrer precisamente quando necessário.

Os argumentos para isReconfigurationRequired fornecer as informações necessárias sobre cada pendente de modificação dos parâmetros da sessão, permitindo vários tipos de personalizações específicas do dispositivo.

Este recurso é implementado apenas no serviço da câmera e no HAL da câmera. Não há APIs voltadas ao público. Se este recurso for implementado, os clientes da câmera verão melhorias de desempenho ao trabalhar com parâmetros de sessão.

Implementação

Para oferecer suporte a consultas sessão de reconfiguração, você deve implementar a isReconfigurationRequired método para verificar se reconfiguração fluxo completo é necessário para novos valores de parâmetros de sessão.

Se o cliente altera o valor de qualquer parâmetro de sessão anunciado, o quadro da câmera chama a isReconfigurationRequired método. Dependendo dos valores específicos, o HAL decide se uma reconfiguração completa do stream é necessária. Se o HAL retorna false , o quadro da câmera pula a reconfiguração interna. Se o HAL retorna true , o quadro reconfigura os fluxos e passa os novos valores de parâmetros da sessão em conformidade.

O isReconfigurationRequired método pode ser chamado pela estrutura algum tempo antes de um pedido com novos parâmetros é apresentado ao HAL, eo pedido pode ser cancelado antes de ser submetido. Portanto, o HAL não deve usar essa chamada de método para alterar seu comportamento de forma alguma.

A implementação de HAL deve atender aos seguintes requisitos:

  • O quadro deve ser capaz de chamar a isReconfigurationRequired método, a qualquer momento após a configuração sessão ativa.
  • Não deve haver impacto no desempenho de solicitações pendentes de câmera. Em particular, não deve haver falhas ou atrasos durante a transmissão normal da câmera.

O dispositivo e a implementação de HAL devem atender aos seguintes requisitos de desempenho:

  • As configurações de hardware e software da câmera não devem ser alteradas.
  • Não deve haver nenhum impacto visível ao usuário no desempenho da câmera.

O isReconfigurationRequired método leva os seguintes argumentos:

  • oldSessionParams : parâmetros de sessão a partir da sessão anterior. Normalmente, os parâmetros de sessão existentes.
  • newSessionParams : parâmetros da sessão Novas que são definidas pelo cliente.

Os códigos de status de retorno esperados são:

  • OK : reconfiguração de sucesso exigida consulta.
  • METHOD_NOT_SUPPORTED : O dispositivo de câmera não suporta a consulta reconfiguração.
  • INTERNAL_ERROR : A consulta reconfiguração não pode ser concluída devido a um erro interno.

Os valores de retorno são:

  • true : Córrego reconfiguração é necessária.
  • false : Córrego reconfiguração não é necessária.

Para ignorar uma consulta sessão de reconfiguração, o HAL retorna METHOD_NOT_SUPPORTED ou false . Isso resulta no comportamento padrão do serviço da câmera, em que a reconfiguração do fluxo é acionada a cada alteração do parâmetro da sessão.

Validação

O recurso de consulta sessão reconfiguração pode ser validado usando o caso de teste VTS em CameraHidlTest#configureStreamsWithSessionParameters .