Modos 3A y transición de estado

Si bien los algoritmos reales de 3A dependen de la implementación de HAL, una red de la descripción de la máquina de estados está definida por la interfaz de la HAL para permitir el acceso y el framework para comunicar el estado actual de 3A y activan eventos 3A.

Cuando se abre el dispositivo, todos los estados de 3A individuales deben STATE_INACTIVE. La configuración de la transmisión no restablece el 3A. Por ejemplo, el enfoque bloqueado se debe se mantendrá durante la llamada a configure().

Activar una acción 3A implica simplemente configurar la entrada del activador relevante en la configuración de la siguiente solicitud para indicar el inicio del activador. Por ejemplo: el activador para iniciar un análisis de enfoque automático ANDROID_CONTROL_AF_TRIGGER a ANDROID_CONTROL_AF_TRIGGER_START para una solicitud; y la cancelación de un análisis de enfoque automático se activa De ANDROID_CONTROL_AF_TRIGGER a ANDROID_CONTRL_AF_TRIGGER_CANCEL. De lo contrario, el no existirá o se establecerá como ANDROID_CONTROL_AF_TRIGGER_IDLE. Cada solicitud con una entrada de activador configurada en un valor que no sea IDLE se tratará como una evento activador independiente.

En el nivel superior, 3A se controla mediante la configuración ANDROID_CONTROL_MODE. Integra Selecciona entre no 3A (ANDROID_CONTROL_MODE_OFF), modo AUTO normal (ANDROID_CONTROL_MODE_AUTO) y usando la configuración del modo de escena (ANDROID_CONTROL_USE_SCENE_MODE):

  • En el modo APAGADO, cada uno de los componentes de enfoque automático (AF) y exposición automática (AE) y los modos de balance de blancos automáticos (AWB) están desactivados, y ninguno los controles de captura se pueden anular con las rutinas 3A.
  • En el modo AUTO, los modos AF, AE y AWB ejecutan sus y tienen sus propias entradas de metadatos de modo, estado y activador, como se indica en la siguiente sección.
  • En USE_SCENE_MODE, el valor de la entrada ANDROID_CONTROL_SCENE_MODE debe usarse para determinar el comportamiento de las rutinas 3A. En ESCENA_MODEs que no sean FACE_PRIORITY, la HAL debe anular los valores de ANDROID_CONTROL_AE/AWB/AF_MODE para que sea el modo que prefiere para el modo seleccionado MODE_ESCENA. Por ejemplo, es posible que la HAL prefiera ESA_MODE_NIGHT para usar Modo AF CONTINUOUS_FOCUS. Cualquier selección del usuario de AE/AWB/AF_MODE cuando la escena se produce se deben ignorar para estos modos de escena.
  • Para ESCENA_MODE_FACE_PRIORITY, los controles de AE/AWB/AFMODE funcionan como en ANDROID_CONTROL_MODE_AUTO, pero las rutinas 3A deben personalizarse hacia la medición y enfocar los rostros que se detecten en la escena.

Configuración de enfoque automático y entradas de resultados

