Google se compromete a promover la equidad racial para las comunidades negras. Ver cómo.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Camera HAL3

La capa de abstracción de hardware (HAL) de la cámara de Android conecta las API de marco de cámara de nivel superior en android.hardware.camera2 con el controlador y el hardware de la cámara subyacente. Android 8.0 introdujo Treble , cambiando la API de CameraHal a una interfaz estable definida por el lenguaje de descripción de interfaz HAL (HIDL). Si ya ha desarrollado un módulo HAL de cámara y un controlador para Android 7.0 y versiones anteriores, tenga en cuenta los cambios significativos en la tubería de la cámara.

Características de la cámara HAL3

El objetivo del rediseño de la API de la cámara de Android es aumentar sustancialmente la capacidad de las aplicaciones para controlar el subsistema de la cámara en los dispositivos Android mientras se reorganiza la API para que sea más eficiente y fácil de mantener. El control adicional facilita la creación de aplicaciones de cámara de alta calidad en dispositivos Android que pueden funcionar de manera confiable en múltiples productos y al mismo tiempo utilizar algoritmos específicos del dispositivo siempre que sea posible para maximizar la calidad y el rendimiento.

La versión 3 del subsistema de cámara estructura los modos de operación en una sola vista unificada, que puede usarse para implementar cualquiera de los modos anteriores y varios otros, como el modo ráfaga. Esto da como resultado un mejor control del usuario para el enfoque y la exposición y más posprocesamiento, como reducción de ruido, contraste y nitidez. Además, esta vista simplificada facilita a los desarrolladores de aplicaciones el uso de las diversas funciones de la cámara.

La API modela el subsistema de cámara como una tubería que convierte las solicitudes entrantes para capturas de cuadros en cuadros, en una base de 1: 1. Las solicitudes encapsulan toda la información de configuración sobre la captura y el procesamiento de una trama. Esto incluye resolución y formato de píxeles; sensor manual, lente y control de flash; Modos de funcionamiento 3A; Control de procesamiento RAW-> YUV; generación de estadísticas; y así.

En términos simples, el marco de la aplicación solicita un marco al subsistema de la cámara, y el subsistema de la cámara devuelve los resultados a una secuencia de salida. Además, se generan metadatos que contienen información como espacios de color y sombreado de lentes para cada conjunto de resultados. Puede pensar en la versión 3 de la cámara como una canalización hacia la transmisión unidireccional de la versión 1 de la cámara. Convierte cada solicitud de captura en una imagen capturada por el sensor, que se procesa en:

  • Un objeto Result con metadatos sobre la captura.
  • De uno a N buffers de datos de imagen, cada uno en su propia superficie de destino.

El conjunto de posibles superficies de salida está preconfigurado:

  • Cada Surface es un destino para una secuencia de buffers de imágenes de resolución fija.
  • Solo se puede configurar una pequeña cantidad de Superficies como salidas a la vez (~ 3).

Una solicitud contiene todas las configuraciones de captura deseadas y la lista de Superficies de salida para insertar los almacenamientos intermedios de imágenes para esta solicitud (fuera del conjunto configurado total). Una solicitud puede ser de una sola vez (con capture() ), o puede repetirse indefinidamente (con setRepeatingRequest() ). Las capturas tienen prioridad sobre las solicitudes repetidas.

Modelo de datos de la cámara

Figura 1. Modelo de operación del núcleo de la cámara

Descripción general de la cámara HAL1

La versión 1 del subsistema de la cámara se diseñó como una caja negra con controles de alto nivel y los siguientes tres modos de funcionamiento:

  • Avance
  • Grabación de video
  • Todavía captura

Cada modo tiene capacidades ligeramente diferentes y superpuestas. Esto dificultó la implementación de nuevas características como el modo de ráfaga, que se encuentra entre dos de los modos de operación.

Diagrama de bloque de cámara

Figura 2. Componentes de la cámara

Android 7.0 continúa siendo compatible con la cámara HAL1, ya que muchos dispositivos todavía dependen de ella. Además, el servicio de cámara de Android admite la implementación de ambos HAL (1 y 3), lo que es útil cuando desea admitir una cámara frontal con menos capacidad con la cámara HAL1 y una cámara posterior más avanzada con cámara HAL3.

Hay un único módulo HAL de cámara (con su propio número de versión ), que enumera múltiples dispositivos de cámara independientes que tienen cada uno su propio número de versión. Se requiere el módulo de cámara 2 o posterior para admitir los dispositivos 2 o posterior, y dichos módulos de cámara pueden tener una combinación de versiones de dispositivos de cámara (esto es lo que queremos decir cuando decimos que Android admite la implementación de ambos HAL).