Mengidentifikasi lokasi kamera internal (aplikasi perangkat UWP)

Topik ini menyediakan info tentang mendukung kamera internal pada sistem di Windows 8.1. Ini menjelaskan cara mengidentifikasi lokasi fisik kamera bawaan sehingga berfungsi dengan benar dengan aplikasi UWP. Ini juga menjelaskan cara mengatur ID Model sehingga kamera berfungsi dengan aplikasi perangkat UWP. Untuk mempelajari selengkapnya tentang aplikasi perangkat UWP secara umum, lihat Memenuhi aplikasi perangkat UWP.

Menyediakan lokasi fisik

Sistem dengan kamera bawaan dengan arah tetap mekanis harus melaporkan lokasi fisik kamera. Info lokasi fisik ini menunjukkan arah mana yang dihadapi kamera, seperti depan atau belakang, sehingga aplikasi untuk menggunakan kamera di Windows 8.1 berfungsi dengan benar.

Dua Persyaratan Sertifikasi Perangkat Keras Windows berikut, yang memungkinkan Windows mengenali lokasi kamera, diperlukan:

  • System.Client.PCContainer.PCAppearsAsSingleObject. Kamera harus dikelompokkan ke dalam kontainer perangkat komputer, yang berisi fungsi perangkat yang terletak secara fisik di dalam komputer. Kamera harus dikelompokkan ke dalam kontainer perangkat komputer untuk mengekspos lokasi fisiknya ke aplikasi, karena perangkat di luar kontainer komputer tidak diasumsikan memiliki arah yang tetap secara mekanis.

  • System.Client.Webcam.PhysicalLocation. Firmware harus memberikan info lokasi fisik, dengan menggunakan informasi _PLD dalam tabel ACPI untuk menunjukkan lokasi dan orientasi kamera.

Mengapa Windows memerlukan kamera lokasi fisik

Windows perlu mengetahui lokasi fisik kamera internal karena alasan berikut:

  • Aplikasi UWP menggunakan lokasi fisik untuk menentukan kamera mana yang akan digunakan jika ada beberapa kamera. Misalnya, aplikasi obrolan akan default menggunakan kamera depan yang menghadap pengguna saat aplikasi dimulai.

  • Aplikasi UWP menggunakan lokasi fisik untuk menentukan cara mencerminkan atau memutar pratinjau video.

  • Jika kamera menghadap pengguna, pratinjau akan terlihat seolah-olah pengguna melihat ke cermin. Untuk melakukan ini, aplikasi akan membalik sisi kiri dan kanan pratinjau, sehingga pratinjau mencerminkan video. Jika kamera menghadap jauh dari pengguna, aplikasi tidak perlu mencerminkan video.

  • Jika aplikasi memutar pratinjau, tingkat rotasi berbeda tergantung pada posisi kamera.

Cara mengelompokkan kamera ke dalam kontainer perangkat komputer

Sesuai dengan persyaratan sertifikasi System.Client.PCContainer.PCAppearsAsSingleObject, juga dikenal sebagai SYSFUND-0200, simpul perangkat kamera internal harus dikelompokkan di bawah kontainer perangkat PC. Dengan kata lain, kamera internal tidak boleh ditampilkan di Perangkat dan Printer dan harus dikonsolidasikan ke dalam kontainer PC.

Cara untuk menerapkan persyaratan ini tergantung pada jenis bus kamera internal. Jika perangkat dapat mengekspos informasi tentang lokasi perangkat fisik dalam tabel ACPI, pengelompokan yang benar dapat ditentukan dalam lapisan ACPI dengan menyertakan informasi _PLD dalam tabel dan memodifikasi bendera UserVisible dalam tabel ACPI, seperti yang dijelaskan dalam Dukungan Perangkat Multifungsi dan Pengelompokan Kontainer Perangkat. Jika tidak, ganti bendera yang dapat dilepas dengan menggunakan kunci registri DeviceOverrides. Untuk informasi selengkapnya, lihat Kunci Registri DeviceOverrides.

Cara menyediakan lokasi fisik menggunakan info _PLD dalam tabel ACPI

