Camera_info Struct Reference

Camera_info Struct Reference

#include < camera_common.h >

Champs de données

int orienté vers
int orientation
uint32_t device_version
const camera_metadata_t * static_camera_characteristics
int resource_cost
char ** conflit_devices
size_t conflicting_devices_length

Description détaillée

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

Documentation sur le terrain

char ** conflicting_devices

Un tableau d'identifiants d'appareils photo représentés par des chaînes terminées par NULL indiquant d'autres appareils qui ne peuvent pas être ouverts simultanément pendant que cet appareil photo est en cours d'utilisation.

Ce champ est destiné à être utilisé pour indiquer que ce périphérique de caméra est un composite de plusieurs autres périphériques de caméra, ou a des dépendances matérielles qui interdisent l'utilisation simultanée. S'il n'y a pas de dépendances, un NULL peut être retourné dans ce champ pour l'indiquer.

Le service de caméra n'ouvrira jamais simultanément l'un des périphériques de cette liste lorsque ce périphérique de caméra est ouvert.

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

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

CAMERA_MODULE_API_VERSION_2_3 ou moins:

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

CAMERA_MODULE_API_VERSION_2_4 ou version ultérieure:

Toujours valable.

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

size_t conflicting_devices_length

La longueur du tableau indiquée dans le champ conflicting_devices.

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

CAMERA_MODULE_API_VERSION_2_3 ou moins:

Pas valide. Peut être considéré comme égal à 0. Ne lisez pas ce champ.

CAMERA_MODULE_API_VERSION_2_4 ou version ultérieure:

Toujours valable.

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

uint32_t device_version

La valeur de camera_device_t.common.version.

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

CAMERA_MODULE_API_VERSION_1_0:

Pas 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 int

La direction vers laquelle la caméra fait face. Voir system / core / include / system / camera.h pour les définitions de face de la caméra.

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

CAMERA_MODULE_API_VERSION_2_3 ou moins:

Il doit s'agir de CAMERA_FACING_BACK ou 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

L'orientation de l'image de la caméra. La valeur est l'angle selon lequel l'image de la caméra doit être tournée dans le sens des aiguilles d'une montre pour qu'elle s'affiche correctement sur l'écran dans son orientation naturelle. Il doit être 0, 90, 180 ou 270.

Par exemple, supposons qu'un appareil possède un écran naturellement haut. Le capteur de la caméra orientée vers l'arrière est monté en mode paysage. Vous regardez l'écran. Si le côté supérieur du capteur de la caméra est aligné avec le bord droit de l'écran en orientation naturelle, la valeur doit être de 90. Si le côté supérieur d'un capteur de caméra orienté vers l'avant est aligné avec la droite de l'écran, la valeur doit être 270.

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

CAMERA_MODULE_API_VERSION_2_3 ou moins:

Valable dans toutes les versions de camera_module .

CAMERA_MODULE_API_VERSION_2_4 ou version ultérieure:

Valide si la face de la caméra est CAMERA_FACING_BACK ou CAMERA_FACING_FRONT, non valide si la face de la caméra est CAMERA_FACING_EXTERNAL.

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

int resource_cost

Le «coût» total des ressources d'utilisation de cette caméra, représenté par une valeur entière dans la plage [0, 100] où 100 représente l'utilisation totale de la ressource partagée qui est le goulot d'étranglement limitant du sous-système de caméra. Cela peut être une estimation très approximative, et est utilisé comme un indice au service de caméra pour déterminer quand interdire à plusieurs applications d'ouvrir simultanément différentes caméras annoncées par le service de caméra.

Le service de caméra doit être en mesure d'ouvrir et d'utiliser simultanément toute combinaison de dispositifs de caméra exposés par la HAL où la somme des coûts de ressources de ces caméras est <= 100. Pour déterminer le coût, chaque dispositif de caméra doit être supposé être configuré et opérationnel aux paramètres de fréquence d'images et de taille de flux consommant au maximum les ressources disponibles dans les paramètres de configuration exposés pour cet appareil via les métadonnées de la caméra.

Le service de caméra peut toujours tenter d'ouvrir simultanément des combinaisons de périphériques de caméra avec un coût total en ressources> 100. Cela peut réussir ou échouer. Si cela réussit, les combinaisons de configurations qui ne sont pas prises en charge en raison de contraintes de ressources liées à la présence de plusieurs périphériques ouverts doivent échouer pendant les appels de configuration. Si le coût total des ressources est <= 100, l'ouverture et la configuration ne doivent jamais échouer pour les paramètres de configuration de flux ou d'autres capacités de périphérique qui réussiraient normalement pour un périphérique alors qu'il s'agit du seul périphérique de caméra ouvert.

Ce champ sera utilisé pour déterminer si les applications d'arrière-plan sont autorisées à utiliser cet appareil photo alors que d'autres applications utilisent d'autres appareils photo. Remarque: plusieurs applications ne seront jamais autorisées par le service de caméra à ouvrir simultanément le même appareil photo.

Exemples de cas d'utilisation:

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

  • L'utilisation des deux appareils photo entraîne un ralentissement important de la fréquence d'images en raison de la bande passante limitée du FAI.

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 de ressources est> 100, si une application de priorité plus élevée a l'un ou l'autre des périphériques ouverts, aucune application de priorité inférieure ne sera autorisée par le service de caméra à ouvrir l'un ou l'autre des périphériques. Si une application de priorité inférieure utilise un périphérique qu'une priorité plus élevée tente d'ouvrir par la suite, l'application de priorité inférieure sera forcée de déconnecter le périphérique.

Si l'application de priorité la plus élevée choisit, elle peut toujours essayer d'ouvrir les deux périphériques (car ces périphériques ne sont pas répertoriés comme étant en conflit dans les champs conflicting_devices), mais l'utilisation de ces périphériques peut échouer lors des appels ouverts ou configurés.

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

  • En raison de contraintes matérielles, jusqu'à deux caméras peuvent être ouvertes à la fois. La caméra stéréo combinée ne peut jamais être utilisée en même temps que l'un ou l'autre des deux appareils photo arrière (appareil 0, 1) et nécessite généralement trop de bande passante à utiliser en même temps que l'appareil photo 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:

Sur la base 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}.

Sur la base des champs resource_cost, si une application de premier plan à haute priorité utilise le périphérique de caméra 0, une application d'arrière-plan serait autorisée à ouvrir le périphérique de caméra 1 ou 3 (mais serait obligée de le déconnecter à nouveau si l'application de premier plan ouvrait un autre périphérique).

L'application de priorité la plus élevée peut toujours tenter d'ouvrir simultanément les périphériques 0, 2 et 3, mais la HAL peut échouer lors des appels ouverts ou configurés pour cette combinaison.

Ex. 3: Appareil photo 0 = Appareil photo arrière Appareil photo 1 = Appareil photo avant Appareil photo 2 = Appareil photo avant à faible 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

  • L'utilisation des deux caméras frontales (appareil 1, 2) en même temps est impossible en raison d'un capteur physique partagé. L'utilisation de la caméra frontale arrière et "haute puissance" (périphérique 1) peut être impossible pour certaines configurations de flux en raison de limitations matérielles, mais l'option de caméra frontale "basse puissance" peut toujours être utilisée car elle dispose d'un 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:

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

    Sur la base des champs resource_cost, seule l'application ayant la priorité la plus élevée peut tenter d'ouvrir les périphériques 0 et 1 en même temps. Si une application de priorité plus élevée n'utilise pas le périphérique 1 ou 2, une application d'arrière-plan de faible priorité peut ouvrir le périphérique 2 (mais sera forcée de le déconnecter si une application de priorité plus élevée ouvre ensuite le périphérique 1 ou 2).

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

CAMERA_MODULE_API_VERSION_2_3 ou moins:

Pas valide. Peut être supposé être 100. Ne lisez pas ce champ.

CAMERA_MODULE_API_VERSION_2_4 ou version ultérieure:

Toujours valable.

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

const camera_metadata_t * static_camera_characteristics

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

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

CAMERA_MODULE_API_VERSION_1_0:

Pas 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> = CAMERA_DEVICE_API_VERSION_2_0. Ne lisez pas autrement.

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


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