Riferimento alla struttura camera_info

Riferimento alla struttura camera_info

#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 **  conflicting_devices
 
size_t  conflicting_devices_length
 

Descrizione dettagliata

Definizione nella riga 161 del file camera_common.h .

Documentazione dei campi

char** conflicting_devices

Un array di ID dispositivo della videocamera rappresentati come stringhe terminate da NULL che indicano altri dispositivi che non possono essere aperti contemporaneamente mentre questo dispositivo della videocamera è in uso.

Questo campo deve essere utilizzato per indicare che il dispositivo è composto da più videocamere o che presenta dipendenze hardware che ne impediscono l'utilizzo simultaneo. Se non sono presenti dipendenze, in questo campo può essere restituito un valore NULL per indicarlo.

Il servizio della videocamera non aprirà mai contemporaneamente nessuno dei dispositivi in questo elenco mentre la videocamera è aperta.

Le stringhe a cui si fa riferimento in questo campo non verranno eliminate dal servizio della videocamera e devono rimanere attive mentre il dispositivo è collegato all'alimentazione.

Informazioni sulla versione (in base a camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o versioni precedenti:

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

CAMERA_MODULE_API_VERSION_2_4 o versioni successive:

Sempre valido.

Definizione nella riga 404 del file camera_common.h .

size_t conflicting_devices_length

La lunghezza dell'array specificata nel campo conflicting_devices.

Informazioni sulla versione (in base a camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o versioni precedenti:

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

CAMERA_MODULE_API_VERSION_2_4 o versioni successive:

Sempre valido.

Definizione nella riga 419 del file camera_common.h .

uint32_t device_version

Il valore di camera_device_t.common.version.

Informazioni sulla versione (in base a 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 versioni successive:

Sempre valido

Definizione nella riga 219 del file camera_common.h .

int facing

La direzione verso cui è rivolta la fotocamera. Per le definizioni dell'orientamento della fotocamera, consulta system/core/include/system/camera.h.

Informazioni sulla versione (in base a camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o versioni precedenti:

Deve essere CAMERA_FACING_BACK o CAMERA_FACING_FRONT.

CAMERA_MODULE_API_VERSION_2_4 o versioni successive:

Deve essere CAMERA_FACING_BACK, CAMERA_FACING_FRONT o CAMERA_FACING_EXTERNAL.

Definizione nella riga 177 del file camera_common.h .

int orientation

L'orientamento dell'immagine della fotocamera. Il valore è l'angolo di rotazione dell'immagine della videocamera in senso orario in modo che venga visualizzata correttamente sul display nel suo orientamento naturale. Deve essere 0, 90, 180 o 270.

Ad esempio, supponiamo che un dispositivo abbia uno schermo naturalmente alto. Il sensore della fotocamera posteriore è montato in formato 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 deve essere 90. Se il lato superiore di un sensore della fotocamera anteriore è allineato alla parte destra dello schermo, il valore deve essere 270.

Informazioni sulla versione (in base a camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o versioni precedenti:

Valido in tutte le versioni di camera_module .

CAMERA_MODULE_API_VERSION_2_4 o versioni successive:

Valido se la fotocamera è rivolta verso il retro o verso il davanti (CAMERA_FACING_BACK o CAMERA_FACING_FRONT), non valido se la fotocamera è rivolta verso l'esterno (CAMERA_FACING_EXTERNAL).

Definizione nella riga 202 del file camera_common.h .

int resource_cost

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

Il servizio della videocamera deve essere in grado di aprire e utilizzare contemporaneamente qualsiasi combinazione di dispositivi della videocamera esposti dall'HAL, dove la somma dei costi delle risorse di queste videocamere è <= 100. Per determinare il costo, si deve presumere che ogni dispositivo della videocamera sia configurato e funzioni con le impostazioni di frame rate e dimensioni dello stream che richiedono il massimo consumo di risorse disponibili nelle impostazioni di configurazione esposte per quel dispositivo tramite i metadati della videocamera.

Il servizio della videocamera potrebbe comunque tentare di aprire contemporaneamente combinazioni di dispositivi con un costo totale delle risorse superiore a 100. L'operazione può riuscire o meno. Se l'operazione va a buon fine, le combinazioni di configurazioni non supportate a causa di limitazioni delle risorse dovute alla presenza di più dispositivi aperti non dovrebbero riuscire durante le chiamate di configurazione. Se il costo totale delle risorse è <= 100, l'apertura e la configurazione non dovrebbero mai non riuscire per le impostazioni di configurazione dello stream o per altre funzionalità del dispositivo che normalmente andrebbero a buon fine per un dispositivo quando è l'unica videocamera aperta.

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

Esempi di casi d'uso:

Ad esempio, 1: Dispositivo fotocamera 0 = Fotocamera posteriore Dispositivo fotocamera 1 = Fotocamera anteriore

  • L'utilizzo di entrambe le videocamere causa un notevole rallentamento della frequenza dei fotogrammi a causa della larghezza di banda limitata dell'ISP.

Configurazione:

Dispositivo videocamera 0 - resource_cost = 51 conflicting_devices = null Dispositivo videocamera 1 - resource_cost = 51 conflicting_devices = null

Risultato:

Poiché la somma dei costi delle risorse è superiore a 100, se un'applicazione con priorità più alta ha aperto uno dei dispositivi, il servizio della videocamera non consentirà ad alcuna applicazione con priorità inferiore di aprire nessuno dei dispositivi. Se un'applicazione con priorità inferiore utilizza un dispositivo che un'applicazione con priorità superiore tenta successivamente di aprire, l'applicazione con priorità inferiore sarà costretta a scollegare il dispositivo.

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

Ad esempio, 2: Dispositivo con fotocamera 0 = fotocamera posteriore sinistra Dispositivo con fotocamera 1 = fotocamera posteriore destra Dispositivo con fotocamera 2 = fotocamera stereo combinata che utilizza i sensori delle fotocamere posteriori destra e sinistra utilizzati dai dispositivi 0 e 1 Dispositivo con fotocamera 3 = fotocamera anteriore

  • A causa di limitazioni hardware, è possibile aprire fino a due videocamere contemporaneamente. La fotocamera stereo combinata non può mai essere utilizzata contemporaneamente con uno dei due dispositivi con fotocamera posteriore (dispositivo 0, 1) e in genere richiede troppa larghezza di banda per essere utilizzata contemporaneamente alla fotocamera anteriore (dispositivo 3).

Configurazione:

Dispositivo videocamera 0 - resource_cost = 50 conflicting_devices = { 2 } Dispositivo videocamera 1 - resource_cost = 50 conflicting_devices = { 2 } Dispositivo videocamera 2 - resource_cost = 100 conflicting_devices = { 0, 1 } Dispositivo videocamera 3 - resource_cost = 50 conflicting_devices = null

Risultato:

In base ai campi conflicting_devices, il servizio della videocamera garantisce che i seguenti insiemi di dispositivi aperti non saranno mai consentiti: { 1, 2 }, { 0, 2 }.

In base ai campi resource_cost, se un'applicazione in primo piano con priorità elevata utilizza il dispositivo di fotocamera 0, un'applicazione in background potrebbe aprire il dispositivo di fotocamera 1 o 3 (ma sarebbe costretta a disconnetterlo di nuovo se l'applicazione in primo piano avesse aperto 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.

Ad esempio, 3: Dispositivo con fotocamera 0 = fotocamera posteriore Dispositivo con fotocamera 1 = fotocamera anteriore Dispositivo con fotocamera 2 = fotocamera anteriore a basso consumo che utilizza lo stesso sensore del dispositivo 1, ma espone solo le risoluzioni dello stream di immagini che possono essere utilizzate in modalità a basso consumo

  • L'utilizzo di entrambe le fotocamere anteriori (dispositivo 1, 2) contemporaneamente è impossibile a causa di un sensore fisico condiviso. L'utilizzo della fotocamera posteriore e della fotocamera anteriore "ad alta potenza" (dispositivo 1) potrebbe non essere possibile per alcune configurazioni dello stream a causa di limitazioni hardware, ma l'opzione della fotocamera anteriore "a basso consumo" può essere utilizzata sempre perché dispone di hardware dedicato speciale.

    Configurazione:

    Dispositivo videocamera 0 - resource_cost = 100 conflicting_devices = null Dispositivo videocamera 1 - resource_cost = 100 conflicting_devices = { 2 } Dispositivo videocamera 2 - resource_cost = 0 conflicting_devices = { 1 } Risultato:

    In base ai campi conflicting_devices, il servizio della videocamera garantisce che i seguenti insiemi 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 i dispositivi 0 e 1. Se un'applicazione con priorità più alta non utilizza il dispositivo 1 o 2, un'applicazione in background con priorità inferiore potrebbe aprire il dispositivo 2 (ma sarà costretta a disconnetterlo se successivamente un'applicazione con priorità più alta apre il dispositivo 1 o 2).

Informazioni sulla versione (in base a camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o versioni precedenti:

Non valido. Si può assumere che sia pari a 100. Non leggere questo campo.

CAMERA_MODULE_API_VERSION_2_4 o versioni successive:

Sempre valido.

Definizione nella riga 376 del file camera_common.h .

const camera_metadata_t * static_camera_characteristics

Le caratteristiche fisse della videocamera, che includono tutti i metadati statici della videocamera specificati in system/media/camera/docs/docs.html. Deve essere un buffer di metadati ordinati e non può essere modificato o liberato dal chiamante. Il puntatore deve rimanere valido per tutta la durata del modulo della videocamera e i valori al suo interno non possono cambiare dopo che viene restituito da get_camera_info().

Informazioni sulla versione (in base a camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

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

CAMERA_MODULE_API_VERSION_2_0 o versioni successive:

Valido se device_version >= CAMERA_DEVICE_API_VERSION_2_0. Non leggere in altro modo.

Definizione nella riga 241 del file camera_common.h .


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