Videocamera HAL

L'HAL (Camera Hardware Astrazione Layer) di Android connette le porte di le API del framework della videocamera android.hardware.camera2 all'hardware e al driver della videocamera. A partire da Android 13, interfaccia HAL della fotocamera di sviluppo usa AIDL. Introduzione di Android 8.0 Alti, passando dall'API Camera HAL su un'interfaccia stabile definita dal protocollo HIDL (interfaccia HIDL) dell'HAL. Se avete precedentemente sviluppato un modulo e un driver per fotocamera HAL per Android 7.0 e meno, tieni presente i casi significativi modifiche nella pipeline della videocamera.

HAL per fotocamera AIDL

Per i dispositivi con Android 13 o versioni successive, la fotocamera include il supporto per gli HAL per fotocamere AIDL. Il framework della fotocamera supporta gli HAL per fotocamere HIDL, tuttavia le funzionalità della fotocamera sono state aggiunte Android 13 o versioni successive sono disponibili solo tramite il Interfacce HAL della fotocamera AIDL. Per implementare queste funzionalità sui dispositivi che eseguono l'upgrade a Android 13 o versioni successive, i produttori di dispositivi devono migrare il processo HAL dall'utilizzo delle interfacce delle fotocamere HIDL alla fotocamera AIDL interfacce.

Per scoprire i vantaggi dell'AIDL, vedi AIDL per HAL.

Implementazione dell'HAL per fotocamera AIDL

Per un'implementazione di riferimento di una HAL per fotocamera AIDL, vedi hardware/google/camera/common/hal/aidl_service/.

Le specifiche HAL della fotocamera AIDL si trovano nelle seguenti posizioni:

Per i dispositivi che eseguono la migrazione ad AIDL, i produttori potrebbero dover modificare Criterio SELinux di Android (sepolicy) e file RC a seconda del codice alla struttura del centro di costo.

Convalida HAL per fotocamera AIDL

Per testare l'implementazione dell'HAL della fotocamera AIDL, assicurati che il dispositivo superi tutti Test CTS e VTS. Android 13 introduce l'AIDL VTS test, VtsAidlHalCameraProvider_TargetTest.cpp.

Funzionalità della fotocamera HAL3

Lo scopo della riprogettazione dell'API Android Camera è quello di aumentare in modo significativo la possibilità delle app di controllare il sottosistema della fotocamera sui dispositivi Android a riorganizzare l'API per renderla più efficiente e gestibile. L'ulteriore semplifica lo sviluppo di app per fotocamera di alta qualità su Android dispositivi in grado di funzionare in modo affidabile su più prodotti continuando a utilizzare specifici dei dispositivi, ove possibile, per massimizzare la qualità e le prestazioni dei dispositivi.

La versione 3 del sottosistema della fotocamera struttura le modalità operative in una visualizzazione unificata, che può essere utilizzata per implementare una qualsiasi delle modalità precedenti e molti altri, come la modalità raffica. Ciò si traduce in un migliore controllo da parte dell'utente messa a fuoco ed esposizione e altre attività di post-elaborazione, come la riduzione del rumore, il contrasto e l'aumento della nitidezza. Inoltre, questa visualizzazione semplificata semplifica l'applicazione agli sviluppatori di usare le varie funzioni della videocamera.

L'API modella il sottosistema della fotocamera come una pipeline che converte in entrata richieste di acquisizione di frame nei frame, con un rapporto 1:1. Le richieste Incapsulare tutte le informazioni di configurazione relative all'acquisizione e all'elaborazione frame. Sono inclusi la risoluzione e il formato dei pixel. sensore manuale, obiettivo e flash controllo; Modalità operative 3A; Controllo di elaborazione RAW->YUV; generazione di statistiche; e così via.

In parole povere, il framework dell'applicazione richiede un fotogramma alla fotocamera e il sottosistema della videocamera restituisce i risultati a uno stream di output. Nel Inoltre, i metadati che contengono informazioni quali spazi colore e obiettivo viene generato lo ombreggiamento per ogni insieme di risultati. Pensa alla versione 3 della fotocamera come pipeline al flusso unidirezionale della versione 1 della videocamera. Converte ogni acquisizione richiesta in un'immagine acquisita dal sensore, che viene elaborata in:

  • Un oggetto risultato con metadati relativi all'acquisizione.
  • Da uno a N buffer di dati immagine, ciascuno nella propria superficie di destinazione.

L'insieme di possibili piattaforme di output è preconfigurato:

  • Ogni superficie è la destinazione di un flusso di buffer di immagine di un risoluzione del problema.
  • È possibile configurare contemporaneamente solo un numero limitato di piattaforme come output (~3).

Una richiesta contiene tutte le impostazioni di acquisizione desiderate e l'elenco di output piattaforme in cui eseguire il push dei buffer di immagine per questa richiesta (dal totale configurato). Una richiesta può essere one-shot (con capture()) oppure può essere ripetuto all'infinito (con setRepeatingRequest()). Acquisizioni hanno la priorità sulle richieste ripetute.

Modello dei dati della fotocamera

Figura 1. Modello operativo principale della fotocamera

Panoramica della fotocamera HAL1

La versione 1 del sottosistema delle fotocamere è stata progettata come una scatola nera con di controllo e le tre seguenti modalità operative:

  • Anteprima
  • Registrazione video
  • Acquisisci ancora

Ogni modalità ha funzionalità leggermente diverse e che si sovrappongono. Ce l'ha fatta difficili da implementare nuove funzionalità, come la modalità burst, che rientra tra due di le modalità operative.

Diagramma a blocchi di una videocamera

Figura 2. Componenti della videocamera

Android 7.0 continua a supportare la fotocamera HAL1, poiché molti dispositivi si affidano ancora li annotino. Inoltre, il servizio di fotocamera Android supporta l'implementazione di entrambi gli HAL (1 e 3), che è utile quando vuoi supportare un dispositivo frontale con fotocamera HAL1 e fotocamera posteriore più avanzata con fotocamera HAL3.

È disponibile un modulo HAL per videocamera singola (con un versione numero), che elenca più videocamere indipendenti con ciascuna il proprio numero di versione. Per il supporto è richiesto il modulo Fotocamera 2 o versioni successive 2 o più recenti e i moduli della videocamera possono avere una combinazione di dispositivi (questo è ciò che intendiamo quando diciamo che Android supporta l'implementazione HAL).