Entradas de metadatos principales
ANDROID_CONTROL_AF_MODE Control para seleccionar el modo de enfoque automático actual. Establecido por el framework en la configuración de la solicitud.
MODA_APAGAR AF está inhabilitado. el framework o la app controla directamente la posición de la lente.
MODO_AUTOMÁTICO Enfoque automático de un solo barrido. La lente no se mueve, a menos que se active el modo AF.
AF_MODE_MACRO Enfoque automático con barrido hacia arriba y acercamiento La lente no se mueve, a menos que se active el modo AF
VIDEO_MODE_CONTINUOUS_AF_MODE_CONTINUOUS_VIDEO Enfoque continuo y suave para grabar videos Activación inmediata bloquea el enfoque en la posición actual. La cancelación reanuda el enfoque continuo.
AF_MODE_CONTINUOUS_PICTURE Enfoque continuo rápido para capturar imágenes estáticas sin retraso Activación bloquea el enfoque una vez que concluye el barrido actualmente activo. Cancela currículums enfoque continuo.
MODO_AF_EDOF Enfoque avanzado de profundidad de campo extendida. La búsqueda con enfoque automático no está disponible. por lo que activar uno o cancelar uno no tiene efecto. Las imágenes están enfocadas. automáticamente.
ANDROID_CONTROL_AF_STATE Se informan metadatos dinámicos que describen el estado actual del algoritmo de AF por la HAL en los metadatos del resultado.
AF_STATE_INACTIVE No se hizo ningún enfoque o se restableció el algoritmo. Lens no se mueve. Siempre es el estado para MODE_OFF o MODE_EDOF. Cuando se abre el dispositivo, debe comenzar en este estado.
AF_STATE_PASSIVE_SCAN Un algoritmo de enfoque continuo está buscando un buen enfoque. La lente se está moviendo.
AF_STATE_PASSIVE_FOCused Un algoritmo de enfoque continuo cree que está bien enfocado. La lente no se mueve. Es posible que la HAL abandone este estado de manera espontánea.
AF_STATE_PASSIVE_UNFOCused Un algoritmo de enfoque continuo cree que no está bien enfocado. La lente no se mueve. Es posible que la HAL abandone este estado de manera espontánea.
AF_STATE_ACTIVE_SCAN Se está realizando un análisis activado por el usuario.
AF_STATE_FOCused_LOCKED El algoritmo de AF cree que está enfocado. La lente no se mueve.
AF_STATE_NOT_FOCused_LOCKED El algoritmo de AF no pudo enfocar. La lente no se mueve.
ANDROID_CONTROL_AF_TRIGGER Control para iniciar una búsqueda de enfoque automático, cuyo significado depende de modo y estado. Establecido por el framework en la configuración de la solicitud.
AF_TRIGGER_IDLE No hay ningún activador actual.
AF_TRIGGER_START Activar el inicio del análisis de AF. El efecto depende del modo y el estado.
AF_TRIGGER_CANCELAR Cancela el escaneo de AF actual, si corresponde, y restablece el algoritmo a la configuración predeterminada.
Entradas de metadatos adicionales
ANDROID_CONTROL_AF_REGIONS Control para seleccionar las regiones del campo visual (FOV) que deben para determinar un buen enfoque. Esto se aplica a todos los AF modos que buscan el foco. Establecido por el framework en la configuración de la solicitud.

Configuración de exposición automática y entradas de resultados

Entradas de metadatos principales
MODE DE ANDROID_CONTROL_AE_MODE Control para seleccionar el modo de exposición automática actual. Establecido por el en la configuración de la solicitud.
MODO_AEO_DESACTIVADO La exposición automática está inhabilitada. el usuario controla la exposición, la ganancia, el encuadre duración y flash.
MODO_AE_ACTIVADO Exposición automática estándar con el control de flash inhabilitado El usuario puede configurar el flash para disparar o en modo linterna.
MODO_AE_ACTIVADO_AUTOMÁTICO_FLASH Exposición automática estándar, con flash activado a discreción del HAL para la captura previa y capturar imágenes. Se inhabilitó el control del flash por parte del usuario.
MODO_AE_ACTIVADO_SIEMPRE_FLASH Exposición automática estándar, con flash siempre activado para la captura y en la HAL a discreción para la captura previa. Se inhabilitó el control del flash por parte del usuario.
MODO_ACTIVADO_AUTOMÁTICO_FLASH_REDEYE Exposición automática estándar, con flash activado a discreción del HAL para la captura previa y capturar imágenes. Usa una ráfaga de flash al final de la secuencia de captura previa para reducir los ojos rojos en la fotografía final. Se inhabilitó el control del flash por parte del usuario.
ANDROID_CONTROL_AE_STATE Metadatos dinámicos que describen el estado actual del algoritmo de AE, informado por la HAL en los metadatos del resultado.
AE_STATE_INACTIVE Estado de AE inicial después del cambio de modo. Cuando se abre el dispositivo, debe comiencen en este estado.
BÚSQUEDA DE AE_STATE El AE no se converge a un buen valor y está ajustando la exposición parámetros.
AE_STATE_CONVERGED El AE encontró buenos valores de exposición para la escena actual y el los parámetros de exposición no cambiarán. Es posible que la HAL se vaya espontáneamente actual para buscar una mejor solución.
AE_STATE_LOCKED Se bloqueó el AE con el control AE_LOCK. Los valores de exposición no son cambian.
AE_STATE_FLASH_REQUIRED, La HAL tiene una exposición convergida, pero considera que se necesita flash para una una imagen lo suficientemente brillante. Se usa para determinar si un retraso sin obturador se puede usar un marco único.
PRECAPTURE DE ESTADOUNIDENSES La HAL está en medio de una secuencia de captura previa. Según el modo de AE, este modo puede implicar activar el flash para medir o hacer una ráfaga de flash. pulsos para reducir los ojos rojos.
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER Control para iniciar una secuencia de medición antes de capturar una imagen de alta calidad imagen. Establecido por el framework en la configuración de la solicitud.
ACTIVADOR_PRECAPTURE_TRIGGER No hay ningún activador actual.
PRECAPTURE_TRIGGER_START Inicia una secuencia de captura previa. La HAL debe usar las solicitudes posteriores para medir una buena exposición o el balance de blancos para cada captura.
Entradas de metadatos adicionales
ANDROID_CONTROL_AE_LOCK Control para bloquear los controles de AE a sus valores actuales.
ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION Control para ajustar el punto de brillo objetivo del algoritmo AE.
ANDROID_CONTROL_AE_TARGET_FPS_RANGE Control para seleccionar el rango de velocidad de fotogramas objetivo para el algoritmo AE. La rutina AE no puede cambiar la velocidad de fotogramas para estar fuera de estas límites.
REGIONES_ANDROID_CONTROL_AE Control para seleccionar las regiones del FOV que se deben usar determinar buenos niveles de exposición. Esto se aplica a todos los modos de AE además de DESACTIVADO.

