Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Parámetros de sesión

La función de parámetros de sesión reduce las demoras al permitir que los clientes de la cámara configuren activamente el subconjunto de parámetros de solicitud costosos, es decir, parámetros de sesión, como parte de la fase de inicialización de la sesión de captura. Con esta función, sus implementaciones de HAL reciben los parámetros del cliente durante la fase de configuración de la transmisión en lugar de la primera solicitud de captura y pueden, según sus valores, preparar y construir la canalización interna de manera más eficiente.

En Android 10, puede mejorar el rendimiento mediante el uso de la función de consulta de reconfiguración de sesión opcional para tener más control sobre la lógica de reconfiguración de parámetros de sesión interna. Para obtener más información, consulte la sesión de consulta reconfiguración .

Ejemplos y fuente

Una aplicación parámetro de sesión de referencia ya es parte de la CameraHal . Esta HAL utiliza la API de Hal heredada. El revestidas con un aglutinante CameraHal que implementa la API HIDL cámara debe utilizar el respectivo HIDL sessionParams entrada para acceder a los nuevos parámetros de sesión entrantes durante la configuración del flujo.

Cámara clientes pueden consultar las llaves de todos los parámetros de sesión soportados llamando getAvailableSessionKeys() y, finalmente, establecer sus valores iniciales a través de setSessionParameters() .

Implementación

Su aplicación debe CameraHal poblar las ANDROID_REQUEST_AVAILABLE_SESSION_KEYS dentro de los respectivos metadatos de la cámara estática y proporcionar un subconjunto de ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS , que contiene una lista de claves que son difíciles de aplicar por trama y puede dar lugar a retrasos inesperados cuando se modifica durante la duración de la sesión de captura.

Los ejemplos típicos incluyen parámetros que requieren una reconfiguración de hardware que requiere mucho tiempo o un cambio de canalización de la cámara interna. El control sobre los parámetros de la sesión se puede seguir ejerciendo en las solicitudes de captura, pero los clientes deben estar al tanto y esperar retrasos en su aplicación.

El marco monitorea todas las solicitudes entrantes y si detecta un cambio en el valor de un parámetro de sesión, reconfigura internamente la cámara. La nueva configuración de transmisión pasada a CameraHal incluye los valores de los parámetros de sesión actualizados, que se utilizan para configurar la canalización de la cámara de manera más eficiente.

Personalización

Puede definir etiquetas en la lista de parámetros de sesión disponibles que se completa en el lado de CameraHal. Esta función no está activa si CameraHal deja vacía la lista de parámetros de sesión disponibles.

Validación

CTS incluye los siguientes casos nuevos para probar parámetros de sesión:

En general, después de que un determinado parámetro sea parte de la lista de claves de sesión, su valor actual se incluye como parte de los parámetros de sesión pasados ​​durante la configuración del flujo en la capa HAL.

Los parámetros de la sesión deben seleccionarse cuidadosamente. Los valores no deben cambiar con frecuencia, si es que lo hacen, entre configuraciones de transmisión. Los parámetros que cambian con frecuencia, como la intención de captura, no son adecuados y agregarlos a la lista de parámetros de sesión podría causar fallas de CTS debido a una excesiva reconfiguración interna.

Consulta de reconfiguración de sesión

Android 10 presenta una función de consulta de reconfiguración de sesión opcional para mejorar el rendimiento, ya que las reconfiguraciones de transmisión internas resultantes de las modificaciones del valor de los parámetros de la sesión pueden reducir el rendimiento. Para abordar esta preocupación, HIDL ICameraDeviceSession versión 3.5 y superiores son compatibles el isReconfigurationRequired método que proporciona un control preciso sobre la lógica interna reconfiguración parámetro de sesión. Con este método, la reconfiguración del flujo puede ocurrir precisamente cuando sea necesario.

Los argumentos para isReconfigurationRequired proporciona la información necesaria sobre cada modificación parámetro de sesión en espera, lo que permite diferentes tipos de personalizaciones específicas del dispositivo.

Esta función se implementa solo en el servicio de cámara y la cámara HAL. No hay API de cara al público. Si se implementa esta función, los clientes de la cámara deberían ver mejoras de rendimiento al trabajar con parámetros de sesión.

Implementación

Para consultas de apoyo sesión de reconfiguración, debe implementar la isReconfigurationRequired método para comprobar si se requiere completa reconfiguración de tren para los nuevos valores de los parámetros de sesión.

Si el cliente cambia el valor de cualquier parámetro de sesión anunciada, el marco cámara llama al isReconfigurationRequired método. Dependiendo de los valores específicos, la HAL decide si se requiere una reconfiguración completa del flujo. Si la HAL vuelve false , el marco cámara salta la reconfiguración interna. Si la HAL devuelve true , el marco reconfigura las corrientes y pasa los valores de los parámetros nuevos sesión en consecuencia.

El isReconfigurationRequired método puede ser invocado por el marco de algún tiempo antes de la solicitud con los nuevos parámetros se presenta a la HAL, y la solicitud puede ser cancelada antes de su presentación. Por lo tanto, HAL no debe utilizar esta llamada al método para cambiar su comportamiento de ninguna manera.

La implementación de HAL debe cumplir con los siguientes requisitos:

  • El marco debe ser capaz de llamar a la isReconfigurationRequired método en cualquier momento después de la configuración sesión activa.
  • No debe haber ningún impacto en el rendimiento de las solicitudes de cámara pendientes. En particular, no debe haber fallas o retrasos durante la transmisión normal de la cámara.

El dispositivo y la implementación de HAL deben cumplir los siguientes requisitos de rendimiento:

  • La configuración de la cámara de hardware y software no debe cambiarse.
  • No debe haber ningún impacto visible para el usuario en el rendimiento de la cámara.

El isReconfigurationRequired método toma los siguientes argumentos:

  • oldSessionParams : los parámetros de sesión de la sesión anterior. Por lo general, los parámetros de sesión existentes.
  • newSessionParams : Nuevos parámetros de sesión que son fijados por el cliente.

Los códigos de estado de devolución esperados son:

  • OK : reconfiguración exitosa requiere consulta.
  • METHOD_NOT_SUPPORTED : El dispositivo de cámara no soporta la consulta de reconfiguración.
  • INTERNAL_ERROR : La consulta reconfiguración no se puede completar debido a un error interno.

Los valores devueltos son:

  • true es necesaria reconfiguración de tren:.
  • false no es necesaria reconfiguración de tren:.

Para ignorar una consulta sesión de reconfiguración, el HAL vuelve METHOD_NOT_SUPPORTED o false . Esto da como resultado el comportamiento del servicio de cámara predeterminado donde la reconfiguración de la transmisión se activa en cada cambio de parámetro de sesión.

Validación

La función de consulta sesión de reconfiguración puede ser validado utilizando el caso de prueba VTS en CameraHidlTest#configureStreamsWithSessionParameters .