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. |