Configuración del balance de blancos automático y entradas de resultados

Entradas de metadatos principales
ANDROID_CONTROL_AWB_MODE Control para seleccionar el modo de balance de blancos actual.
MODO_APAGAR El balance de blancos automático está inhabilitado. El usuario controla la matriz de colores.
AWB_MODE_AUTO Se habilitó el balance de blancos automático. Los 3A controlan la transformación del color, tal vez con transformaciones más complejas que una matriz simple.
AWB_MODE_INCANDESCENT Se corrigió la configuración del balance de blancos, buena para los dispositivos incandescentes de interiores (tungsteno) la iluminación, unos 2700K.
AWB_MODE_FLUORESCENT La configuración del balance de blancos es buena para la iluminación fluorescente, 5,000,000.
AWB_MODE_WARM_FLUORESCENT La configuración del balance de blancos es buena para la iluminación fluorescente, 3,000,000.
AWB_MODE_DAYLIGHT Se corrigió la configuración de balance de blancos buena durante el día, aproximadamente 5,500 K.
AWB_MODE_CLOUDY_DAYLIGHT Se corrigió la configuración de balance de blancos buena para el día nublado, aproximadamente 6,500 K.
AWB_MODE_TWILIGHT Se corrigió la configuración de balance de blancos buena para el amanecer/cerca del atardecer, aproximadamente 15,000,000.
AWB_MODE_SHADE Se corrigió la configuración de balance de blancos buena para las áreas iluminadas indirectamente por el sol aproximadamente 7,500,000.
ANDROID_CONTROL_AWB_STATE Metadatos dinámicos que describen el estado actual del algoritmo AWB, informado por la HAL en los metadatos del resultado.
AWB_STATE_INACTIVE Estado de AWB inicial después del cambio de modo. Cuando se abre el dispositivo, debe comiencen en este estado.
BÚSQUEDA DE ESTADO DE AWB AWB no converge a un buen valor y cambia el ajuste de color. parámetros.
AWB_STATE_CONVERGED AWB encontró buenos valores de ajuste de color para la escena actual. los parámetros no cambiarán. La HAL puede abandonar espontáneamente este estado. para encontrar una mejor solución.
AWB_STATE_BLOQUEADO Se bloqueó AWB con el control AWB_LOCK. Ajuste de color los valores no cambian.
Entradas de metadatos adicionales
ANDROID_CONTROL_AWB_LOCK Control para bloquear los ajustes de color de AWB a sus valores actuales.
ANDROID_CONTROL_AWB_REGIONS Control para seleccionar las regiones del FOV que se deben usar determinar un buen equilibrio de colores. Esto se aplica solo al balance de blancos automático .

Notas de transición de la máquina de estado general

Cambiar entre los modos AF, AE o AWB siempre restablece el estado del algoritmo a INACTIVA. Del mismo modo, si alternas entre CONTROL_MODE o CONTROL_SCENE_MODE si CONTROL_MODE == USE_SCENE_MODE restablece todos los estados del algoritmo a INACTIVE.

Las tablas que aparecen a continuación corresponden a cada modo.

Máquinas de estado de AF

modo = AF_MODE_OFF o AF_MODE_EDOF
State Causa de transformación Estado nuevo Notas
INACTIVA AF inhabilitado
modo = AF_MODE_AUTO o AF_MODE_MACRO
State Causa de transformación Estado nuevo Notas
INACTIVA ACTIVADOR_AF ACTIVE_SCAN

Iniciar barrido de AF

