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) :
Installez Windows sur le PC cible
Allez dans Gestionnaire de périphériques
Sélectionnez et maintenez (ou cliquez avec le bouton droit) sur votre webcam cible et sélectionnez Propriétés
Ouvrez l’onglet Détails et sélectionnez Adresse dans le menu Propriété
La valeur dans la boîte Valeur est l’adresse à laquelle votre périphérique est situé
Définissez la valeur dans _ADR dans la table ACPI
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.
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).