Référence de la struct camera_info

Référence de la struct camera_info

#include < camera_common.h >

Champs de données

int  face à
 
int  orientation
 
uint32_t  device_version
 
const Camera_metadata_t * static_camera_characteristics
 
int  resource_cost
 
char **  conflicting_devices
 
size_t  conflicting_devices_length
 

Description détaillée

Définition à la ligne  161 du fichier camera_common.h .

Documentation des champs

char** conflicting_devices

Tableau d'ID d'appareils photo représentés sous forme de chaînes terminées par NULL indiquant les autres appareils qui ne peuvent pas être ouverts simultanément lorsque cet appareil photo est utilisé.

Ce champ permet d'indiquer que cet appareil photo est un composite de plusieurs autres appareils photo ou qu'il présente des dépendances matérielles qui interdisent une utilisation simultanée. Si aucune dépendance n'est définie, une valeur NULL peut être renvoyée dans ce champ pour l'indiquer.

Le service d'appareil photo n'ouvre jamais simultanément l'un des appareils de cette liste lorsque cet appareil photo est ouvert.

Les chaînes pointées dans ce champ ne seront pas nettoyées par le service d'appareil photo et doivent rester pendant que cet appareil est branché.

Informations sur la version (basées sur camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 ou version antérieure:

Non valide. Peut être considéré comme NULL. Ne lisez pas ce champ.

CAMERA_MODULE_API_VERSION_2_4 ou version ultérieure:

Toujours valide.

Définition à la ligne  404 du fichier camera_common.h .

size_t conflicting_devices_length

Longueur du tableau indiqué dans le champ "conflicting_devices".

Informations sur la version (basées sur camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 ou version antérieure:

Non valide. Peut être considéré comme nul. Ne lisez pas ce champ.

CAMERA_MODULE_API_VERSION_2_4 ou version ultérieure:

Toujours valide.

Définition à la ligne  419 du fichier camera_common.h .

uint32_t device_version

Valeur de camera_device_t.common.version.

Informations sur la version (basées sur camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Non valide. Peut être considéré comme CAMERA_DEVICE_API_VERSION_1_0. Ne lisez pas ce champ.

CAMERA_MODULE_API_VERSION_2_0 ou version ultérieure:

Toujours valide

Définition à la ligne  219 du fichier camera_common.h .

face à l'intérieur

Direction vers laquelle l'appareil photo est orienté. Consultez system/core/include/system/camera.h pour connaître les définitions des orientations de la caméra.

Informations sur la version (basées sur camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 ou version antérieure:

Il doit s'agir de CAMERA_FACING_BACK ou de CAMERA_FACING_FRONT.

CAMERA_MODULE_API_VERSION_2_4 ou version ultérieure:

Il doit s'agir de CAMERA_FACING_BACK, CAMERA_FACING_FRONT ou CAMERA_FACING_EXTERNAL.

Définition à la ligne  177 du fichier camera_common.h .

Orientation int

Orientation de l'image de l'appareil photo. Cette valeur correspond à l'angle de rotation de l'image de l'appareil photo dans le sens des aiguilles d'une montre pour qu'elle s'affiche correctement à l'écran dans son orientation naturelle. Elle doit être 0, 90, 180 ou 270.

Par exemple, supposons qu'un appareil dispose d'un écran naturellement haut. Le capteur de la caméra arrière est monté en mode paysage. Vous regardez l'écran. Si la partie supérieure du capteur de l'appareil photo est alignée sur le bord droit de l'écran dans l'orientation naturelle, la valeur doit être de 90. Si la partie supérieure d'un capteur de caméra avant est alignée sur la droite de l'écran, la valeur doit être 270.

Informations sur la version (basées sur camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 ou version antérieure:

Valable dans toutes les versions de camera_module .

CAMERA_MODULE_API_VERSION_2_4 ou version ultérieure:

Valeur valide si l'orientation de la caméra est CAMERA_FACING_BACK ou CAMERA_FACING_FRONT, non valide si l'orientation de la caméra est CAMERA_FACING_EXTERNAL.

Définition à la ligne  202 du fichier camera_common.h .

int resource_cost

"Coût" total des ressources lié à l'utilisation de cette caméra, représenté par une valeur entière comprise dans la plage [0, 100], où 100 représente l'utilisation totale de la ressource partagée qui constitue le goulot d'étranglement limitant du sous-système de la caméra. Il peut s'agir d'une estimation très approximative, qui sert d'indice au service d'appareil photo pour déterminer quand interdire à plusieurs applications d'ouvrir simultanément différentes caméras annoncées par le service d'appareil photo.

Le service de caméra doit pouvoir ouvrir et utiliser simultanément n'importe quelle combinaison d'appareils photo exposés par le HAL, où la somme des coûts des ressources de ces caméras est inférieure ou égale à 100. Pour déterminer le coût, chaque appareil photo doit être considéré comme configuré et fonctionnant avec le débit et la fréquence d'images les plus gourmands en ressources disponibles dans les paramètres de configuration exposés pour cet appareil via les métadonnées de la caméra.

Le service d'appareil photo peut toujours tenter d'ouvrir simultanément des combinaisons d'appareils photo dont le coût total des ressources est supérieur à 100. Cette opération peut réussir ou échouer. Si cette opération réussit, les combinaisons de configurations non compatibles en raison des contraintes de ressources liées à la présence de plusieurs appareils ouverts doivent échouer lors des appels de configuration. Si le coût total des ressources est inférieur ou égal à 100, l'ouverture et la configuration ne doivent jamais échouer pour les paramètres de configuration du flux ou d'autres fonctionnalités de l'appareil qui réussissent normalement pour un appareil lorsqu'il s'agit du seul appareil photo ouvert.

Ce champ permet de déterminer si les applications en arrière-plan sont autorisées à utiliser cet appareil photo alors que d'autres applications utilisent d'autres appareils photo. Remarque: Le service d'appareil photo n'autorise jamais plusieurs applications à ouvrir simultanément le même appareil photo.

Exemples de cas d'utilisation:

Ex. : 1: Appareil photo 0 = Caméra arrière Appareil photo 1 = Caméra avant

  • L'utilisation des deux appareils photo entraîne un ralentissement important du frame rate en raison de la bande passante limitée de l'ISP.

Configuration:

Appareil photo 0 : resource_cost = 51 conflicting_devices = null Appareil photo 1 : resource_cost = 51 conflicting_devices = null

Résultat :

Étant donné que la somme des coûts des ressources est supérieure à 100, si une application de priorité supérieure a ouvert l'un des appareils, aucune application de priorité inférieure ne sera autorisée par le service d'appareil photo à ouvrir l'un des appareils. Si une application de priorité inférieure utilise un appareil qu'une application de priorité supérieure tente ensuite d'ouvrir, l'application de priorité inférieure sera forcée de le dissocier.

Si l'application de priorité la plus élevée le choisit, elle peut toujours tenter d'ouvrir les deux appareils (car ces appareils ne sont pas répertoriés comme en conflit dans les champs "conflicting_devices"), mais l'utilisation de ces appareils peut échouer dans les appels d'ouverture ou de configuration.

Ex. : 2: Appareil photo 0 = Caméra arrière gauche Appareil photo 1 = Caméra arrière droite Appareil photo 2 = Caméra stéréo combinée utilisant les capteurs de caméra arrière gauche et droite utilisés par les appareils 0 et 1 Appareil photo 3 = Caméra avant

  • En raison de contraintes matérielles, vous ne pouvez ouvrir que deux caméras à la fois. La caméra stéréo combinée ne peut jamais être utilisée en même temps que l'un des deux appareils de caméra arrière (appareil 0, 1) et nécessite généralement trop de bande passante pour être utilisée en même temps que la caméra avant (appareil 3).

Configuration:

Appareil photo 0 : resource_cost = 50 conflicting_devices = { 2 } Appareil photo 1 : resource_cost = 50 conflicting_devices = { 2 } Appareil photo 2 : resource_cost = 100 conflicting_devices = { 0, 1 } Appareil photo 3 : resource_cost = 50 conflicting_devices = null

Résultat :

En fonction des champs "conflicting_devices", le service de caméra garantit que les ensembles d'appareils ouverts suivants ne seront jamais autorisés: { 1, 2 }, { 0, 2 }.

En fonction des champs resource_cost, si une application de premier plan à priorité élevée utilise l'appareil photo 0, une application en arrière-plan est autorisée à ouvrir l'appareil photo 1 ou 3 (mais elle doit le déconnecter à nouveau si l'application de premier plan a ouvert un autre appareil).

L'application de priorité la plus élevée peut toujours tenter d'ouvrir simultanément les appareils 0, 2 et 3, mais le HAL peut échouer à ouvrir ou à configurer des appels pour cette combinaison.

Ex. : 3: Appareil photo 0 = caméra arrière Appareil photo 1 = caméra avant Appareil photo 2 = caméra avant basse consommation qui utilise le même capteur que l'appareil 1, mais n'expose que les résolutions de flux d'images pouvant être utilisées en mode basse consommation

  • Il est impossible d'utiliser les deux caméras avant (appareil 1, 2) en même temps en raison d'un capteur physique partagé. L'utilisation de la caméra arrière et de la caméra avant "haute puissance" (appareil 1) peut être impossible pour certaines configurations de flux en raison de limitations matérielles. En revanche, l'option de caméra avant "basse puissance" peut toujours être utilisée, car elle dispose de matériel dédié spécial.

    Configuration:

    Appareil photo 0 : resource_cost = 100 conflicting_devices = null Appareil photo 1 : resource_cost = 100 conflicting_devices = { 2 } Appareil photo 2 : resource_cost = 0 conflicting_devices = { 1 } Résultat :

    En fonction des champs conflicting_devices, le service de caméra garantit que les ensembles d'appareils ouverts suivants ne seront jamais autorisés: { 1, 2 }.

    En fonction des champs resource_cost, seule l'application de priorité la plus élevée peut tenter d'ouvrir les appareils 0 et 1 en même temps. Si une application de priorité supérieure n'utilise pas l'appareil 1 ou 2, une application en arrière-plan de faible priorité peut ouvrir l'appareil 2 (mais elle sera forcée de le déconnecter si une application de priorité supérieure ouvre ensuite l'appareil 1 ou 2).

Informations sur la version (basées sur camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 ou version antérieure:

Non valide. Peut être considéré comme 100. Ne lisez pas ce champ.

CAMERA_MODULE_API_VERSION_2_4 ou version ultérieure:

Toujours valide.

Définition à la ligne  376 du fichier camera_common.h .

const camera_metadata_t * static_camera_characteristics

Caractéristiques fixes de l'appareil photo, y compris toutes les métadonnées statiques de l'appareil photo spécifiées dans system/media/camera/docs/docs.html. Il doit s'agir d'un tampon de métadonnées trié, qui ne peut pas être modifié ni libéré par l'appelant. Le pointeur doit rester valide pendant toute la durée de vie du module de caméra, et les valeurs qu'il contient ne doivent pas changer après avoir été renvoyées par get_camera_info().

Informations sur la version (basées sur camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Non valide. Les caractéristiques supplémentaires ne sont pas disponibles. Ne lisez pas ce champ.

CAMERA_MODULE_API_VERSION_2_0 ou version ultérieure:

Valide si device_version est supérieur ou égal à CAMERA_DEVICE_API_VERSION_2_0. Sinon, ne lisez pas.

Définition à la ligne  241 du fichier camera_common.h .


La documentation de ce struct a été générée à partir du fichier suivant :