Identificazione della posizione delle fotocamere interne (app per dispositivi UWP)

Questo argomento fornisce informazioni sul supporto di fotocamere interne nei sistemi in Windows 8.1. Descrive come identificare la posizione fisica delle fotocamere predefinite in modo che funzionino correttamente con le app UWP. Descrive anche come impostare l'ID modello in modo che la fotocamera funzioni con le app per dispositivi UWP. Per altre informazioni sulle app per dispositivi UWP in generale, vedi Soddisfare le app per dispositivi UWP.

Fornire la posizione fisica

I sistemi con telecamere incorporate con direzione meccanicamente fissa devono segnalare la posizione fisica delle telecamere. Queste informazioni sulla posizione fisica indicano la direzione in cui si trova la fotocamera, ad esempio davanti o indietro, in modo che le app per l'uso della fotocamera in Windows 8.1 funzionino correttamente.

Sono necessari i due requisiti di certificazione hardware Windows seguenti, che consentono a Windows di riconoscere la posizione di una fotocamera:

  • System.Client.PCContainer.PCAppearsAsSingleObject. La fotocamera deve essere raggruppata nel contenitore del dispositivo del computer, che contiene le funzioni del dispositivo che si trovano fisicamente all'interno del computer. Una fotocamera deve essere raggruppata nel contenitore del dispositivo del computer per esporre la posizione fisica alle app, perché si presuppone che i dispositivi esterni al contenitore del computer non abbiano una direzione meccanicamente fissa.

  • System.Client.Webcam.PhysicalLocation. Il firmware deve fornire informazioni sulla posizione fisica, utilizzando le informazioni _PLD nelle tabelle ACPI per indicare la posizione e l'orientamento della fotocamera.

Perché Windows richiede le fotocamere di posizione fisica

Windows deve conoscere la posizione fisica delle fotocamere interne per i motivi seguenti:

  • Le app UWP usano la posizione fisica per determinare quale fotocamera usare se sono presenti più fotocamere. Ad esempio, un'applicazione di chat usa per impostazione predefinita la fotocamera anteriore che affronta l'utente all'avvio dell'app.

  • Le app UWP usano la posizione fisica per determinare come eseguire il mirroring o ruotare l'anteprima video.

  • Se la fotocamera è rivolta all'utente, l'anteprima dovrebbe apparire come se l'utente stia guardando uno specchio. A tale scopo, l'app capovolge i lati sinistro e destro dell'anteprima, in modo che l'anteprima rispecchi il video. Se la fotocamera si trova lontano dall'utente, l'app non deve eseguire il mirroring del video.

  • Se l'app ruota l'anteprima, il grado di rotazione varia a seconda della posizione della fotocamera.

Come raggruppare la fotocamera nel contenitore di dispositivi dei computer

In conformità con il requisito di certificazione System.Client.PCContainer.PCAppearsAsSingleObject, noto anche come SYSFUND-0200, i nodi del dispositivo fotocamera interno devono essere raggruppati nel contenitore del dispositivo PC. In altre parole, la fotocamera interna non deve essere visualizzata in Dispositivi e stampanti e deve essere consolidata nel contenitore PC.

Il modo per implementare questo requisito dipende dal tipo di bus della fotocamera interna. Se il dispositivo può esporre informazioni sulla posizione del dispositivo fisico nelle tabelle ACPI, è possibile specificare il raggruppamento corretto nel livello ACPI includendo _PLD informazioni nelle tabelle e modificando il flag UserVisible nella tabella ACPI, come descritto in Supporto dispositivi multifunzione e Raggruppamenti di contenitori di dispositivi. In caso contrario, eseguire l'override del flag rimovibile usando la chiave del Registro di sistema DeviceOverrides. Per altre info, vedi Chiave del Registro di sistema DeviceOverrides.

Come fornire la posizione fisica usando _PLD informazioni nella tabella ACPI