Lens ahora está en movimiento

ACTIVE_SCAN Barrido de AF finalizado ENFOQUE_BLOQUEADO

Si AF funciona correctamente

Se bloqueó el lente

ACTIVE_SCAN Barrido de AF finalizado NOT_FOCused_LOCKED

Si AF funciona correctamente

Se bloqueó el lente

ACTIVE_SCAN AF_CANCELAR INACTIVA

Cancelar/restablecer AF

Se bloqueó el lente

ENFOQUE_BLOQUEADO AF_CANCELAR INACTIVA Cancelar/restablecer AF
ENFOQUE_BLOQUEADO ACTIVADOR_AF ACTIVE_SCAN

Comenzar una nueva barrido

Lens ahora está en movimiento

NOT_FOCused_LOCKED AF_CANCELAR INACTIVA Cancelar/restablecer AF
NOT_FOCused_LOCKED ACTIVADOR_AF ACTIVE_SCAN

Comenzar una nueva barrido

Lens ahora está en movimiento

Todos los estados Cambio de modo INACTIVA
mode = AF_MODE_CONTINUOUS_VIDEO
State Causa de transformación Estado nuevo Notas
INACTIVA La HAL inicia un análisis nuevo PASSIVE_SCAN

Iniciar barrido de AF

Lens ahora está en movimiento

INACTIVA ACTIVADOR_AF NOT_FOCused_LOCKED

Consulta de estado de AF

Se bloqueó el lente

PASSIVE_SCAN HAL completa la búsqueda actual ENFOQUE_PASIVO

Finalizar búsqueda de AF

Se bloqueó el lente

PASSIVE_SCAN ACTIVADOR_AF ENFOQUE_BLOQUEADO

Transformación inmediata si el enfoque es bueno

Se bloqueó el lente

PASSIVE_SCAN ACTIVADOR_AF NOT_FOCused_LOCKED

Transformación inmediata si el enfoque es deficiente

Se bloqueó el lente

PASSIVE_SCAN AF_CANCELAR INACTIVA

Restablecer la posición del lente

Se bloqueó el lente

ENFOQUE_PASIVO La HAL inicia un análisis nuevo PASSIVE_SCAN

Iniciar escaneo de AF

Lens ahora está en movimiento

ENFOQUE_PASIVO ACTIVADOR_AF ENFOQUE_BLOQUEADO

Transformación inmediata si el enfoque es bueno

Se bloqueó el lente

ENFOQUE_PASIVO ACTIVADOR_AF NOT_FOCused_LOCKED Transformación inmediata si el enfoque es deficiente

Se bloqueó el lente

ENFOQUE_BLOQUEADO ACTIVADOR_AF ENFOQUE_BLOQUEADO Sin efectos
ENFOQUE_BLOQUEADO AF_CANCELAR INACTIVA Reiniciar búsqueda de AF
NOT_FOCused_LOCKED ACTIVADOR_AF NOT_FOCused_LOCKED Sin efectos
NOT_FOCused_LOCKED AF_CANCELAR INACTIVA Reiniciar búsqueda de AF
modo = AF_MODE_CONTINUOUS_PICTURE
State Causa de transformación Estado nuevo Notas
INACTIVA La HAL inicia un análisis nuevo PASSIVE_SCAN

Iniciar escaneo de AF

Lens ahora está en movimiento

INACTIVA ACTIVADOR_AF NOT_FOCused_LOCKED

Consulta de estado de AF

Se bloqueó el lente

PASSIVE_SCAN HAL completa la búsqueda actual ENFOQUE_PASIVO Finalizar búsqueda de AF

Se bloqueó el lente

PASSIVE_SCAN ACTIVADOR_AF ENFOQUE_BLOQUEADO

Transformación eventual una vez que el enfoque está bien

Se bloqueó el lente

PASSIVE_SCAN ACTIVADOR_AF NOT_FOCused_LOCKED

Transformación eventual si no se puede enfocar

Se bloqueó el lente

PASSIVE_SCAN AF_CANCELAR INACTIVA

Restablecer la posición del lente

Se bloqueó el lente

ENFOQUE_PASIVO La HAL inicia un análisis nuevo PASSIVE_SCAN

Iniciar escaneo de AF

Lens ahora está en movimiento

ENFOQUE_PASIVO ACTIVADOR_AF ENFOQUE_BLOQUEADO

Transformación inmediata si el enfoque es bueno

Se bloqueó el lente

ENFOQUE_PASIVO ACTIVADOR_AF NOT_FOCused_LOCKED

