Partager via


Identifier l’emplacement des caméras internes (applications UWP de dispositif)

Ce sujet fournit des informations sur la prise en charge des caméras internes sur les systèmes Windows 8.1. Il décrit comment identifier l’emplacement physique des caméras intégrées afin qu’elles fonctionnent correctement avec les applications UWP. Il décrit également comment définir l’ID du modèle pour que la caméra fonctionne avec les applications UWP pour périphériques. Pour en savoir plus sur les applications d’appareils UWP en général, veuillez consulter la rubrique Découverte des applications d’appareils UWP.

Fourniture de l’emplacement physique

Les systèmes équipés de caméras intégrées à direction mécaniquement fixe doivent signaler l’emplacement physique des caméras. Ces informations sur l’emplacement physique indiquent dans quelle direction la caméra est orientée, comme devant ou derrière, afin que les applications utilisant la caméra dans Windows 8.1 fonctionnent correctement.

Les deux exigences de certification matérielle Windows suivantes, qui permettent à Windows de reconnaître l’emplacement d’une caméra, sont requises :

  • System.Client.PCContainer.PCAppearsAsSingleObject. La caméra doit être regroupée dans le conteneur de périphériques de l’ordinateur, qui contient les fonctions de périphérique situées physiquement à l’intérieur de l’ordinateur. Une caméra doit être regroupée dans le conteneur de périphériques de l’ordinateur pour exposer son emplacement physique aux applications, car les dispositifs externes au conteneur de l’ordinateur ne sont pas supposés avoir une direction mécaniquement fixe.

  • System.Client.Webcam.PhysicalLocation. Le firmware doit fournir des informations sur l’emplacement physique, en utilisant les informations _PLD dans les tables ACPI pour indiquer l’emplacement et l’orientation de la caméra.

Pourquoi Windows nécessite l’emplacement physique des caméras

Windows a besoin de connaître l’emplacement physique des caméras internes pour les raisons suivantes :

  • Les applications UWP utilisent l’emplacement physique pour déterminer quelle caméra utiliser si plusieurs caméras sont présentes. Par exemple, une application de chat utilisera par défaut la caméra frontale qui fait face à l’utilisateur lorsque l’application démarre.

  • Les applications UWP utilisent l’emplacement physique pour déterminer comment miroiter ou tourner l’aperçu vidéo.

  • Si la caméra fait face à l’utilisateur, l’aperçu doit ressembler à si l’utilisateur se regardait dans un miroir. Pour cela, l’application inversera les côtés gauche et droit de l’aperçu, de sorte que l’aperçu miroite la vidéo. Si la caméra est orientée loin de l’utilisateur, l’application n’a pas besoin de miroiter la vidéo.

  • Si l’application tourne l’aperçu, le degré de rotation diffère en fonction de la position de la caméra.

Comment regrouper la caméra dans le conteneur de périphériques de l’ordinateur

Conformément à l’exigence de certification System.Client.PCContainer.PCAppearsAsSingleObject, également connue sous le nom de SYSFUND-0200, les nœuds de périphérique de caméra interne doivent être regroupés sous le conteneur de périphériques PC. En d’autres termes, la caméra interne ne doit pas être affichée dans Périphériques et imprimantes et doit être consolidée dans le conteneur PC.

La façon de mettre en œuvre cette exigence dépend du type de bus de la caméra interne. Si le périphérique peut exposer des informations sur l’emplacement physique du périphérique dans les tables ACPI, le regroupement correct peut être spécifié dans la couche ACPI en incluant des informations _PLD dans les tables et en modifiant le drapeau UserVisible dans la table ACPI, comme décrit dans Support de périphérique multifonction et regroupements de conteneurs de périphériques. Sinon, remplacez le drapeau amovible à l’aide de la clé de registre DeviceOverrides. Pour plus d’informations, consultez Clé de registre DeviceOverrides.

Comment fournir l’emplacement physique en utilisant les informations _PLD dans la table ACPI

Conformément à l’exigence de certification System.Client.Webcam.PhysicalLocation, la valeur _PLD qui indique l’emplacement de la caméra doit être fournie dans la table ACPI (Interface de configuration et d’alimentation avancée). Ceci s’applique à tout périphérique de caméra intégré au châssis du système et ayant une direction mécaniquement fixe. Le firmware doit fournir la méthode _PLD et régler le champ Panel (bits 69:67) à la valeur appropriée pour le panneau sur lequel la caméra est montée. Par exemple, Front indique que la caméra fait face à l’utilisateur (webcam), tandis que Back indique que la caméra est orientée loin de l’utilisateur final (caméra photo ou vidéo).