In conformità con il requisito di certificazione System.Client.Webcam.PhysicalLocation, il valore _PLD che indica la posizione della fotocamera deve essere fornito nella tabella ACPI (Advanced Configuration and Power Interface). Questo vale per qualsiasi dispositivo fotocamera integrato nello chassis del sistema e ha una direzione meccanicamente fissa. Il firmware deve fornire il metodo _PLD e impostare il campo Pannello (bit 69:67) sul valore appropriato per il pannello in cui è montata la fotocamera. Ad esempio, Front indica che la fotocamera è rivolta all'utente (webcam), mentre Indietro indica che la fotocamera si trova lontano dall'utente finale (ancora o videocamera).

Valore dei bit 69:67 Panel
0 In alto
1 In basso
2 Sinistra
3 Right
4 Front
5 Back
6 Sconosciuto

Inoltre, bit 143:128 (offset verticale) e bit 159:144 (offset orizzontale) devono fornire la posizione relativa della fotocamera rispetto allo schermo. Questa origine è relativa all'indirizzamento pixel nativo nel componente di visualizzazione e deve corrispondere all'orientamento dello schermo attuale del orizzontale o verticale. L'origine è l'angolo inferiore sinistro dello schermo, dove i valori di offset orizzontale e verticale positivi sono rispettivamente a destra e in alto.

Per una fotocamera interna connessa tramite USB, il nodo del dispositivo per il dispositivo USB verrebbe creato nella tabella ACPI in un nodo dispositivo porta USB.

Per specificare l'indirizzo (_ADR):

  1. Installare Windows nel PC di destinazione

  2. Vai a Gestione dispositivi

  3. Selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) sulla webcam di destinazione e scegliere Proprietà

  4. Aprire la scheda Dettagli e selezionare Indirizzo nel menu Proprietà

  5. Il valore nella casella Valore è l'indirizzo in cui si trova il dispositivo

  6. Impostare il valore in _ADR nella tabella ACPI

  7. Impostare il valore _PLD in base alla specifica ACPI e alla progettazione del PC

Questo esempio è una tabella ACPI per una fotocamera connessa tramite USB. In questo esempio il valore è 0x1. Il nono byte contiene il codice del pannello per la posizione (bit[69:67]). Si noti che se il dispositivo è un dispositivo composito USB, il PLD deve trovarsi nella FUNZIONE video. Ciò significa che sarebbe necessaria una voce device() aggiuntiva.

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

Per informazioni più dettagliate sulle _PLD, vedere la specifica ACPI.

Per i nodi downstream di USBCCGP, il valore dell'indirizzo viene calcolato aggiungendo il numero di porta al primo numero di interfaccia della funzione della fotocamera. Se USBCCGP non viene caricato per il dispositivo, l'indirizzo è semplicemente il numero di porta. Se è necessario stimare il numero di indirizzo senza installare Windows, usare questa formula per calcolarla. Se il dispositivo di destinazione è un singolo dispositivo funzione (senza usare il dispositivo di stile composito USB), il valore dell'indirizzo viene calcolato usando solo il numero di porta.

Fornire l'ID modello

Il sistema di metadati del dispositivo Windows è in grado di eseguire query per un pacchetto di metadati del dispositivo della fotocamera incorporata internamente solo se il nodo del dispositivo della fotocamera ha una proprietà Model ID e la categoria di dispositivi è Imaging.Webcam. Per rendere individuabili i metadati di una fotocamera interna da Windows in modo che il pacchetto di metadati del dispositivo sia associato correttamente al dispositivo e all'app per dispositivi UWP specifica della fotocamera, un OEM deve eseguire le operazioni seguenti:

  • Impostare l'ID modello nel nodo del dispositivo usando il InternalDeviceModification flag nella chiave del Registro di sistema del dispositivo

Come impostare l'ID modello per il nodo del dispositivo della fotocamera interna

Per le fotocamere interne, l'OEM crea un GUID da usare per l'ID modello e ne crea una chiave del Registro di sistema. La proprietà MODEL ID viene aggiunta al nodo del dispositivo usando il meccanismo InternalDeviceModification, ovvero una tabella di ricerca basata sul Registro di sistema (LUT) costituita da chiavi del Registro di sistema mappate a dispositivi specifici. Questa tabella InternalDeviceModification viene mantenuta nella chiave del Registro di sistema seguente:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification

La voce della sottochiave da creare nella chiave del Registro di sistema InternalDeviceModification è il GUID fornito dall'OEM per ModelID. La presenza di questa chiave aggiunge l'ID modello al nodo del dispositivo della fotocamera, in base all'ID hardware del dispositivo e alle informazioni sulla posizione indicate dal valore _PLD nella tabella ACPI.

registry keys and values for internaldevicemodification.

Chiave del Registro di sistema InternalDeviceModification

La chiave del Registro di sistema InternalDeviceModification indica che almeno una fotocamera usa ModelID.

Nome della chiave del Registro di sistema InternalDeviceModification
Obbligatoria/facoltativa Richiesto
Percorso HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Requisiti di formato None
Sottochiavi validi Chiave del Registro di sistema dell'ID modello (vedere i requisiti e gli esempi di formato della sottochiave seguenti)

Chiave del Registro di sistema dell'ID modello

Nome della chiave del Registro di sistema ID modello (il valore esatto dell'ID modello è il nome della chiave)
Obbligatoria/facoltativa Richiesto
Requisiti di formato Il nome della chiave è un GUID creato dall'OEM. Deve avere sia parentesi di apertura che di chiusura.
Valori validi Valori del Registro di sistema dell'ID hardware o PLD_Panel
Esempi {43922620-DAD9-4C05-BE3F-F65B089D84D8}

Valore del Registro di sistema dell'ID hardware

Nome del valore del Registro di sistema HardwareID
Obbligatoria/facoltativa Obbligatorio
Type Multistringa
Requisiti di formato Deve includere il prefisso del bus dell'ID hardware. Tutti i caratteri "" devono essere sostituiti con un "#".
Esempi USB#VID_1234&PID_ABCD&REV_0001, PCI#VEN_ABCD&DEV_1234&SUBSYS_000
Commento È possibile specificare più valori di ID hardware. Quando si verifica più volte uno degli ID hardware nell'elenco, il sistema imposta l'ID modello del nodo del dispositivo in base all'ID hardware.

PLD_Panel valore del Registro di sistema

Nome del valore del Registro di sistema PLD_Panel
Obbligatoria/facoltativa Facoltativo
Type DWORD
Requisiti di formato Deve includere il prefisso del bus di HardwareID. Tutti i caratteri "\" devono essere sostituiti con un "#".
Esempi 4,5

dettagli PLD_Panel

Il valore PLD_Panel fornito nelle tabelle ACPI consente di distinguere le fotocamere l'una dall'altra quando un sistema dispone di due dispositivi fotocamera identici e entrambi hanno ID hardware identici. Per creare ID modello diversi, viene usata la combinazione di ID hardware e PLD_Panel valore.

Nota

L'impostazione PLD_Panel nella chiave del Registro di sistema è facoltativa. Windows determina la posizione fisica della fotocamera in base alle impostazioni nella tabella ACPI.

Il valore del Registro di sistema PLD_Panel viene definito come _PLD (Posizione dispositivo fisico) nella specifica ACPI. Questo valore, che indica la posizione fisica della fotocamera nell'enclosure, deve essere uno dei seguenti.

Valore Descrizione
0 In alto
1 In basso
2 Sinistra
3 Right
4 Front
5 Back
6 Sconosciuto (posizione verticale e posizione orizzontale verranno ignorati)

Esempi di chiavi del Registro di sistema InternalDeviceModification

Gli esempi seguenti illustrano il formato della chiave del Registro di sistema 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

Struttura dei metadati

Il pacchetto di metadati del dispositivo per una fotocamera interna ha la stessa struttura del pacchetto di metadati del dispositivo per qualsiasi altro dispositivo. MetadataKey in packageinfo.xml all'interno del pacchetto di metadati del dispositivo è l'ID modello definito usando la chiave del Registro di sistema InternalDeviceModification. Il sistema di metadati di Windows scarica il pacchetto di metadati del dispositivo in base all'ID modello. L'ID hardware della fotocamera interna non viene utilizzato.

Per altre info sulla creazione di metadati dei dispositivi per l'app per dispositivi UWP, vedi Creazione di app per dispositivi UWP.

Preinstallazione

Sia l'app per dispositivi di Microsoft Store che il pacchetto di metadati del dispositivo possono essere preinstallati nel dispositivo usando OEM Preinstallation Kit (OPK).

App per dispositivi UWP per dispositivi interni