Sesuai dengan persyaratan sertifikasi System.Client.Webcam.PhysicalLocation, nilai _PLD yang menunjukkan lokasi kamera harus disediakan dalam tabel ACPI (Konfigurasi Lanjutan dan Antarmuka Daya). Ini berlaku untuk perangkat kamera apa pun yang dibangun ke dalam sasis sistem dan memiliki arah tetap mekanis. Firmware harus menyediakan metode _PLD dan mengatur bidang Panel (bit 69:67) ke nilai yang sesuai untuk panel tempat kamera dipasang. Misalnya, Front menunjukkan kamera menghadap pengguna (webcam), sementara Back menunjukkan bahwa kamera menghadap jauh dari pengguna akhir (kamera diam atau video).

Nilai bit 69:67 Panel
0 Atas
1 Bawah
2 Left
3 Right
4 Front
5 Back
6 Tidak dikenal

Selain itu, bit 143:128 (Offset Vertikal), dan bit 159:144 (Offset Horizontal) harus menyediakan lokasi relatif kamera sehubungan dengan tampilan. Asal ini relatif terhadap alamat piksel asli dalam komponen tampilan dan harus cocok dengan orientasi tampilan lanskap atau potret saat ini. Asalnya adalah sudut kiri bawah layar, di mana nilai Offset Horizontal dan Vertikal positif berada di sebelah kanan dan atas, masing-masing.

Untuk kamera internal yang terhubung dengan USB, simpul perangkat untuk perangkat USB akan dibuat dalam tabel ACPI di bawah simpul perangkat Port USB.

Untuk menentukan alamat (_ADR):

  1. Menginstal Windows ke PC target

  2. Buka Manajer Perangkat

  3. Pilih dan tahan (atau klik kanan) webcam target Anda dan pilih Properti

  4. Buka tab Detail dan pilih Alamat di menu Properti

  5. Nilai dalam kotak Nilai adalah alamat tempat perangkat Anda berada

  6. Mengatur nilai dalam _ADR dalam tabel ACPI

  7. Atur nilai _PLD berdasarkan spesifikasi ACPI dan desain PC

Contoh ini adalah tabel ACPI untuk kamera yang terhubung dengan USB. Dalam contoh ini, nilainya 0x1. Byte kesembilan berisi kode panel untuk lokasi (bit[69:67]). Perhatikan bahwa jika perangkat adalah perangkat komposit USB, PLD harus berada di FUNGSI video. Ini berarti entri Device() tambahan akan diperlukan.

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

Lihat spesifikasi ACPI untuk informasi lebih rinci untuk _PLD.

Untuk simpul di hilir USBCCGP, nilai alamat dihitung dengan menambahkan nomor port ke nomor antarmuka pertama fungsi kamera. Jika USBCCGP tidak dimuat untuk perangkat, alamatnya hanyalah nomor port. Jika Anda perlu memprediksi nomor alamat tanpa menginstal Windows, silakan gunakan rumus ini untuk menghitungnya. Jika perangkat target adalah perangkat fungsi tunggal (tanpa menggunakan perangkat gaya komposit USB), nilai alamat dihitung hanya menggunakan nomor port.

Menyediakan ID Model

Sistem metadata perangkat Windows dapat mengkueri paket metadata perangkat kamera yang disematkan secara internal hanya jika simpul perangkat kamera memiliki properti ID Model dan kategori perangkat adalah Imaging.Webcam. Untuk membuat metadata kamera internal dapat ditemukan oleh Windows sehingga paket metadata perangkat dikaitkan dengan perangkat dan aplikasi perangkat UWP khusus kamera, OEM perlu melakukan hal berikut:

  • Atur ID Model di simpul perangkat, dengan menggunakan InternalDeviceModification bendera di kunci registri perangkat

Cara mengatur ID Model untuk simpul perangkat kamera internal

Untuk kamera internal, OEM membuat GUID yang akan digunakan untuk ID Model dan membuat kunci registri untuknya. Properti ID Model ditambahkan ke simpul perangkat dengan menggunakan mekanisme InternalDeviceModification, yang merupakan tabel pencarian berbasis registri (LUT) yang terdiri dari kunci registri yang memetakan ke perangkat tertentu. Tabel InternalDeviceModification ini dipertahankan di bawah kunci registri berikut:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification

Entri subkunci untuk dibuat di bawah kunci registri InternalDeviceModification adalah GUID yang disediakan OEM untuk ModelID. Kehadiran kunci ini menambahkan ID Model ke simpul perangkat kamera, berdasarkan ID perangkat keras perangkat dan informasi lokasi yang ditunjukkan oleh nilai _PLD dalam tabel ACPI.

registry keys and values for internaldevicemodification.

Kunci registri InternalDeviceModification

Kunci registri InternalDeviceModification menunjukkan bahwa setidaknya satu kamera menggunakan ModelID.

Nama kunci registri InternalDeviceModification
Diperlukan/opsional Wajib
Jalur HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Persyaratan format Tidak
Subkunjuk yang valid Kunci registri ID model (lihat persyaratan dan contoh format subkey berikut)

Kunci registri ID model

Nama kunci registri ID Model (nilai ID model yang tepat adalah nama kunci)
Diperlukan/opsional Wajib
Persyaratan format Nama kunci adalah GUID yang dibuat oleh OEM. Ini harus memiliki tanda kurung buka dan tutup.
Nilai yang valid Nilai registri ID perangkat keras atau PLD_Panel
Contoh {43922620-DAD9-4C05-BE3F-F65B089D84D8}

Nilai registri ID perangkat keras

Nama nilai registri Perangkat KerasID
Diperlukan/opsional Wajib
Tipe Multi-string
Persyaratan format Harus menyertakan awalan bus dari ID Perangkat Keras. Semua karakter "" harus diganti dengan "#".
Contoh USB#VID_1234&PID_ABCD&REV_0001, PCI#VEN_ABCD&DEV_1234&SUBSYS_000
Komentar Beberapa nilai ID perangkat keras dapat disediakan. Ketika salah satu ID perangkat keras terjadi dalam daftar lebih dari sekali, sistem mengatur ID Model simpul perangkat berdasarkan ID perangkat keras.

nilai registri PLD_Panel

Nama nilai registri PLD_Panel
Diperlukan/opsional Opsional
Jenis DWORD
Persyaratan format Harus menyertakan awalan bus dari HardwareID. Semua karakter "\" harus diganti dengan "#".
Contoh 4.5

Detail PLD_Panel

Nilai PLD_Panel yang disediakan dalam tabel ACPI memungkinkan kamera dibedakan satu sama lain ketika sistem memiliki dua perangkat kamera yang identik dan keduanya memiliki ID perangkat keras yang identik. Untuk membuat ID Model yang berbeda, kombinasi ID perangkat keras dan nilai PLD_Panel digunakan.

Catatan

Pengaturan PLD_Panel dalam kunci registri bersifat opsional. Windows menentukan lokasi fisik kamera berdasarkan pengaturan dalam tabel ACPI.

Nilai registri PLD_Panel didefinisikan sebagai _PLD (Lokasi Perangkat Fisik) dalam spesifikasi ACPI. Nilai ini, yang menunjukkan lokasi fisik kamera di penutupnya, harus salah satu dari yang berikut ini.

Nilai Deskripsi
0 Atas
1 Bawah
2 Left
3 Right
4 Front
5 Back
6 Tidak diketahui (Posisi vertikal dan Posisi horizontal akan diabaikan)

Contoh kunci registri InternalDeviceModification

Contoh berikut menunjukkan format kunci registri 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

Struktur metadata

Paket metadata perangkat untuk kamera internal memiliki struktur yang sama dengan paket metadata perangkat untuk perangkat lain. MetadataKey di packageinfo.xml dalam paket metadata perangkat adalah ID Model yang ditentukan dengan menggunakan kunci registri InternalDeviceModification. Sistem metadata Windows mengunduh paket metadata perangkat berdasarkan ID Model. ID perangkat keras kamera internal tidak digunakan.

Untuk informasi selengkapnya tentang membuat metadata perangkat untuk aplikasi perangkat UWP Anda, lihat Membangun aplikasi perangkat UWP.

Pra-penginstalan

Aplikasi perangkat Microsoft Store dan paket metadata perangkat dapat diinstal sebelumnya pada perangkat menggunakan Kit Pra-instalan OEM (OPK).

Aplikasi perangkat UWP untuk perangkat internal