Parámetros de sesión

La función de parámetros de sesión reduce los retrasos, ya que permite que los clientes que usan cámaras configurar de forma activa el subconjunto de parámetros de solicitud costosos, es decir, la sesión como parte de la fase de inicialización de la sesión de captura. Con este las implementaciones de HAL reciben los parámetros del cliente durante la de transmisión en lugar de la primera solicitud de captura, según sus valores, preparar y crear más la canalización interna de forma eficiente.

En Android 10, puedes mejorar el rendimiento usando la función opcional de consulta de reconfiguración de sesión para obtener un mayor control del la lógica de reconfiguración de parámetros de sesión interna. Para obtener más información, consulta Consulta de reconfiguración de sesión.

Ejemplos y fuente

Una implementación de parámetros de sesión de referencia ya es parte del CameraHal) Esta HAL usa la API de Hal heredada. El modelo encuadernado CameraHal que implementa la API de HIDL de la cámara debe usar el HIDL respectivo sessionParams para acceder a los parámetros de sesión nuevos durante la configuración de la transmisión.

Los clientes de cámara pueden consultar las claves de todos los parámetros de sesión admitidos llamando getAvailableSessionKeys() y, finalmente, establecen sus valores iniciales a través de setSessionParameters()

Implementación

Tu implementación de CameraHal debe propagar el ANDROID_REQUEST_AVAILABLE_SESSION_KEYS dentro de los metadatos respectivos de la cámara estática y proporcionan un subconjunto de ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS, que contiene una lista de claves que son difíciles de aplicar por fotograma y pueden pueden generar retrasos inesperados cuando se modifican durante la vida útil de la sesión de captura.

Entre los ejemplos típicos se incluyen parámetros que requieren un hardware lento o un cambio en la canalización interna de la cámara. Control de la sesión se pueden aplicar parámetros en las solicitudes de captura, pero los clientes deben estar al tanto y esperan retrasos en su app.

El framework supervisa todas las solicitudes entrantes y si detecta un cambio en la de un parámetro de sesión, se reconfigura internamente la cámara. La nueva herramienta la configuración de transmisión pasa a CameraHal y, luego, incluye la sesión actualizada. de parámetros, que se usan para configurar más la canalización de la cámara de forma eficiente.

Personalización

Puedes definir etiquetas en la lista de parámetros de sesión disponible que se propaga en el lado de CameraHal. Esta función no estará activa si CameraHal sale de la La lista de parámetros de sesión disponible está vacía.

Validación

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

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

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

Consulta de reconfiguración de sesión

Android 10 introduce una sesión opcional función de consulta de reconfiguración para mejorar el rendimiento como las reconfiguraciones de la transmisión interna como resultado de la sesión las modificaciones en los valores de los parámetros pueden reducir el rendimiento. Para abordar esta inquietud, HIDL ICameraDeviceSession versión 3.5 y las versiones posteriores son compatibles con isReconfigurationRequired que proporciona un control detallado sobre el parámetro de sesión interna de reconfiguración. Con este método, puede ocurrir una reconfiguración de transmisión precisamente cuando sea necesario.

Los argumentos de isReconfigurationRequired Proporcionar la información obligatoria sobre cada parámetro de sesión pendiente que permite realizar varios tipos de personalizaciones específicas del dispositivo.

Esta función solo se implementa en el servicio y la HAL de la cámara. Hay no existen APIs orientadas al público. Si se implementa esta función, los clientes de cámara ver mejoras en el rendimiento cuando se trabaja con los parámetros de sesión.

Implementación

Para admitir consultas de reconfiguración de sesión, debes implementar el isReconfigurationRequired para verificar si se requiere reconfiguración completa de la transmisión para nuevos los valores del parámetro de sesión.

Si el cliente cambia el valor de cualquier parámetro de sesión anunciado, la cámara framework llama a isReconfigurationRequired . Según los valores específicos, la HAL decide si una operación es necesario volver a configurar la transmisión. Si la HAL devuelve false, la cámara el framework omite la reconfiguración interna. Si la HAL devuelve true, el El framework reconfigura las transmisiones y pasa los nuevos valores de los parámetros de sesión. según corresponda.

El framework puede llamar al método isReconfigurationRequired en algún momento. antes de que se envíe una solicitud con parámetros nuevos a la HAL y la solicitud puede cancelarse antes de enviarla. Por lo tanto, la HAL no debe usar llamada de método para cambiar su comportamiento de cualquier manera.

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

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

El dispositivo y la implementación de HAL deben cumplir con el siguiente rendimiento requisitos:

  • No se deben cambiar los parámetros de configuración de la cámara de hardware y software.
  • No debe haber un impacto visible para el usuario en el rendimiento de la cámara.

El isReconfigurationRequired usa los siguientes argumentos:

  • oldSessionParams: Parámetros de sesión de la sesión anterior Por lo general, son los parámetros de la sesión existente.
  • newSessionParams: Son los parámetros de sesión nuevos que establece el cliente.

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

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

Los valores que se muestran son los siguientes:

  • true: Se requiere reconfigurar la transmisión.
  • false: No es necesario volver a configurar la transmisión.

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

Validación

La función de consulta de reconfiguración de sesión se puede validar con la prueba de VTS caso en CameraHidlTest#configureStreamsWithSessionParameters