camera_info Struct Reference

camera_info Struct Reference

#include < camera_common.h >

Campi dati

int di fronte
int orientamento
uint32_t device_version
const camera_metadata_t * static_camera_characteristics
int resource_cost
char ** dispositivi_conflittuali
size_t conflting_devices_length

Descrizione dettagliata

Definizione alla riga 161 del file camera_common.h .

Documentazione sul campo

char ** conflting_devices

Un array di ID dispositivo fotocamera rappresentati come stringhe con terminazione NULL che indicano altri dispositivi che non possono essere aperti contemporaneamente mentre questo dispositivo fotocamera è in uso.

Questo campo deve essere utilizzato per indicare che questo dispositivo della fotocamera è un composto di diversi altri dispositivi della fotocamera o che ha dipendenze hardware che ne impediscono l'uso simultaneo. Se non ci sono dipendenze, in questo campo può essere restituito un NULL per indicarlo.

Il servizio fotocamera non aprirà mai contemporaneamente nessuno dei dispositivi in ​​questo elenco mentre questo dispositivo fotocamera è aperto.

Le stringhe indicate in questo campo non verranno pulite dal servizio della fotocamera e devono rimanere mentre il dispositivo è collegato.

Informazioni sulla versione (basate su camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o inferiore:

Non valido. Si può presumere che sia NULL. Non leggere questo campo.

CAMERA_MODULE_API_VERSION_2_4 o versione successiva:

Sempre valido.

Definizione alla riga 404 del file camera_common.h .

size_t conflting_devices_length

La lunghezza dell'array fornita nel campo conflting_devices.

Informazioni sulla versione (basate su camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o inferiore:

Non valido. Si può presumere che sia 0. Non leggere questo campo.

CAMERA_MODULE_API_VERSION_2_4 o superiore:

Sempre valido.

Definizione alla riga 419 del file camera_common.h .

uint32_t device_version

Il valore di camera_device_t.common.version.

Informazioni sulla versione (basate su camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Non valido. Si può presumere che sia CAMERA_DEVICE_API_VERSION_1_0. Non leggere questo campo.

CAMERA_MODULE_API_VERSION_2_0 o superiore:

Sempre valido

Definizione alla riga 219 del file camera_common.h .

int fronte

La direzione verso la quale è rivolta la telecamera. Vedi system / core / include / system / camera.h per le definizioni di fronte alla telecamera.

Informazioni sulla versione (basate su camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o inferiore:

Dovrebbe essere CAMERA_FACING_BACK o CAMERA_FACING_FRONT.

CAMERA_MODULE_API_VERSION_2_4 o superiore:

Dovrebbe essere CAMERA_FACING_BACK, CAMERA_FACING_FRONT o CAMERA_FACING_EXTERNAL.

Definizione alla riga 177 del file camera_common.h .

orientamento int

L'orientamento dell'immagine della telecamera. Il valore è l'angolo con cui l'immagine della telecamera deve essere ruotata in senso orario in modo che venga visualizzata correttamente sul display nel suo orientamento naturale. Dovrebbe essere 0, 90, 180 o 270.

Ad esempio, supponiamo che un dispositivo abbia uno schermo naturalmente alto. Il sensore della fotocamera posteriore è montato in orizzontale. Stai guardando lo schermo. Se il lato superiore del sensore della fotocamera è allineato con il bordo destro dello schermo in orientamento naturale, il valore dovrebbe essere 90. Se il lato superiore del sensore della fotocamera anteriore è allineato con il lato destro dello schermo, il valore dovrebbe essere 270.

Informazioni sulla versione (basate su camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o inferiore:

Valido in tutte le versioni camera_module .

CAMERA_MODULE_API_VERSION_2_4 o superiore:

Valido se la visuale della fotocamera è CAMERA_FACING_BACK o CAMERA_FACING_FRONT, non valida se la visuale della fotocamera è CAMERA_FACING_EXTERNAL.

Definizione alla riga 202 del file camera_common.h .

int resource_cost

Il "costo" della risorsa totale per l'utilizzo di questa telecamera, rappresentato come un valore intero nell'intervallo [0, 100] dove 100 rappresenta l'utilizzo totale della risorsa condivisa che è il collo di bottiglia limitante del sottosistema della telecamera. Questa può essere una stima molto approssimativa e viene utilizzata come suggerimento per il servizio fotocamera per determinare quando impedire a più applicazioni di aprire contemporaneamente diverse telecamere pubblicizzate dal servizio fotocamera.

Il servizio telecamera deve essere in grado di aprire e utilizzare simultaneamente qualsiasi combinazione di dispositivi telecamera esposti dall'HAL in cui la somma dei costi in risorse di queste telecamere è <= 100. Per determinare il costo, si deve presumere che ciascun dispositivo telecamera sia configurato e funzionante con le impostazioni di framerate e dimensioni del flusso che consumano al massimo le risorse disponibili nelle impostazioni di configurazione esposte per quel dispositivo attraverso i metadati della telecamera.

Il servizio fotocamera può ancora tentare di aprire contemporaneamente combinazioni di dispositivi fotocamera con un costo totale delle risorse> 100. Ciò può avere successo o fallire. Se l'operazione riesce, le combinazioni di configurazioni che non sono supportate a causa dei vincoli di risorse derivanti dall'avere più dispositivi aperti dovrebbero fallire durante le chiamate di configurazione. Se il costo totale delle risorse è <= 100, l'apertura e la configurazione non dovrebbero mai fallire per le impostazioni di configurazione del flusso o altre funzionalità del dispositivo che normalmente avrebbero successo per un dispositivo quando è l'unico dispositivo della fotocamera aperto.

Questo campo verrà utilizzato per determinare se le applicazioni in background possono utilizzare questo dispositivo della fotocamera mentre altre applicazioni utilizzano altri dispositivi della fotocamera. Nota: il servizio fotocamera non consentirà mai a più applicazioni di aprire contemporaneamente lo stesso dispositivo fotocamera.

Esempi di casi d'uso:

Ex. 1: dispositivo fotocamera 0 = dispositivo fotocamera fotocamera posteriore 1 = fotocamera anteriore

  • L'utilizzo di entrambi i dispositivi della fotocamera causa un notevole rallentamento della frequenza dei fotogrammi a causa della larghezza di banda limitata dell'ISP.

Configurazione:

Dispositivo fotocamera 0 - resource_cost = 51 conflting_devices = null Dispositivo fotocamera 1 - resource_cost = 51 conflting_devices = null

Risultato:

Poiché la somma dei costi delle risorse è> 100, se un'applicazione con priorità più alta ha uno dei dispositivi aperti, il servizio della telecamera non consentirà alle applicazioni con priorità più bassa di aprire nessuno dei due dispositivi. Se un'applicazione con priorità più bassa utilizza un dispositivo che successivamente tenta di aprire una priorità più alta, l'applicazione con priorità più bassa sarà costretta a disconnettere il dispositivo.

Se l'applicazione con la priorità più alta sceglie, può comunque tentare di aprire entrambi i dispositivi (poiché questi dispositivi non sono elencati come in conflitto nei campi conflting_devices), ma l'utilizzo di questi dispositivi potrebbe non riuscire nelle chiamate open o configure.

Ex. 2: Dispositivo videocamera 0 = Dispositivo videocamera posteriore sinistro 1 = Dispositivo videocamera posteriore destro 2 = Videocamera stereo combinata che utilizza i sensori della videocamera posteriore destro e sinistro utilizzati dai dispositivi 0 e 1 Dispositivo videocamera 3 = Videocamera anteriore

  • A causa di vincoli hardware, possono essere aperte fino a due telecamere contemporaneamente. La fotocamera stereo combinata non può mai essere utilizzata contemporaneamente a nessuno dei due dispositivi della fotocamera posteriore (dispositivo 0, 1) e in genere richiede troppa larghezza di banda per essere utilizzata contemporaneamente alla fotocamera anteriore (dispositivo 3).

Configurazione:

Camera Device 0 - resource_cost = 50 conflting_devices = {2} Camera Device 1 - resource_cost = 50 conflting_devices = {2} Camera Device 2 - resource_cost = 100 conflting_devices = {0, 1} Camera Device 3 - resource_cost = 50 conflting_devices = null

Risultato:

In base ai campi conflting_devices, il servizio fotocamera garantisce che i seguenti set di dispositivi aperti non saranno mai consentiti: {1, 2}, {0, 2}.

In base ai campi resource_cost, se un'applicazione in primo piano ad alta priorità utilizza il dispositivo della fotocamera 0, un'applicazione in background potrebbe aprire il dispositivo della fotocamera 1 o 3 (ma sarebbe costretta a scollegarlo di nuovo se l'applicazione in primo piano aprisse un altro dispositivo).

L'applicazione con la priorità più alta può ancora tentare di aprire simultaneamente i dispositivi 0, 2 e 3, ma l'HAL potrebbe non riuscire nell'apertura o configurare le chiamate per questa combinazione.

Ex. 3: Dispositivo fotocamera 0 = Dispositivo fotocamera posteriore 1 = Dispositivo fotocamera anteriore 2 = Fotocamera anteriore a bassa potenza che utilizza lo stesso sensore del dispositivo 1, ma espone solo risoluzioni del flusso di immagini che possono essere utilizzate in modalità a basso consumo

  • L'utilizzo simultaneo di entrambe le fotocamere anteriori (dispositivo 1, 2) è impossibile a causa di un sensore fisico condiviso. L'utilizzo della fotocamera posteriore e anteriore "ad alta potenza" (dispositivo 1) potrebbe essere impossibile per alcune configurazioni di streaming a causa di limitazioni hardware, ma è sempre possibile utilizzare l'opzione della fotocamera anteriore "a bassa potenza" in quanto dispone di hardware speciale dedicato.

    Configurazione:

    Dispositivo fotocamera 0 - resource_cost = 100 conflting_devices = null Dispositivo fotocamera 1 - resource_cost = 100 conflting_devices = {2} Dispositivo fotocamera 2 - resource_cost = 0 conflting_devices = {1} Risultato:

    In base ai campi conflting_devices, il servizio della fotocamera garantisce che i seguenti set di dispositivi aperti non saranno mai consentiti: {1, 2}.

    In base ai campi resource_cost, solo l'applicazione con la priorità più alta può tentare di aprire contemporaneamente il dispositivo 0 e 1. Se un'applicazione con priorità più alta non utilizza il dispositivo 1 o 2, un'applicazione in background con priorità bassa potrebbe aprire il dispositivo 2 (ma sarà costretta a disconnetterlo se un'applicazione con priorità più alta successivamente apre il dispositivo 1 o 2).

Informazioni sulla versione (basate su camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o inferiore:

Non valido. Si può presumere che sia 100. Non leggere questo campo.

CAMERA_MODULE_API_VERSION_2_4 o superiore:

Sempre valido.

Definizione alla riga 376 del file camera_common.h .

const camera_metadata_t * static_camera_characteristics

Le caratteristiche fisse della telecamera, che includono tutti i metadati statici della telecamera specificati in system / media / camera / docs / docs.html. Dovrebbe essere un buffer di metadati ordinato e non può essere modificato o liberato dal chiamante. Il puntatore dovrebbe rimanere valido per tutta la durata del modulo della fotocamera e i suoi valori potrebbero non cambiare dopo essere stato restituito da get_camera_info ().

Informazioni sulla versione (basate su camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Non valido. Le caratteristiche extra non sono disponibili. Non leggere questo campo.

CAMERA_MODULE_API_VERSION_2_0 o superiore:

Valido se device_version> = CAMERA_DEVICE_API_VERSION_2_0. Non leggere altrimenti.

Definizione alla riga 241 del file camera_common.h .


La documentazione per questa struttura è stata generata dal seguente file: