Référence de structure camera_info

Référence de structure camera_info

#include < camera_common.h >

Champs de données

int orienté vers
int orientation
uint32_t version_appareil
const camera_metadata_t * caractéristiques_camera_statiques
int coût_ressource
char ** périphériques_en conflit
taille_t conflicting_devices_length

Description détaillée

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

Documentation de terrain

char** appareils_en conflit

Tableau d'ID de périphérique de caméra représenté sous forme de chaînes terminées par NULL indiquant d'autres périphériques qui ne peuvent pas être ouverts simultanément pendant que ce périphérique de caméra 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 qu'il présente des dépendances matérielles qui interdisent une utilisation simultanée. S'il n'y a pas de dépendances, un NULL peut être renvoyé dans ce champ pour l'indiquer.

Le service de caméra n’ouvrira jamais simultanément aucun des appareils 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 sur la version (basées sur camera_module_t.common.module_api_version) :

CAMERA_MODULE_API_VERSION_2_3 ou version inférieure :

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

CAMERA_MODULE_API_VERSION_2_4 ou supérieur :

Toujours valable.

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

size_t conflit_devices_length

La longueur du tableau indiquée 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 inférieure :

Pas valide. Peut être supposé égal à 0. Ne lisez pas ce champ.

CAMERA_MODULE_API_VERSION_2_4 ou supérieur :

Toujours valable.

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

uint32_t version_appareil

La 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 :

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

CAMERA_MODULE_API_VERSION_2_0 ou supérieur :

Toujours valable

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

int face

La direction vers laquelle la caméra est tournée. Voir system/core/include/system/camera.h pour les définitions face à 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 inférieure :

Il doit s'agir de CAMERA_FACING_BACK ou CAMERA_FACING_FRONT.

CAMERA_MODULE_API_VERSION_2_4 ou supérieur :

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 internationale

L'orientation de l'image de la caméra. La valeur correspond à 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 s'agir de 0, 90, 180 ou 270.

Par exemple, supposons qu’un appareil dispose d’un écran naturellement haut. Le capteur de la caméra orienté 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 dans une orientation naturelle, la valeur doit être de 90. Si le côté supérieur du capteur de la caméra frontale est aligné avec la droite de l'écran, la valeur doit être de 90. être 270.

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

CAMERA_MODULE_API_VERSION_2_3 ou version inférieure :

Valable dans toutes les versions de camera_module .

CAMERA_MODULE_API_VERSION_2_4 ou supérieur :

Valable 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 ressource_cost

Le « coût » total des ressources liées à 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 caméra. Il peut s'agir d'une estimation très approximative et est utilisée comme indice pour le 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 capable d'ouvrir et d'utiliser simultanément toute combinaison de caméras exposées par la HAL où la somme des coûts en ressources de ces caméras est <= 100. Pour déterminer le coût, chaque caméra doit être supposée être configurée et opérationnelle. aux paramètres de fréquence d'images et de taille de flux 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 de caméra peut toujours tenter d’ouvrir simultanément des combinaisons de caméras avec un coût total en ressources > 100. Cette opération 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 devraient échouer lors des appels de configuration. Si le coût total des ressources est <= 100, l'ouverture et la configuration ne devraient jamais échouer pour les paramètres de configuration de flux ou d'autres fonctionnalités de périphérique qui fonctionneraient normalement pour un périphérique lorsqu'il s'agit du seul périphérique de caméra ouvert.

Ce champ sera utilisé pour déterminer si les applications en arrière-plan sont autorisées à utiliser cet appareil photo tandis que d'autres applications utilisent d'autres appareils photo. Remarque : le service de caméra ne permettra jamais à plusieurs applications d'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 = Caméra avant

  • L’utilisation des deux caméras entraîne un ralentissement important du framerate 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 appareils ouverts, aucune application de priorité inférieure ne sera autorisée par le service de caméra à ouvrir l'un ou l'autre des appareils. Si une application de priorité inférieure utilise un périphérique qu'une application de priorité plus élevée tente ensuite d'ouvrir, l'application de priorité inférieure sera obligée de déconnecter le périphérique.

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

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 caméra arrière droit et gauche utilisés par les appareils 0 et 1 Appareil photo 3 = Caméra avant

  • En raison de contraintes matérielles, jusqu'à deux caméras peuvent être ouvertes en même temps. 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 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:

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 }.

En fonction des champs resource_cost, si une application de premier plan hautement prioritaire utilise le périphérique de caméra 0, une application en 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 la plus prioritaire peut toujours tenter d'ouvrir simultanément les périphériques 0, 2 et 3, mais la HAL peut échouer lors des appels d'ouverture ou de configuration pour cette combinaison.

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

  • Utiliser les 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 arrière et de la caméra frontale « haute puissance » (appareil 1) peut être impossible pour certaines configurations de flux en raison de limitations matérielles, mais l'option de caméra frontale « basse consommation » 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 d'appareils ouverts suivants ne seront jamais autorisés : { 1, 2 }.

    En fonction des champs resource_cost, seule l'application ayant la priorité la plus élevée peut tenter d'ouvrir les appareils 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 en arrière-plan de faible priorité peut ouvrir le périphérique 2 (mais sera obligée de le déconnecter si une application de priorité plus élevée ouvre ensuite le périphérique 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 inférieure :

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

CAMERA_MODULE_API_VERSION_2_4 ou supérieur :

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 de caméra et ses valeurs ne peuvent 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 :

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

CAMERA_MODULE_API_VERSION_2_0 ou supérieur :

Valable 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 :