Valeur des bits 69:67 Panel
0 Haut
1 Bas
2 Left
3 Right
4 Front
5 Précédent
6 Inconnu

En outre, le bit 143:128 (décalage vertical) et les bits 159:144 (décalage horizontal) doivent fournir l’emplacement relatif de la caméra par rapport à l’affichage. Cette origine est relative à l’adressage natif des pixels dans le composant d’affichage et doit correspondre à l’orientation d’affichage actuelle de paysage ou de portrait. L’origine est le coin inférieur gauche de l’affichage, où les valeurs de décalage horizontal et vertical positives sont respectivement à droite et en haut.

Pour une caméra interne connectée en USB, le nœud de périphérique pour le périphérique USB serait créé dans la table ACPI sous un nœud de périphérique de port USB.

Pour spécifier l’adresse (_ADR) :

  1. Installez Windows sur le PC cible

  2. Allez dans Gestionnaire de périphériques

  3. Sélectionnez et maintenez (ou cliquez avec le bouton droit) sur votre webcam cible et sélectionnez Propriétés

  4. Ouvrez l’onglet Détails et sélectionnez Adresse dans le menu Propriété

  5. La valeur dans la boîte Valeur est l’adresse à laquelle votre périphérique est situé

  6. Définissez la valeur dans _ADR dans la table ACPI

  7. Définissez la valeur _PLD en fonction de la spécification ACPI et de la conception du PC

Cet exemple est une table ACPI pour une caméra connectée en USB. Dans cet exemple, la valeur est 0x1. Le neuvième octet contient le code du panneau pour l’emplacement (bits[69:67]). Notez que si le périphérique est un périphérique composite USB, le PLD doit être sur la FONCTION vidéo. Cela signifie qu’une entrée Device() supplémentaire serait nécessaire.

