Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara mengaktifkan penggantian gambar untuk kamera yang mendukung pelaporan status rana. Ini juga menjelaskan cara memberikan gambar penggantian kustom.
Driver kamera yang memiliki rana/sakelar privasi sebelum implementasi fitur ini menyediakan sampel dari sensor kamera atau harus menerapkan fungsionalitas kepemilikan untuk mendeteksi status rana dan mengganti sampel itu sendiri. Fitur ini memungkinkan driver kamera untuk mengandalkan OS untuk mengganti gambar dalam sampel dengan solusi yang disediakan OS, atau gambar kustom yang disediakan oleh driver Kamera.
Mulai dari Windows 11, versi 21H2, Windows Hardware Compatibility Program (WHCP) memerlukan kamera yang dilengkapi dengan rana privasi atau sakelar pemutus untuk melaporkan status rana kamera. Persyaratan ini memungkinkan sistem operasi dan aplikasi untuk mengetahui status rana saat ini dan digunakan untuk memberikan panduan pengguna yang bermanfaat tentang cara mengubah status rana. Mitra OEM menggunakan mekanisme ini untuk membangun fungsionalitas ke driver mereka untuk mengganti gambar yang berasal dari kamera dengan sesuatu yang informatif bagi pengguna. Fitur ini memungkinkan OEM untuk menggunakan fungsionalitas yang sama ini tanpa harus menulis kode kepemilikan di dalam DeviceMFT.
Persyaratan
Fitur ini hanya diimplementasikan oleh kamera yang memiliki sakelar rana/matikan privasi. Detail implementasi untuk penutup privasi dijelaskan dalam artikel Pemberitahuan penutup/saklar privasi.
Perangkat yang ingin mendukung gambar kustom untuk penggantian gambar juga harus menyediakan biner yang ditandatangani, bagian dari paket driver mereka yang berisi gambar penggantinya.
Karena penggantian gambar menimpa buffer keluaran yang ada, perangkat menghasilkan frame yang tidak terkompresi. Untuk frame terkompresi seperti MJPEG dan JPEG, tidak terjadi penggantian gambar, dan gambar asli dari driver dikirimkan sebagai gantinya.
Gambaran umum implementasi
Penggantian gambar terjadi ketika perangkat mengirimkan pemberitahuan bahwa penutup rana perangkat telah ditutup. Jika status rana tertutup dan penggantian gambar diaktifkan, alur kamera memuat gambar pengganti, baik dari gambar kustom yang disediakan oleh driver kamera atau menggunakan gambar penggantian kotak masuk yang ditampilkan di sini.
Saat dimuat, jaringan pemrosesan menerjemahkan gambar ke dalam buffer output yang cocok dengan resolusi dan jenis media yang sama seperti jenis media yang dipilih saat ini dari driver kamera. Jika resolusi berbeda, gambar diskalakan ke atas atau ke bawah, tetapi tidak direntangkan di luar rasio aspek yang ada.
Sejak saat itu, hingga status rana diubah menjadi terbuka, semua sampel yang dikirimkan oleh driver kamera memiliki metadata dan atribut sampel yang disalin ke dalam sampel baru dan mediabuffer mereka dihapus. Mediabuffer baru disalin dari gambar shutter yang telah diterjemahkan dan digunakan sebagai pengganti. Sampel baru ini kemudian akan dikirim melalui alur seolah-olah itu adalah sampel asli.
Panduan implementasi
Untuk mengaktifkan penggantian gambar, entri registri berikut harus ditambahkan ke simpul antarmuka perangkat kamera, dengan nilai diatur ke 1.
| Jenis Regkey | Nama Regkey | Nilai Kunci Registri |
|---|---|---|
| REG_DWORD | Aktifkan Penggantian Gambar | 0x1 |
Untuk driver INF, ini dapat ditambahkan seperti ditunjukkan di sini.
...
[Device.AddReg]
HKR,,EnableImageReplacement,%REG_DWORD%,1
...
[Strings]
REG_DWORD=0x00010001
Untuk Deskriptor MS-OS, ini dapat ditambahkan sebagai nama berikut:
UVC-EnableImageReplacement
Gambar kustom
Untuk penggantian gambar kustom, driver harus memberikan hal berikut:
Satu atau beberapa file gambar format BMP jenis ARGB32 dengan ukuran 1000 x 1000 piksel. Dalam contoh ini, itu adalah "TestImage.bmp".
DLL sumber daya, dengan file gambar yang disertakan sebagai bagian dari sumber daya. Dalam contoh ini, SampleSocMFT.dll.
File gambar yang disediakan driver harus berupa gambar ARGB32 1000 x 1000 piksel. Ini menggantikan gambar yang ditunjukkan dalam gambaran umum implementasi. Semua perubahan lain pada sampel terjadi seperti yang dijelaskan, hanya gambar yang digantikan yang kustom untuk driver. DLL sumber daya harus menjadi bagian dari paket driver serta harus ditandatangani. Untuk sebagian besar perangkat, ini berarti menempatkannya di Driver DeviceMFT.
Untuk menambahkan file gambar ke DLL sumber daya, ubah file sumber daya proyek *.rc dengan contoh berikut.
#ifdef ID_REPLACEMENT_IMAGE
#define ID_REPLACEMENT_IMAGE 200
#endif
ID_REPLACEMENT_IMAGE RCDATA "TestImage.bmp"
Langkah selanjutnya adalah memodifikasi INF driver. Jika DLL sumber daya yang digunakan adalah baru, itu harus menjadi bagian dari direktif CopyFiles. Terakhir, tiga direktif AddReg tambahan perlu ditambahkan.
[SourceDisksFiles]
AvsCameraSim.sys=1
SampleSocMFT.dll=1
[DestinationDir]
AvsCameraSim.CopySys=13
AvsCameraSim.CopyDMFT=13
[AvsCameraSim.CopySys]
AvsCameraSim.sys
[AvsCameraSim.CopyDMFT]
SampleSocMFT.dll
[AvsCameraSim]
Include=ks.inf, kscaptur.inf
Needs=KS.registration, KSCaptur.Registration.NT
CopyFiles=AvsCameraSim.CopySys, AvsCameraSim.CopyDMFT
AddReg=AvsCameraSim.AddReg
[AvsCameraSim.AddReg]
HKR,,CameraImageResource,,%13%\%DMFT.NAME%
HKR,,CameraImageResourceID,%REG_DWORD%,%ResourceID%
HKR,,EnableImageReplacement,%REG_DWORD%,1
[Strings]
DMFT.Name="SampleSocMFT.dll"
REG_DWORD=0x00010001
;localizable
ResourceID=200
...
Pengidentifikasi INF ResourceID dan ID_REPLACEMENT_IMAGE untuk sumber daya harus dicocokkan. Nilai-nilai ini dapat disesuaikan sehingga DLL sumber daya tunggal dapat berisi beberapa ID sumber daya dan beberapa gambar, dan INF dapat dilokalkan untuk memilih ID sumber daya yang benar.
Batas gambar kustom
Untuk gambar kustom yang tidak menginginkan batas hitam saat kotak surat terjadi, mereka dapat menentukan struktur MFARGB melalui registri yang menyesuaikan warna batas sampel pengganti.
| Jenis Regkey | Nama Regkey | Nilai Kunci Registri |
|---|---|---|
| REG_BINARY | WarnaLatarBelakangGambarKamera | 0x1 |
Untuk driver INF, dapat ditambahkan seperti yang ditunjukkan di sini:
...
[Device.AddReg]
HKR,,CameraImageBackgroundColor,%REG_ BINARY%,00,00,00,FF
[Strings]
REG_BINARY=0x00000001