Mentre gli attuali algoritmi 3A dipendono dall'implementazione dell'HAL, una configurazione di alto livello è definita dall'interfaccia HAL per consentire l'esecuzione dispositivo e il framework per comunicare lo stato attuale di 3A e attivare eventi 3A.
Quando il dispositivo è aperto, tutti i singoli stati 3A devono essere
STATE_INACTIVE.
La configurazione dello stream non reimposta 3A. Ad esempio, la messa a fuoco bloccata deve essere
mantenuta per tutta la chiamata a configure()
.
L'attivazione di un'azione 3A richiede semplicemente l'impostazione della voce di trigger pertinente le impostazioni per la richiesta successiva per indicare l'inizio del trigger. Ad esempio: l'attivatore per avviare una scansione della messa a fuoco automatica è l'impostazione della voce da ANDROID_CONTROL_AF_TRIGGER a ANDROID_CONTROL_AF_TRIGGER_START per una richiesta; e l'annullamento di una scansione della messa a fuoco automatica si attiva impostando Da ANDROID_CONTROL_AF_TRIGGER a ANDROID_CONTRL_AF_TRIGGER_CANCEL. In caso contrario, la voce non esisterà o sarà impostata su ANDROID_CONTROL_AF_TRIGGER_IDLE. Ciascuna richiesta con una voce di trigger impostata su un valore non IDLE verrà trattata come un evento di attivazione indipendente.
Al livello principale, 3A è controllato dall'impostazione ANDROID_CONTROL_MODE. it seleziona un numero qualsiasi di 3A (ANDROID_CONTROL_MODE_OFF), modalità AUTO normale (ANDROID_CONTROL_MODE_AUTO) e tramite l'impostazione della modalità scena (ANDROID_CONTROL_USE_SCENE_MODE):
- In modalità OFF, ogni singola messa a fuoco automatica (AF), esposizione automatica (AE) le modalità di bilanciamento automatico del bianco (AWB) sono effettivamente OFF e nessuna delle i controlli di acquisizione potrebbero essere sostituiti dalle routine 3A.
- Nella modalità AUTOMATICA, le modalità AF, AE e AWB funzionano tutte in modo indipendente algoritmi e hanno le proprie voci di modalità, stato e trigger di metadati, come indicato nella sezione successiva.
- In USE_SCENE_MODE, il valore della voce ANDROID_CONTROL_SCENE_MODE deve per determinare il comportamento delle routine 3A. In SCENE_MODE diversi da FACE_PRIORITY, l'HAL deve sostituire i valori di ANDROID_CONTROL_AE/AWB/AF_MODE in modo che sia la modalità che preferisce per i MOD_DI_SCENA. Ad esempio, l'HAL potrebbe preferire l'utilizzo di SCENE_MODE_NIGHT Modalità CONTINUOUS_FOCUS AF. Qualsiasi selezione utente di AE/AWB/AF_MODE quando si attiva la scena devono essere ignorati per queste modalità scena.
- Per SCENE_MODE_FACE_PRIORITY, i controlli AE/AWB/AFMODE funzionano come ANDROID_CONTROL_MODE_AUTO, ma le routine 3A devono essere influenzate dalla misurazione e inquadrare i volti rilevati nella scena.
Impostazioni della messa a fuoco automatica e voci dei risultati
Voci di metadati principali | |
---|---|
ANDROID_CONTROL_AF_MODE | Controllo per selezionare l'attuale modalità di messa a fuoco automatica. Impostato dal framework nelle impostazioni della richiesta. |
AF_MODE_OFF | AF disabilitata; il framework/l'app controlla direttamente la posizione dell'obiettivo. |
AF_MODE_AUTO | Messa a fuoco automatica a scansione singola. Nessun movimento dell'obiettivo a meno che non venga attivata la messa a fuoco automatica. |
AF_MODE_MACRO | Messa a fuoco automatica ravvicinata con scorrimento singolo. Nessun movimento dell'obiettivo a meno che non venga attivata la messa a fuoco automatica |
AF_MODE_CONTINUOUS_VIDEO | Messa a fuoco continua fluida per la registrazione di video. Attivazione immediata blocca la messa a fuoco nella posizione corrente. L'annullamento consente di riprendere la messa a fuoco continua. |
AF_MODE_CONTINUOUS_PICTURE | Messa a fuoco continua e veloce, per scatti a effetto zero-shutter-lag. Attivazione blocca lo stato attivo una volta terminata la pulizia attualmente attiva. Annullamento dei curriculum in corso... messa a fuoco continua. |
AF_MODE_EDOF | Messa a fuoco avanzata sulla profondità di campo. Non è disponibile la scansione automatica della messa a fuoco, quindi l'attivazione o la cancellazione di un'azione non ha alcun effetto. Le immagini sono a fuoco automaticamente dall'HAL. |
ANDROID_CONTROL_AF_STATE | Metadati dinamici che descrivono lo stato attuale dell'algoritmo AF, riportato dall'HAL nei metadati dei risultati. |
AF_STATE_INACTIVE | La messa a fuoco non è stata eseguita o l'algoritmo è stato reimpostato. L'obiettivo non si muove. Sempre lo stato per MODE_OFF o MODE_EDOF. Quando il dispositivo è aperto, deve iniziare in questo stato. |
SCANSIONE_PASSIVA_STATO_AF | Al momento un algoritmo di messa a fuoco continua sta cercando una buona messa a fuoco. L'obiettivo si sta muovendo. |
AF_STATE_PASSIVE_FOCUSATO | Un algoritmo di messa a fuoco continua ritiene che la focalizzazione sia corretta. L'obiettivo non si sposta. L'HAL potrebbe abbandonare spontaneamente questo stato. |
AF_STATE_PASSIVE_UNFOCUSATO | Un algoritmo di messa a fuoco continua ritiene che non sia ben definito. L'obiettivo non si sposta. L'HAL potrebbe abbandonare spontaneamente questo stato. |
SCANSIONE_ATTIVA_DI_STATO_AF | È in corso una scansione attivata dall'utente. |
AF_STATE_FOCUS_LOCKED_STATO | L'algoritmo di AF ritiene che sia focalizzato. L'obiettivo non si muove. |
AF_STATE_NOT_FOCUS_LOCKED | L'algoritmo di AF non è riuscito a impostare lo stato attivo. L'obiettivo non si muove. |
ANDROID_CONTROL_AF_TRIGGER | Controllo per avviare una scansione della messa a fuoco automatica, il cui significato dipende da modalità e stato. Specificato dal framework nelle impostazioni della richiesta. |
AF_TRIGGER_IDLE | Nessun trigger attuale. |
AF_TRIGGER_START | Attiva l'inizio della scansione AF. L'effetto dipende dalla modalità e dallo stato. |
AF_TRIGGER_ANNULLA | Annulla la scansione AF attuale, se presente, e ripristina l'algoritmo predefinito. |
Voci di metadati aggiuntive | |
---|---|
ANDROID_CONTROL_AF_REGIONS | Controllo per selezionare le regioni del campo visivo che devono per stabilire una buona concentrazione. Vale per tutti i PD modalità che cercano la messa a fuoco. Specificato dal framework nelle impostazioni della richiesta. |
Impostazioni dell'esposizione automatica e voci dei risultati
Voci di metadati principali | |
---|---|
ANDROID_CONTROL_AE_MODE | Controllo per selezionare l'attuale modalità di esposizione automatica. Impostato dal nelle impostazioni della richiesta. |
AE_MODE_OFF | L'esposizione automatica è disabilitata; l'utente controlla esposizione, guadagno, fotogramma durata e flash. |
AE_MODE_ON | Esposizione automatica standard, con controllo flash disattivato. L'utente può impostare il flash per accendere o spegnere la torcia. |
AE_MODE_ON_AUTO_FLASH | Esposizione automatica standard, con flash attivato a discrezione dell'HAL per la preacquisizione e acquisire ancora. Controllo utente del flash disattivato. |
AE_MODE_ON_ALWAYS_FLASH | Esposizione automatica standard, con il flash sempre attivato per l'acquisizione e all'HAL a discrezione per la preacquisizione. Controllo utente del flash disattivato. |
AE_MODE_ON_AUTO_FLASH_REDEYE | Esposizione automatica standard, con flash attivato a discrezione dell'HAL per la preacquisizione e acquisire ancora. Usa un'esplosione di flash alla fine della sequenza di preacquisizione per riduci gli occhi rossi nell'immagine finale. Controllo utente del flash disattivato. |
ANDROID_CONTROL_AE_STATE | Metadati dinamici che descrivono l'attuale stato dell'algoritmo AE, riportato da l'HAL nei metadati del risultato. |
AE_STATE_INACTIVE | Stato AE iniziale dopo il cambio di modalità. Quando il dispositivo è aperto, deve iniziano in questo stato. |
RICERCA AE_STATE | L'AE non è convergente in un buon valore e sta regolando l'esposizione parametri. |
AE_STATE_CONVERGED | L'AE ha trovato buoni valori di esposizione per la scena corrente e i parametri di esposizione non cambiano. L'HAL potrebbe abbandonare spontaneamente questo per cercare una soluzione migliore. |
AE_STATE_LOCKED | AE è stato bloccato con il controllo AE_LOCK. I valori di esposizione non sono cambiare. |
AE_STATE_FLASH_REQUIRED | L'HAL ha un'esposizione convergente ma ritiene che il flash sia necessario per una un'immagine sufficientemente chiara. Utilizzato per determinare se il ritardo di ottenimento è zero frame. |
AE_STATE_PRECAPTURE | L'HAL si trova nel mezzo di una sequenza di preacquisizione. In base alla modalità AE, questa modalità può includere l'attivazione del flash per la misurazione o l'esplosione impulsi per la riduzione degli occhi rossi. |
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER | Controllo per avviare una sequenza di misurazione prima di acquisire un video di alta qualità dell'immagine. Specificato dal framework nelle impostazioni della richiesta. |
PRECAPTURE_TRIGGER_IDLE | Nessun trigger attuale. |
PRECAPTURE_TRIGGER_START | Avvia una sequenza di preacquisizione. L'HAL deve utilizzare le richieste successive per misurare un buon bilanciamento del bianco e dell'esposizione per un'alta risoluzione futura acquisizioni. |
Voci di metadati aggiuntive | |
---|---|
ANDROID_CONTROL_AE_LOCK | Controllo per il blocco dei controlli AE ai valori correnti. |
ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION | Controllo per regolare il punto di luminosità target dell'algoritmo AE. |
INTERVALLO_FPS_ANDROID_CONTROL_AE_TARGET_FPS | Controllo per selezionare l'intervallo di frequenza fotogrammi target per l'algoritmo AE. La routine AE non può modificare la frequenza fotogrammi in modo che non superi questi valori limiti. |
ANDROID_CONTROL_AE_REGIONS | Controllo per selezionare le regioni del campo visivo da utilizzare per determinare buoni livelli di esposizione. Vale per tutte le modalità AE oltre a OFF. |
Impostazioni di bilanciamento automatico del bianco e voci dei risultati
Voci di metadati principali | |
---|---|
ANDROID_CONTROL_AWB_MODE (MODALITÀ_AWB) | Controllo per selezionare l'attuale modalità di bilanciamento del bianco. |
AWB_MODE_OFF | Il bilanciamento automatico del bianco è disattivato. Matrice dei colori dei controlli utente. |
AWB_MODE_AUTO | Il bilanciamento automatico del bianco è attivo; Trasformazione colore controlli 3A, utilizzando probabilmente trasformazioni più complesse rispetto a una semplice matrice. |
INCANDESCENT_MODALITÀ_AWB | Impostazioni di bilanciamento del bianco fisse, ideali per gli ambienti interni a incandescenza (tungsteno) di circa 2700 K. |
AWB_MODE_FLUORESCENT | Impostazioni di bilanciamento del bianco fisse ideali per l'illuminazione fluorescente, approssimativamente 5000K. |
AWB_MODE_WARM_FLUORESCENT | Impostazioni di bilanciamento del bianco fisse ideali per l'illuminazione fluorescente, approssimativamente 3000K. |
AWB_MODE_DAYLIGHT | Le impostazioni di bilanciamento del bianco fisse sono ideali per la luce diurna, a circa 5500 K. |
AWB_MODE_CLOUDY_DAYLIGHT | Le impostazioni di bilanciamento del bianco fisse sono adatte a una luce diurna nuvolosa, di circa 6500 K. |
MODALITÀ_AWB_TWILIGHT | Il bilanciamento del bianco fisso è ideale per quasi al tramonto o all'alba, più o meno 15.000 K. |
SHADE_MODALITÀ_AWB | Le impostazioni di bilanciamento del bianco fisse sono ideali per aree illuminate indirettamente dal sole. circa 7500.000. |
STATO_DI_CONTROLLO_ANDROID_AWB | Metadati dinamici che descrivono lo stato attuale dell'algoritmo AWB, riportato da l'HAL nei metadati del risultato. |
AWB_STATE_INACTIVE | Stato AWB iniziale dopo il cambio di modalità. Quando il dispositivo è aperto, deve iniziano in questo stato. |
RICERCA STATALE_AWB | La convergenza di AWB non è un buon valore e sta modificando la regolazione del colore parametri. |
AWB_STATE_CONVERGED | AWB ha trovato buoni valori di regolazione del colore per la scena corrente e i parametri non cambiano. L'HAL può abbandonare spontaneamente questo stato per cercare una soluzione migliore. |
AWB_STATE_LOCKED | AWB è stato bloccato con il controllo AWB_LOCK. Regolazione del colore i valori non cambiano. |
Voci di metadati aggiuntive | |
---|---|
LOCK_CONTROL_AWB_LOCK | Controllo per il blocco delle regolazioni dei colori di AWB ai valori correnti. |
ANDROID_CONTROL_AWB_REGIONS | Controllo per la selezione delle regioni del campo visivo da utilizzare per determinare un buon bilanciamento del colore. Si applica solo al bilanciamento automatico del bianco . |
Note generali sulla transizione delle macchine dello stato
Al passaggio tra le modalità AF, AE o AWB, lo stato dell'algoritmo viene sempre reimpostato INATTIVO. Analogamente, il passaggio da CONTROL_MODE a CONTROL_SCENE_MODE CONTROL_MODE == USE_SCENE_MODE reimposta tutti gli stati dell'algoritmo su INACTIVE.
Le tabelle seguenti sono in base alla modalità.
Macchine a stato AF
modalità = AF_MODE_OFF o AF_MODE_EDOF | |||
---|---|---|---|
Stato | Causa della trasformazione | Nuovo stato | Note |
NON ATTIVO | AF disabilitata |
modalità = AF_MODE_AUTO o AF_MODE_MACRO | |||
---|---|---|---|
Stato | Causa della trasformazione | Nuovo stato | Note |
NON ATTIVO | AF_TRIGGER | SCANSIONE_ATTIVA | Avvia scansione AF Lens ora in movimento |
SCANSIONE_ATTIVA | Ricerca AF completata | FOCUS_BLOCCATO | Se PD ha esito positivo Obiettivo ora bloccato |
SCANSIONE_ATTIVA | Ricerca AF completata | NON_FOCUSATO_BLOCCATO | Se PD ha esito positivo Obiettivo ora bloccato |
SCANSIONE_ATTIVA | AF_ANNULLA | NON ATTIVO | Annulla/ripristina AF Obiettivo ora bloccato |
FOCUS_BLOCCATO | AF_ANNULLA | NON ATTIVO | Annulla/ripristina AF |
FOCUS_BLOCCATO | AF_TRIGGER | SCANSIONE_ATTIVA | Inizia una nuova ricerca Lens ora in movimento |
NON_FOCUSATO_BLOCCATO | AF_ANNULLA | NON ATTIVO | Annulla/ripristina AF |
NON_FOCUSATO_BLOCCATO | AF_TRIGGER | SCANSIONE_ATTIVA | Inizia una nuova ricerca Lens ora in movimento |
Tutti gli stati | Cambio modalità | NON ATTIVO |
modalità = AF_MODE_CONTINUOUS_VIDEO | |||
---|---|---|---|
Stato | Causa della trasformazione | Nuovo stato | Note |
NON ATTIVO | L'HAL avvia una nuova scansione | SCANSIONE_PASSIVA | Avvia scansione AF Lens ora in movimento |
NON ATTIVO | AF_TRIGGER | NON_FOCUSATO_BLOCCATO | Query sullo stato AF Obiettivo ora bloccato |
SCANSIONE_PASSIVA | L'HAL completa la scansione corrente | OBIETTIVO_PASSIVO | Termina scansione AF Obiettivo ora bloccato |
SCANSIONE_PASSIVA | AF_TRIGGER | FOCUS_BLOCCATO | Trasformazione immediata se la messa a fuoco è buona Obiettivo ora bloccato |
SCANSIONE_PASSIVA | AF_TRIGGER | NON_FOCUSATO_BLOCCATO | Trasformazione immediata se la messa a fuoco è scadente Obiettivo ora bloccato |
SCANSIONE_PASSIVA | AF_ANNULLA | NON ATTIVO | Reimposta la posizione dell'obiettivo Obiettivo ora bloccato |
OBIETTIVO_PASSIVO | L'HAL avvia una nuova scansione | SCANSIONE_PASSIVA | Avvia scansione AF Lens ora in movimento |
OBIETTIVO_PASSIVO | AF_TRIGGER | FOCUS_BLOCCATO | Trasformazione immediata se la messa a fuoco è buona Obiettivo ora bloccato |
OBIETTIVO_PASSIVO | AF_TRIGGER | NON_FOCUSATO_BLOCCATO | Trasformazione immediata
se la messa a fuoco è scadente
Obiettivo ora bloccato |
FOCUS_BLOCCATO | AF_TRIGGER | FOCUS_BLOCCATO | Nessun effetto |
FOCUS_BLOCCATO | AF_ANNULLA | NON ATTIVO | Riavvia scansione AF |
NON_FOCUSATO_BLOCCATO | AF_TRIGGER | NON_FOCUSATO_BLOCCATO | Nessun effetto |
NON_FOCUSATO_BLOCCATO | AF_ANNULLA | NON ATTIVO | Riavvia scansione AF |
modalità = AF_MODE_CONTINUOUS_PICTURE | |||
---|---|---|---|
Stato | Causa della trasformazione | Nuovo stato | Note |
NON ATTIVO | L'HAL avvia una nuova scansione | SCANSIONE_PASSIVA | Avvia scansione AF Lens ora in movimento |
NON ATTIVO | AF_TRIGGER | NON_FOCUSATO_BLOCCATO | Query sullo stato AF Obiettivo ora bloccato |
SCANSIONE_PASSIVA | L'HAL completa la scansione corrente | OBIETTIVO_PASSIVO | Termina scansione AF
Obiettivo ora bloccato |
SCANSIONE_PASSIVA | AF_TRIGGER | FOCUS_BLOCCATO | Trasformazione finale dopo aver puntato bene Obiettivo ora bloccato |
SCANSIONE_PASSIVA | AF_TRIGGER | NON_FOCUSATO_BLOCCATO | Trasformazione finale se non è possibile concentrarsi Obiettivo ora bloccato |
SCANSIONE_PASSIVA | AF_ANNULLA | NON ATTIVO | Reimposta la posizione dell'obiettivo Obiettivo ora bloccato |
OBIETTIVO_PASSIVO | L'HAL avvia una nuova scansione | SCANSIONE_PASSIVA | Avvia scansione AF Lens ora in movimento |
OBIETTIVO_PASSIVO | AF_TRIGGER | FOCUS_BLOCCATO | Trasformazione immediata se l'attenzione è buona Obiettivo ora bloccato |
OBIETTIVO_PASSIVO | AF_TRIGGER | NON_FOCUSATO_BLOCCATO | Trasformazione immediata se l'attenzione è scarsa Obiettivo ora bloccato |
FOCUS_BLOCCATO | AF_TRIGGER | FOCUS_BLOCCATO | Nessun effetto |
FOCUS_BLOCCATO | AF_ANNULLA | NON ATTIVO | Riavvia scansione AF |
NON_FOCUSATO_BLOCCATO | AF_TRIGGER | NON_FOCUSATO_BLOCCATO | Nessun effetto |
NON_FOCUSATO_BLOCCATO | AF_ANNULLA | NON ATTIVO | Riavvia scansione AF |
Macchine a stato AE e AWB
Le macchine a stato AE e AWB sono per lo più identiche. L'AE ha ulteriori Stati FLASH_REQUIRED e PRECAPTURE. Le righe più in basso si riferiscono a queste due devono essere ignorati per la macchina a stati AWB.
modalità = AE_MODE_OFF / modalità AWB non AUTO | |||
---|---|---|---|
Stato | Causa della trasformazione | Nuovo stato | Note |
NON ATTIVO | AE/AWB disattivati |
modalità = AE_MODE_ON_* / AWB_MODE_AUTO | |||
---|---|---|---|
Stato | Causa della trasformazione | Nuovo stato | Note |
NON ATTIVO | L'HAL avvia la scansione AE/AWB | RICERCA IN CORSO | |
NON ATTIVO | AE/AWB_LOCK attivato | BLOCCATO | Valori bloccati |
RICERCA IN CORSO | L'HAL termina la scansione AE/AWB | CONVERSO | Buoni valori, senza cambiare |
RICERCA IN CORSO | L'HAL termina la scansione AE | FLASH_REQUIRED | Convergente ma troppo scuro senza flash |
RICERCA IN CORSO | AE/AWB_LOCK attivato | BLOCCATO | Valori bloccati |
CONVERSO | L'HAL avvia la scansione AE/AWB | RICERCA IN CORSO | Valori bloccati |
CONVERSO | AE/AWB_LOCK attivato | BLOCCATO | Valori bloccati |
FLASH_REQUIRED | L'HAL avvia la scansione AE/AWB | RICERCA IN CORSO | Valori bloccati |
FLASH_REQUIRED | AE/AWB_LOCK attivato | BLOCCATO | Valori bloccati |
BLOCCATO | AE/AWB_LOCK disattivato | RICERCA IN CORSO | Valori non validi dopo lo sblocco |
BLOCCATO | AE/AWB_LOCK disattivato | CONVERSO | Valori validi dopo lo sblocco |
BLOCCATO | AE_LOCK disattivato | FLASH_REQUIRED | Esposizione buona, ma troppo scura |
Tutti gli stati AE | PRECAPTURE_START | PREACTURA | Avvia sequenza di preacquisizione |
PREACTURA | Sequenza completata, AE_LOCK disattivato | CONVERSO | Pronto per acquisire immagini di alta qualità |
PREACTURA | Sequenza completata, AE_LOCK attivato | BLOCCATO | Pronto per acquisire immagini di alta qualità |
Attiva il controllo manuale
Diversi controlli sono coinvolti anche nella configurazione dei blocchi 3A del dispositivo per consentono il controllo diretto dell'app.
Il modello HAL per il controllo 3A è che, per ogni richiesta, l'HAL controlla dei campi del controllo 3A. Se è abilitata una routine 3A, La routine sostituisce le variabili di controllo correlate alla routine in questione. questi valori di override sono quindi disponibili nei metadati dei risultati relativi acquisizioni. Quindi, ad esempio, se l'esposizione automatica è abilitata in una richiesta, l'HAL devono sovrascrivere i campi esposizione, guadagno e durata del fotogramma (e potenzialmente i campi flash, a seconda della modalità AE) della richiesta. La dei controlli pertinenti è:
Nome controllo | Unità | Note |
---|---|---|
android.control.mode | enum: OFF, AUTO, USE_SCENE_MODE | Controllo 3A di alto livello. Se impostato su OFF, tutti i controlli 3A dell'HAL vengono disattivata. L'app deve impostare i campi per i parametri di acquisizione per trovare le regole. Se impostato su AUTO, i singoli algoritmi controllano il android.control.*, ad esempio android.control.afMode. Se impostato su USE_SCENE_MODE, i singoli controlli in android.control.* sono per lo più disattivate e l'HAL implementa una delle modalità le impostazioni (come ACTION, SUNSET o PARTY) in base alle tue esigenze. |
android.control.afMode | enum | Spento significa controllo manuale dell'obiettivo concentrandoti su android.lens.focusDistance. |
android.control.aeMode | enum | OFF significa che il controllo manuale dell'esposizione/dell'ottenimento/della durata dei fotogrammi android.sensor.exposureTime / .sensitivity / .frameDuration |
android.control.awbMode | enum | OFF indica il controllo manuale del bilanciamento del bianco. |