Device(PRTD)
{
     Name(_ADR, 0x6)
     Name(_UPC, Package(0x4)
     {
            ....
     }
     Name(_PLD, Buffer(0x10)
     {
            ....
     }
     Device(WCAM)
     {
           Name(_ADR, 0x6)
           Name(_PLD, Buffer(0x10) {
           0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           0x20, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
     }
}

Reportez-vous à la spécification ACPI pour des informations plus détaillées sur _PLD.

Pour les nœuds en aval de USBCCGP, la valeur de l’adresse est calculée en ajoutant le numéro de port au premier numéro d’interface de la fonction caméra. Si USBCCGP n’est pas chargé pour le périphérique, alors l’adresse est simplement le numéro de port. Si vous devez prédire le numéro d’adresse sans installer Windows, veuillez utiliser cette formule pour le calculer. Si le périphérique cible est un périphérique à fonction unique (sans utiliser le style de périphérique composite USB), la valeur de l’adresse est calculée uniquement à l’aide du numéro de port.

Fourniture de l’ID du modèle

Le système de métadonnées de périphérique Windows peut interroger le package de métadonnées de périphérique d’une caméra intégrée uniquement si le nœud de périphérique de la caméra a une propriété ID du modèle et que la catégorie du périphérique est Imaging.Webcam. Pour rendre les métadonnées d’une caméra interne découvrables par Windows afin que le package de métadonnées de périphérique soit correctement associé au périphérique et à l’application UWP spécifique à la caméra, un OEM doit effectuer les opérations suivantes :

  • Définissez l’ID du modèle dans le nœud de périphérique, en utilisant le InternalDeviceModification drapeau dans la clé de registre du périphérique

Comment définir l’ID du modèle pour le nœud de périphérique de la caméra interne

Pour les caméras internes, l’OEM crée un GUID à utiliser pour l’ID du modèle et crée une clé de registre pour celui-ci. La propriété ID du modèle est ajoutée au nœud de périphérique en utilisant le mécanisme InternalDeviceModification, qui est une table de recherche basée sur le registre (LUT) composée de clés de registre qui correspondent à des périphériques spécifiques. Cette table InternalDeviceModification est maintenue sous la clé de registre suivante :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification

La clé de sous-clé à créer sous la clé de registre InternalDeviceModification est le GUID fourni par l’OEM pour ModelID. La présence de cette clé ajoute l’ID du modèle au nœud de périphérique de la caméra, en fonction de l’ID matériel du périphérique et des informations de localisation indiquées par la valeur _PLD dans la table ACPI.

registry keys and values for internaldevicemodification.

Clé de registre InternalDeviceModification

La clé de registre InternalDeviceModification indique qu’au moins une caméra utilise l’ID du modèle.

Nom de la clé de registre InternalDeviceModification
Obligatoire ou facultatif Requis
Chemin d’accès HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Exigences en matière de format Aucun
Sous-clés valides Clé de registre de l’ID du modèle (voir les exigences et exemples de format de sous-clé suivants)

Clé de registre de l’ID du modèle

Nom de la clé de registre ID du modèle (la valeur exacte de l’ID du modèle est le nom de la clé)
Obligatoire ou facultatif Requis
Exigences en matière de format Le nom de la clé est un GUID créé par l’OEM. Il doit comporter des crochets ouvrants et fermants.
Valeurs valides Valeurs de registre d’ID matériel ou PLD_Panel
Exemples {43922620-DAD9-4C05-BE3F-F65B089D84D8}

Valeur de registre d’ID matériel

Nom de la valeur du Registre HardwareIDs
Obligatoire ou facultatif Requis
Type Chaînes multiples
Exigences en matière de format Doit inclure le préfixe de bus de l’ID matériel. Tous les caractères "" doivent être remplacés par un # .
Exemples USB#VID_1234&PID_ABCD&REV_0001, PCI#VEN_ABCD&DEV_1234&SUBSYS_000
Commentaire Plusieurs valeurs d’ID matériel peuvent être fournies. Lorsque l’un des ID matériels apparaît dans la liste plus d’une fois, le système définit l’ID du modèle du nœud de périphérique en fonction de l’ID matériel.

Valeur de registre PLD_Panel

Nom de la valeur du Registre PLD_Panel
Obligatoire ou facultatif Facultatif
Type DWORD
Exigences en matière de format Doit inclure le préfixe de bus de l’ID matériel (HardwareID). Tous les caractères « \ » doivent être remplacés par un #.
Exemples 4,5

Détails de PLD_Panel

La valeur PLD_Panel fournie dans les tables ACPI permet de distinguer les caméras les unes des autres lorsqu’un système possède deux dispositifs de caméra identiques et qu’ils ont tous deux des ID matériels identiques. Pour créer différents ID de modèle, la combinaison des ID matériels et de la valeur PLD_Panel est utilisée.

Remarque

Le paramètre PLD_Panel dans la clé de registre est facultatif. Windows détermine l’emplacement physique de la caméra par les paramètres dans la table ACPI.

La valeur de registre PLD_Panel est définie comme _PLD (Emplacement physique du périphérique) dans la spécification ACPI. Cette valeur, qui indique l’emplacement physique de la caméra dans son boîtier, doit être l’une des suivantes.

Valeur Description
0 Haut
1 Bas
2 Left
3 Right
4 Front
5 Précédent
6 Inconnu (la position verticale et la position horizontale seront ignorées)

Exemples de clés de registre InternalDeviceModification

Les exemples suivants illustrent le format de la clé de registre InternalDeviceModification.

{00001111-2222-3333-4444-555566667777}
      HardwareIDs (Multi sz) =
      "USB#VID_1234&PID_ABCD&REV_0001","USB#VID_1234&PID_ABCD"
      PLD_Panel (DWORD) = 4
{88889999-aaaa-bbbb-cccc-ddddeeeeffff}
      HardwareIDs (multi sz) = "USB#VID_5678&PID_WXYZ&REV_0001"
      PLD_Panel (DWORD) = 5
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification\{BBBF38D6-9866-493D-B86F-986E339E096D}]
"PLD_Panel"=dword:00000004
"HardwareIDs"=hex(7):55,00,53,00,42,00,23,00,56,00,49,00,44,00,5f,00,30,00,34,\
  00,35,00,45,00,26,00,50,00,49,00,44,00,5f,00,30,00,30,00,31,00,30,00,23,00,\
  52,00,45,00,56,00,5f,00,30,00,30,00,30,00,31,00,00,00,55,00,53,00,42,00,23,\
  00,56,00,49,00,44,00,5f,00,30,00,34,00,35,00,45,00,26,00,50,00,49,00,44,00,\
  5f,00,30,00,30,00,31,00,30,00,00,00,00,00

Structure des métadonnées

Le package de métadonnées de périphérique pour une caméra interne a la même structure que le package de métadonnées de périphérique pour tout autre périphérique. La MetadataKey dans packageinfo.xml à l’intérieur du package de métadonnées de périphérique est l’ID du modèle défini à l’aide de la clé de registre InternalDeviceModification. Le système de métadonnées Windows télécharge le package de métadonnées de périphérique en fonction de l’ID du modèle. L’ID matériel de la caméra interne n’est pas utilisé.

Pour plus d’informations sur la création de métadonnées de périphérique pour votre application UWP pour périphérique, consultez Création d’applications UWP pour périphériques.

Pré-installation

L’application de périphérique Microsoft Store et le package de métadonnées de périphérique peuvent être préinstallés sur le périphérique à l’aide du Kit de préinstallation OEM (OPK).

Applications UWP pour périphériques internes