riferimento alla struttura camera_info
#include < camera_common.h >
Campi dati | |
int | affrontare |
int | orientamento |
uint32_t | versione_dispositivo |
const camera_metadata_t * | static_camera_caratteristiche |
int | costo_risorsa |
carattere ** | dispositivi_in conflitto |
taglia_t | lunghezza_dispositivi_conflittuali |
Descrizione dettagliata
Definizione alla riga 161 del file camera_common.h .
Documentazione sul campo
char**dispositivi_conflittuali |
Un array di ID dispositivo fotocamera rappresentato 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 fotocamera è un composto di diversi altri dispositivi fotocamera o che presenta comunque dipendenze hardware che ne impediscono l'utilizzo 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 cancellate dal servizio della fotocamera e dovranno rimanere finché il dispositivo è collegato.
Informazioni sulla versione (basate su camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 o precedente:
Non valido. Si può presumere che sia NULL. Non leggere questo campo.
CAMERA_MODULE_API_VERSION_2_4 o successiva:
Sempre valido.
Definizione alla riga 404 del file camera_common.h .
size_t lunghezza_dispositivi_conflittuali |
La lunghezza dell'array fornita nel campo conflitti_devices.
Informazioni sulla versione (basate su camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 o precedente:
Non valido. Si può presumere che sia 0. Non leggere questo campo.
CAMERA_MODULE_API_VERSION_2_4 o successiva:
Sempre valido.
Definizione alla riga 419 del file camera_common.h .
uint32_t versione_dispositivo |
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 successiva:
Sempre valido
Definizione alla riga 219 del file camera_common.h .
int di fronte |
La direzione verso cui è rivolta la fotocamera. Vedi system/core/include/system/camera.h per le definizioni di fronte alla fotocamera.
Informazioni sulla versione (basate su camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 o precedente:
Dovrebbe essere CAMERA_FACING_BACK o CAMERA_FACING_FRONT.
CAMERA_MODULE_API_VERSION_2_4 o successiva:
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 di 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 frontale è 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 precedente:
Valido in tutte le versioni camera_module .
CAMERA_MODULE_API_VERSION_2_4 o successiva:
Valido se l'orientamento della fotocamera è CAMERA_FACING_BACK o CAMERA_FACING_FRONT, non valido se l'orientamento della fotocamera è CAMERA_FACING_EXTERNAL.
Definizione alla riga 202 del file camera_common.h .
int costo_risorsa |
Il "costo" totale della risorsa per l'utilizzo di questa fotocamera, rappresentato come un valore intero nell'intervallo [0, 100] dove 100 rappresenta l'utilizzo totale della risorsa condivisa che costituisce il collo di bottiglia limitante del sottosistema della fotocamera. Potrebbe trattarsi di una stima molto approssimativa e viene utilizzata come suggerimento al servizio di fotocamera per determinare quando impedire a più applicazioni di aprire contemporaneamente diverse fotocamere pubblicizzate dal servizio di 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 delle risorse di queste telecamere è <= 100. Per determinare il costo, si deve presupporre che ciascun dispositivo telecamera sia configurato e funzionante alle impostazioni di framerate e dimensione del flusso che consumano al massimo le risorse disponibili nelle impostazioni di configurazione esposte per quel dispositivo attraverso i metadati della fotocamera.
Il servizio fotocamera potrebbe comunque tentare di aprire simultaneamente combinazioni di dispositivi fotocamera con un costo totale delle risorse > 100. L'operazione potrebbe avere esito positivo o negativo. Se l'operazione ha esito positivo, 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 per altre funzionalità del dispositivo che normalmente avrebbero esito positivo per un dispositivo quando è l'unico dispositivo fotocamera aperto.
Questo campo verrà utilizzato per determinare se le applicazioni in background possono utilizzare questo dispositivo fotocamera mentre altre applicazioni utilizzano altri dispositivi fotocamera. Nota: il servizio fotocamera non consentirà mai a più applicazioni di aprire contemporaneamente lo stesso dispositivo fotocamera.
Casi d'uso di esempio:
Ex. 1: Dispositivo fotocamera 0 = Dispositivo fotocamera posteriore 1 = Fotocamera anteriore
- L'utilizzo di entrambi i dispositivi fotocamera provoca un notevole rallentamento del framerate a causa della larghezza di banda limitata dell'ISP.
Configurazione:
Dispositivo telecamera 0 - costo_risorse = 51 dispositivi_conflittuali = null Dispositivo telecamera 1 - costo_risorse = 51 dispositivi_conflittuali = null
Risultato:
Poiché la somma dei costi delle risorse è > 100, se un'applicazione con priorità più alta ha uno dei dispositivi aperti, il servizio fotocamera non consentirà ad alcuna applicazione con priorità più bassa di aprire nessuno dei due dispositivi. Se un'applicazione con priorità più bassa utilizza un dispositivo che successivamente un'applicazione con priorità più alta tenta di aprire, l'applicazione con priorità più bassa sarà costretta a disconnettere il dispositivo.
Se l'applicazione con la priorità più alta sceglie, potrebbe comunque tentare di aprire entrambi i dispositivi (poiché questi dispositivi non sono elencati come in conflitto nei campi conflitti_devices), ma l'utilizzo di questi dispositivi potrebbe non riuscire nelle chiamate open o configure.
Ex. 2: Dispositivo fotocamera 0 = Dispositivo fotocamera fotocamera posteriore sinistra 1 = Dispositivo fotocamera fotocamera posteriore destra 2 = Fotocamera stereo combinata che utilizza i sensori della fotocamera posteriore destra e sinistra utilizzati dai dispositivi 0 e 1 Dispositivo fotocamera 3 = Fotocamera anteriore
- A causa di vincoli hardware, è possibile aprire fino a due fotocamere contemporaneamente. La fotocamera stereo combinata non può mai essere utilizzata contemporaneamente a uno dei due dispositivi con fotocamera posteriore (dispositivo 0, 1) e in genere richiede troppa larghezza di banda per essere utilizzata contemporaneamente con la fotocamera anteriore (dispositivo 3).
Configurazione:
Dispositivo telecamera 0 - costo_risorsa = 50 dispositivi_conflitto = { 2 } Dispositivo telecamera 1 - costo_risorsa = 50 dispositivi_conflitto = { 2 } Dispositivo telecamera 2 - costo_risorsa = 100 dispositivi_conflitto = { 0, 1 } Dispositivo telecamera 3 - costo_risorsa = 50 dispositivi_conflitto = null
Risultato:
In base ai campi conflitti_devices, il servizio fotocamera garantisce che i seguenti set di dispositivi aperti non saranno mai consentiti: { 1, 2 }, { 0, 2 }.
In base ai campi resources_cost, se un'applicazione in primo piano ad alta priorità utilizza il dispositivo fotocamera 0, un'applicazione in background potrebbe aprire il dispositivo fotocamera 1 o 3 (ma sarebbe costretta a disconnetterla nuovamente se l'applicazione in primo piano aprisse un altro dispositivo).
L'applicazione con la priorità più alta potrebbe comunque tentare di aprire contemporaneamente i dispositivi 0, 2 e 3, ma l'HAL potrebbe non riuscire ad aprire o configurare le chiamate per questa combinazione.
Ex. 3: Dispositivo fotocamera 0 = Dispositivo fotocamera fotocamera posteriore 1 = Dispositivo fotocamera fotocamera anteriore 2 = Fotocamera anteriore a basso consumo 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
Utilizzare entrambe le fotocamere anteriori (dispositivo 1, 2) contemporaneamente è impossibile a causa del 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 l'opzione della fotocamera anteriore "a basso consumo" può sempre essere utilizzata poiché dispone di hardware dedicato speciale.
Configurazione:
Dispositivo fotocamera 0 - Resource_cost = 100 conflitti_devices = null Dispositivo fotocamera 1 - Resource_cost = 100 conflitti_devices = { 2 } Dispositivo fotocamera 2 - Resource_cost = 0 conflitti_devices = { 1 } Risultato:
In base ai campi conflitti_devices, il servizio fotocamera garantisce che i seguenti set di dispositivi aperti non saranno mai consentiti: { 1, 2 }.
In base ai campi resources_cost, solo l'applicazione con la priorità più alta può tentare di aprire entrambi i dispositivi 0 e 1 contemporaneamente. Se un'applicazione con priorità più alta non utilizza il dispositivo 1 o 2, un'applicazione in background con priorità bassa può aprire il dispositivo 2 (ma sarà costretta a disconnetterla se un'applicazione con priorità più alta apre successivamente il dispositivo 1 o 2).
Informazioni sulla versione (basate su camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 o precedente:
Non valido. Si può presumere che sia 100. Non leggere questo campo.
CAMERA_MODULE_API_VERSION_2_4 o successiva:
Sempre valido.
Definizione alla riga 376 del file camera_common.h .
const camera_metadata_t * static_camera_characteristics |
Le caratteristiche fisse della fotocamera, che includono tutti i metadati statici della fotocamera 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 fotocamera e i valori in esso contenuti 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. Non sono disponibili caratteristiche extra. Non leggere questo campo.
CAMERA_MODULE_API_VERSION_2_0 o successiva:
Valido se versione_dispositivo >= CAMERA_DEVICE_API_VERSION_2_0. Non leggere diversamente.
Definizione alla riga 241 del file camera_common.h .
La documentazione per questa struttura è stata generata dal seguente file:
- hardware/libhardware/include/hardware/ camera_common.h