Transformación inmediata si el enfoque no es adecuado

Se bloqueó el lente

ENFOQUE_BLOQUEADO ACTIVADOR_AF ENFOQUE_BLOQUEADO Sin efectos
ENFOQUE_BLOQUEADO AF_CANCELAR INACTIVA Reiniciar búsqueda de AF
NOT_FOCused_LOCKED ACTIVADOR_AF NOT_FOCused_LOCKED Sin efectos
NOT_FOCused_LOCKED AF_CANCELAR INACTIVA Reiniciar búsqueda de AF

Máquinas de estado AE y AWB

Las máquinas de estado AE y AWB son, en su mayoría, idénticas. El AE tiene acceso Estados FLASH_REQUIRED y PRECAPTURE. Las filas de abajo que hacen referencia a esas dos se deben ignorar para la máquina de estados de AWB.

mode = AE_MODE_OFF / Modo AWB no AUTO
State Causa de transformación Estado nuevo Notas
INACTIVA AE/AWB inhabilitado
mode = AE_MODE_ON_* / AWB_MODE_AUTO
State Causa de transformación Estado nuevo Notas
INACTIVA La HAL inicia la búsqueda de AE/AWB. BUSCANDO
INACTIVA AE/AWB_LOCK activado BLOQUEADO Valores bloqueados
BUSCANDO HAL finaliza la búsqueda de AE/AWB CONVERGIDOS Valores buenos, no cambia
BUSCANDO La HAL finaliza el análisis de AE. FLASH_OBLIGATORIO Convergente, pero demasiado oscura sin flash
BUSCANDO AE/AWB_LOCK activado BLOQUEADO Valores bloqueados
CONVERGIDOS La HAL inicia la búsqueda de AE/AWB. BUSCANDO Valores bloqueados
CONVERGIDOS AE/AWB_LOCK activado BLOQUEADO Valores bloqueados
FLASH_OBLIGATORIO La HAL inicia la búsqueda de AE/AWB. BUSCANDO Valores bloqueados
FLASH_OBLIGATORIO AE/AWB_LOCK activado BLOQUEADO Valores bloqueados
BLOQUEADO AE/AWB_LOCK desactivado BUSCANDO Valores negativos después del desbloqueo
BLOQUEADO AE/AWB_LOCK desactivado CONVERGIDOS Valores correctos después del desbloqueo
BLOQUEADO AE_LOCK desactivado FLASH_OBLIGATORIO La exposición es buena, pero demasiado oscura
Todos los estados de AE PRECAPTURE_START PRECAPTURA Iniciar secuencia de captura previa
PRECAPTURA Secuencia terminada, AE_LOCK desactivado CONVERGIDOS Listo para capturar imágenes de alta calidad
PRECAPTURA Secuencia completa, AE_LOCK activado BLOQUEADO Listo para capturar imágenes de alta calidad

Habilitar el control manual

Hay varios controles que también están involucrados en la configuración de los bloques 3A del dispositivo para permiten el control directo de la app.

El modelo de la HAL para el control de 3A es que, para cada solicitud, la HAL inspecciona de los campos de control de 3A. Si se habilita alguna rutina 3A, anula las variables de control relacionadas con esa rutina estos valores de anulación estarán disponibles en los metadatos de resultados para para cada captura. Por ejemplo, si la exposición automática está habilitada en una solicitud, la HAL debe reemplazar los campos exposición, ganancia y duración del fotograma (y potencialmente los campos de flash, según el modo AE) de la solicitud. El de controles relevantes es la siguiente:

Nombre del control Unidad Notas
android.control.mode. enum: OFF, AUTO, USE_SCENE_MODE Control de 3A de alto nivel. Cuando se desactiva, se desactiva el control de 3A del HAL inhabilitado. La app debe establecer los campos para los parámetros de captura. a sí mismo. Cuando se configura en AUTO, el algoritmo individual controla android.control.*, como android.control.afMode. Cuando se establece en USE_SCENE_MODE, los controles individuales de android.control.* están en su mayoría inhabilitados, y la HAL implementa uno de configuración (como ACTION, SUNSET, o PARTY) según lo desee.
android.control.afMode. enum APAGADO significa controlar la lente de forma manual enfocando android.lens.focusDistance
android.control.aeMode. enum DESACTIVADO significa controlar de forma manual la exposición, la ganancia o la duración de los fotogramas mediante android.sensor.exposureTime / .sensitivity / .frameDuration
android.control.awbMode enum DESACTIVADO significa control manual del balance de blancos.