Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
1 Genel Bakış
1.1 Özet
USB Video Sınıfı belirtiminin Microsoft uzantıları, yeni denetimleri ve iyi tanımlanmış çerçeve meta verilerini standart bir biçimde taşıma özelliğini etkinleştirir.
1.2 Mimari Kararları
USB Video Sınıfı (UVC) çerçeve meta veri desteği ISOCH ve BULK uç noktaları için kullanılabilir. Ancak BULK uç noktası söz konusu olduğunda meta veri boyutu 240 baytla sınırlıdır (çünkü tüm video çerçevesi verileri BULK uç noktalarındaki tek bir video çerçevesi paketine aktarılır).
UVC meta veri desteği yalnızca çerçeve tabanlı yüklerde kullanılabilir.
UVC meta veri desteği yalnızca Media Foundation (MF) capture pipeline aracılığıyla kullanılabilir.
UVC meta verileri isteğe bağlıdır. Meta veri desteğine ihtiyaç duyan her IHV/OEM özel bir INF dosyası aracılığıyla etkinleştirilmelidir.
UVC meta verileri yalnızca sistem tarafından ayrılan belleği destekler. VRAM veya DX yüzeyleri desteklenmez.
2 Mimariye Genel Bakış
2.1 Açıklama
2.2.1 INF aracılığıyla yetenek bulma
2.2.1.1 Hareketsiz Görüntü Yakalama – Yöntem 2
Bazı mevcut UVC cihazları, USB Video Sınıfı belirtimi web sitesinde indirilebilen UVC 1.5 Sınıfı specification.pdf'nin bölüm 2.4.2.4 (Hareketsiz Görüntü Yakalama) kısmında açıklanan Yöntem 2’yi desteklemeyebilir.
Windows 10, sürüm 1607 ve önceki sürümlerde, bir cihaz UVC 1.5 spesifikasyonuna göre desteklese de yakalama hattı Yöntem 2'yi kullanmadı.
Windows 10, sürüm 1703'te, bu yöntemi kullanan cihazların kamera sürücüsü için özel bir INF dosyası kullanması gerekir, ancak Yöntem 2 görüntü yakalamayı etkinleştirmek için belirli donanım için özel bir INF gereklidir).
Not: Kamera sürücüsü Windows USBVIDEO.SYS veya özel sürücü ikili dosyasını temel alabilir.
Ya özel UVC sürücüsüne ya da dahili UVC sürücüsüne dayanan özel INF dosyası, aşağıdaki AddReg girişini içermelidir:
EnableDependentStillPinCapture: REG_DWORD: 0x0 (Devre Dışı) ile 0x1 (Etkin)
Bu giriş Etkin (0x1) olarak ayarlandığında, yakalama işlem hattı Durağan Görüntü Yakalama için Yöntem 2'yi kullanır (ayar yazılımının UVC 1.5 spesifikasyonunda belirtildiği gibi Yöntem 2 desteğini sunduğu varsayılır).
Özel INF bölümüne örnek olarak aşağıdakiler gösterilebilir:
[USBVideo.NT.Interfaces]
AddInterface=%KSCATEGORY_CAPTURE%,GLOBAL,USBVideo.Interface
AddInterface=%KSCATEGORY_RENDER%,GLOBAL,USBVideo.Interface
AddInterface=%KSCATEGORY_VIDEO%,GLOBAL,USBVideo.Interface
AddInterface=%KSCATEGORY_RENDER_EXT%,GLOBAL,USBVideo.Interface
AddInterface=%KSCATEGORY_VIDEO_CAMERA%,GLOBAL,USBVideo.Interface
[USBVideo.Interface]
AddReg=USBVideo.Interface.AddReg
[USBVideo.Interface.AddReg]
HKR,,CLSID,,%ProxyVCap.CLSID%
HKR,,FriendlyName,,%USBVideo.DeviceDesc%
HKR,,RTCFlags,0x00010001,0x00000010
HKR,,EnableDependentStillPinCapture,0x00010001,0x00000001
2.2.2 Uzantı Birimi Denetimleri
Microsoft'un yeni denetimleri etkinleştirmek için USB Video Sınıfı belirtimine yönelik uzantısı, GUID MS_CAMERA_CONTROL_XU (Microsoft-XUolarak adlandırılır) tarafından tanımlanan bir uzantı birimi aracılığıyla gerçekleştirilir.
// {0F3F95DC-2632-4C4E-92C9-A04782F43BC8}
DEFINE_GUID(MS_CAMERA_CONTROL_XU,
0xf3f95dc, 0x2632, 0x4c4e, 0x92, 0xc9, 0xa0, 0x47, 0x82, 0xf4, 0x3b, 0xc8);
Cihaz üretici yazılımı tarafından uygulanan bir Microsoft-XU aşağıdaki alt bölümlerde tanımlanan yeni denetimleri barındırıyor. Bu denetim için açıkça geçersiz kılma tanımı belirtilmediği sürece, aşağıdaki istek tanımları tüm bu denetimler için geçerlidir. D3, D4, GET_INFO vb. tanımları için UVC 1.5 Sınıf specification.pdfbakın.
GET_INFO isteği, Otomatik Güncelleştirme ve Zaman Uyumsuz yetenekler olmadan denetimi bildirecektir (örneğin, D3 ve D4 bitleri 0 olarak ayarlanmalıdır).
GET_LEN isteği, bu denetim (wLength) için yükün maksimum uzunluğunu bildirecektir.
GET_RES isteği qwValue/dwValue için çözümlemeyi (adım boyutu) bildirecektir. Diğer tüm alanlar 0 olarak ayarlanmalıdır.
GET_MIN isteği qwValue/dwValue için desteklenen en düşük değeri bildirecektir. Diğer tüm alanlar 0 olarak ayarlanmalıdır.
GET_MAX isteği qwValue/dwValue için desteklenen en yüksek değeri bildirecektir. Ayrıca, tüm desteklenen bayraklar bmControlFlags içinde 1 olarak ayarlanmalıdır. Diğer tüm alanlar 0 olarak ayarlanmalıdır.
GET_DEF ve GET_CUR istekleri , qwValue/dwValue ve bmControlFlags alanları için sırasıyla varsayılan ve geçerli ayarları bildirecektir. Diğer tüm alanlar 0 olarak ayarlanmalıdır.
Tüm alanlar ayarlandıktan sonra sunucu tarafından bir SET_CUR isteği gönderilir.
Aşağıdaki tablo, Microsoft-XU için denetim seçicilerini, ilgili değerleriyle ve Uzantı Birimi Tanımlayıcısı'ndaki bmControls alanının bit konumunu gösterir.
| Denetim Seçicisi | Değer | Bit Konumu (bmControls Alanı) |
|---|---|---|
| MSXU_CONTROL_UNDEFINED | 0x00 | NA |
| MSXU_CONTROL_FOCUS | 0x01 | D0 |
| MSXU_CONTROL_POZLAMA | 0x02 | D1 |
| MSXU_CONTROL_EVCOMPENSATION | 0x03 | D2 |
| MSXU_KONTROL_BEYAZDENGESİ | 0x04 | D3 |
| Gelecekte kullanmak üzere ayrılmış | 0x05 | D4 |
| MSXU_KONTROL_YÜZ_DOĞRULAMA | 0x06 | D5 |
| MSXU_KAMERA_DIŞ_BİLGİLERİ_KONTROLÜ | 0x07 | D6 |
| MSXU_CONTROL_CAMERA_INTRINSICS | 0x08 | D7 |
| MSXU_CONTROL_METADATA | 0x09 | D8 |
| MSXU_CONTROL_Kızılötesi_Fener | 0x0A | D9 |
| MSXU_CONTROL_DIGITALWINDOW | 0X0B | D10 |
| MSXU_KONTROL_DİJİTALPENCERE_KONFIGÜRASYON | 0X0C | D11 |
| MSXU_CONTROL_VIDEO_HDR | 0X0D | D12 |
| MSXU_KONTROL_KARE_HIZI_AŞIMI | 0x0E | D13 |
| MSXU_CONTROL_FIELDOFVIEW2_CONFIG | 0x0F | D14 |
| MSXU_CONTROL_FIELDOFVIEW2 | 0x10 | D15 |
2.2.2.1 İptal Edilebilir Denetimler
Burada Otomatik Güncelleştirme özelliği kullanılarak İptal Edilebilir bir denetim tanımlanır.
GET_INFO isteği, Otomatik Güncelleştirme Denetimi (örneğin, D3 bit 1 olarak ayarlanmalıdır) gibi bir denetim bildirecektir ancak zaman uyumsuz denetim olarak bildirilmeyecektir (örneğin, D4 bit 0 olarak ayarlanmalıdır).
Bu tür bir denetim için, bmOperationFlags:D0 bit değerinin 0 olarak ayarlandığı yeni bir değer (SET_CUR(NORMAL) isteği) ayarlamak veya bmOperationFlags:D0 bit değerinin 1 olarak ayarlandığı önceki bir SET_CUR(NORMAL) isteğini (SET_CUR(İptal) isteği) iptal etmek için bir SET_CUR isteği yayımlanabilir. bir SET_CUR isteği, istek alınır alınmaz cihaz tarafından hemen tamamlanmalıdır (donanım yapılandırılmamış veya istenen yeni ayarlara yakınsanmamış olsa bile). Her SET_CUR(NORMAL) isteği için cihaz, yeni ayarlar uygulandığında veya bir SET_CUR(İPTAL) isteği geldiğinde tetiklenen bu denetim için karşılık gelen bir Denetim Değişikliği kesmesi oluşturur; bu kesme gelene kadar, SET_CUR(NORMAL) isteği devam ediyor olarak kabul edilir. bir SET_CUR(NORMAL) isteği devam ederken, bu denetim için ek SET_CUR(NORMAL) istekleri hataya neden olur. bir SET_CUR(İptal) isteği her zaman başarılı olacaktır. İptal etmek için hiçbir şey yoksa cihaz hiçbir şey yapmaz.
Denetim Değişikliği kesme yükünde, SET_CUR(NORMAL) tarafından belirtilen ayarlar uygulandıysa (örneğin, yakınsama gerçekleştiyse) bit bmOperationFlags:D0 0 olarak ayarlanmalıdır ve SET_CUR(NORMAL) isteğinden sonra gelen bir SET_CUR(İPTAL) isteği nedeniyle ayarlar uygulanmadıysa (örneğin, yakınsama henüz gerçekleşmediyse) bit 1 olarak ayarlanmalıdır.
2.2.2.2 Odak Denetimi
Bu denetim, konak yazılımının kamera için odak ayarlarını belirtmesine olanak tanır. Bu, video denetimi arabirimiyle ilişkili tüm video akışı arabirimlerindeki tüm uç noktaları etkileyen genel bir denetimdir.
Bu denetim İptal Edilebilir Denetim işlevi görecektir (GET_INFO istek gereksinimleri ve SET_CUR isteğin işlevsel davranışı için bölüm 2.2.2.1'e bakın).
GET_MAX gereksinimi: Bu denetim , bmControlFlags'ta bit D0, D1, D2, D8 ve D18 için desteği tanıtacaktır.
GET_DEF gereksinimi: bmControlFlags için varsayılan değer D0 ve D18 değeri 1 ve dwValue değeri 0 olarak ayarlanmalıdır.
GET_CUR/SET_CUR istekleri için bmControlFlags alanı için aşağıdaki kısıtlamalar geçerlidir:
D0, D1 ve D8 bitler arasında yalnızca bir bit ayarlanabilir; D2 bit ayarlandıysa bunların hiçbiri de geçerli değildir.
D16, D17, D18, D19 ve D20 arasında yalnızca bir bit ayarlanabilir, bunların hiçbiri de geçerli değildir.
D1 şu anda tanımlanmış diğer tüm bitlerle uyumsuzdur (D0, D2, D8, D16, D17, D18, D19 ve D20).
D2, D1 ve D8 ile uyumsuzdur.
D2, D0 ayarlı değilse D16, D17, D18, D19 ve D20 ile uyumsuzdur.
2.2.2.3 Pozlama Kontrolü
Bu denetim, konak yazılımının kamera için pozlama ayarlarını belirtmesini sağlar. Bu, video denetimi arabirimiyle ilişkili tüm video akışı arabirimlerindeki tüm uç noktaları etkileyen genel bir denetimdir.
GET_INFO isteği bu denetimi Zaman Uyumsuz denetim olarak bildirecektir (örneğin, D4 bit 1 olarak ayarlanmalıdır) ancak Otomatik Güncelleştirme denetimi olarak bildirilmeyecektir (örneğin, D3 bit 0 olarak ayarlanmalıdır).
GET_MAX gereksinimi: Bu denetim , bmControlFlags'ta bit D0, D1 ve D2 için desteği tanıtacaktır.
GET_DEF gereksinimi: bmControlFlags için varsayılan değer D0 değeri 1 ve qwValue değeri 0 olarak ayarlanmalıdır.
GET_CUR/SET_CUR istekleri için bmControlFlags alanı için aşağıdaki kısıtlamalar geçerlidir:
- D0, D1 ve D2 bitleri arasında en az bir bit ayarlanmalıdır.
- D1, D0 ve D2 ile uyumsuzdur.
2.2.2.4 EV Kompanzasyon Kontrolü
Bu denetim, ana bilgisayar yazılımının kamera için EV telafi ayarlarını belirtmesine olanak tanır. Bu, video denetimi arabirimiyle ilişkili tüm video akışı arabirimlerindeki tüm uç noktaları etkileyen genel bir denetimdir.
GET_INFO isteği bu denetimi Zaman Uyumsuz denetim olarak bildirecektir (örneğin, D4 bit 1 olarak ayarlanmalıdır) ancak Otomatik Güncelleştirme denetimi olarak bildirilmeyecektir (örneğin, D3 bit 0 olarak ayarlanmalıdır).
GET_RES talebi, bmControlFlags içindeki ilgili bitleri belirleyerek desteklenen tüm çözünürlükleri (adım boyutu) bildirecektir. Diğer tüm alanlar 0 olarak ayarlanmalıdır.
GET_MIN ve GET_MAX istekleri dwValue için desteklenen en düşük ve en yüksek değeri bildirecektir. Bit D4 (adım boyutunun 1 olduğunu belirtir) bmControlFlags içinde ayarlanan tek ve tek bit olmalıdır. Diğer tüm alanlar 0 olarak ayarlanmalıdır.
GET_DEF, GET_CUR, SET_CUR istekleri bölüm 2.2.2.1'deki tanımları izlemeli ancak bmControlFlags alanı için D0, D1, D2, D3 ve D4 bitleri arasında bir ve yalnızca bir bit ayarlıdır. Ayrıca, GET_DEF isteğinde dwValue değeri 0 olarak ayarlıdır.
2.2.2.5 Beyaz Dengesi Kontrolü
Bu denetim, konak yazılımının kamera için beyaz dengesi ayarlarını belirtmesine olanak tanır. Bu, video denetimi arabirimiyle ilişkili tüm video akışı arabirimlerindeki tüm uç noktaları etkileyen genel bir denetimdir.
GET_INFO isteği bu denetimi Zaman Uyumsuz denetim olarak bildirecektir (örneğin, D4 bit 1 olarak ayarlanmalıdır) ancak Otomatik Güncelleştirme denetimi olarak bildirilmeyecektir (örneğin, D3 bit 0 olarak ayarlanmalıdır).
GET_RES, GET_MIN, GET_MAX istekleri bölüm 2.2.2.1'deki tanımları takip edecektir, ancak dwValueFormat değeri 1 olarak ayarlıdır.
GET_MAX gereksinimi: Bu denetim , bmControlFlags'ta bit D0, D1 ve D2 için desteği tanıtacaktır.
GET_DEF gereksinimi: bmControlFlags için varsayılan değer D0 değeri 1, dwValueFormat ve dwValue değeri 0 olarak ayarlanmalıdır.
GET_CUR/SET_CUR istekleri için bmControlFlags alanı için aşağıdaki kısıtlamalar geçerlidir:
- D0, D1 ve D2 bitleri arasında en az bir bit ayarlanmalıdır.
- D1, D0 ve D2 ile uyumsuzdur.
2.2.2.6 Yüz Tanıma Kimlik Doğrulaması Denetimi
Bu denetim, ana bilgisayar yazılımının kameranın yüz doğrulaması için kullanılan yayın akış modlarını destekleyip desteklemediğini belirtmesine olanak tanır. Bu denetim için destek, kameranın yüz doğrulama özelliğine sahip olduğunu gösterir. Bu denetim aksi takdirde desteklenmeyecektir.
Bu denetim yalnızca Infra-Red (IR) verileri üretebilen kameralar için geçerlidir ve yalnızca belirtilen akış arabirimleri için geçerlidir (video denetim arabirimiyle ilişkili tüm video akış arabirimlerinin bir alt kümesidir).
GET_RES ve GET_MIN istekleri bNumEntries alanını 0 olarak ayarlı olarak raporlayacaktır ve bu nedenle ek alanı yoktur.
GET_MAX isteği için , bmControlFlags alanında 1 olarak ayarlanmış bir bit, ilgili modun bu akış arabirimi için desteklendiğini gösterir. GET_MAX isteği çıkışı, D1 veya D2 özellikli tüm ve yalnızca akış arabirimlerini listelemeli (örneğin, bir akış arabirimi D1 veya D2 kapasitesine sahipse listelenir; aksi takdirde listelenmez). Ayrıca, hiçbir akış arabiriminin hem D1 hem de D2'ye uygun olduğu tanıtılmamalıdır. Bir akış arabirimi de genel amaçlı olarak kullanılmak üzere tasarlanmışsa (örneğin yüz doğrulaması amacının dışında), D0 bu akış arabirimi için (D1/D2'ye ek olarak) 1 olarak ayarlanmalıdır.
GET_DEF / GET_CUR / SET_CUR istekleri için, bmControlFlags alanında 1 olarak ayarlanmış bir bit, ilgili akış arabirimi için ilgili modun seçildiğini gösterir. Bu isteklerde, belirli bir akış arabirimi için bir ve yalnızca bir bit (D0, D1 & D2 arasında) ayarlanmalıdır. Varsayılan seçeneği döndüren GET_DEF isteği için (uygulamaya özgüdür), bir akış arabirimi de genel amaçlı bir şekilde (örneğin yüz kimlik doğrulaması amacı dışında) kullanılmak üzere tasarlanmışsa D0, bu akış arabiriminde varsayılan olarak 1 olarak ayarlanmalıdır; aksi takdirde, D1 veya D2 (her ikisi birden değil) varsayılan olarak 1 olarak ayarlanmalıdır. GET_DEF/GET_CUR isteği çıkışı, GET_MAX istek çıkışında listelenen tüm akış arabirimleri hakkında bilgi içermelidir, ancak SET_CUR isteği yalnızca GET_MAX istek çıkışında listelenen akış arabirimlerinin bir alt kümesini içerebilir.
Örnek:
Bir kameranın sırasıyla 0x03, 0x05, 0x08 ve 0x0b sayıları içeren dört video akışı arabirimi olduğunu ve 0x05 numaralı video akışı arabiriminin RGB verileri, kalan üç video akışı arabiriminin ise IR verileri ürettiğini varsayalım. IR verileri üreten akış arabirimleri arasında, 0x03 ve 0x0b akış arabirimlerinin her ikisi de D1 özellikli olduğunu, ancak akış arabirimi 0x03 D0 özelliğine de sahip olduğunu varsayalım. Bu örnekte yüz doğrulama denetimi yalnızca 0x03 ve 0x0b numaralı akış arabirimleri için geçerlidir ve bu nedenle isteklerde yalnızca bu arabirimler görünür.
GET_MAX isteğinin çıktısı aşağıdaki gibidir:
GET_DEF isteğinin çıktısı aşağıdaki gibidir:
Akış arabirimi 0x03 ayarını D1 olarak değiştirmek için SET_CUR bir istek aşağıdaki gibi olacaktır:
Yukarıdaki SET_CUR isteğinden sonra bir GET_CUR isteğinin çıktısı aşağıdaki gibi olacaktır:
2.2.2.7 Kamera Ekstrinsik Kontrolü
Bu kontrol, konak yazılımının video denetim arabirimiyle ilişkili video akışı arabirimlerindeki uç noktalar için kamera extrinsics verilerini almasını sağlar. Bu nedenle her uç nokta için elde edilen veriler, ilgili akış için öznitelik deposunda öznitelik MFStreamExtension_CameraExtrinsics olarak gösterilir (IMFDeviceTransform::GetOutputStreamAttributes çağrısı kullanılarak elde edilir).
GET_RES, GET_MIN, GET_MAX GET_CUR istekleri bNumEntries alanını 0 olarak ayarlı olarak raporlayacaktır ve bu nedenle ek alanı yoktur.
GET_DEF talebi, dışsal bilgilerin mevcut olduğu tüm uç noktaları listeleyeceği şekilde yapılmalıdır.
Örnek:
Bir kameranın sırasıyla sayı 0x03, 0x05 ve 0x08 üç video akışı arabirimi olduğunu varsayalım. Burada video akışı arabiriminde 0x05, tüm video akış arabirimleri tarafından desteklenen video yakalamaya ek olarak yöntem 2'yi kullanarak hareketsiz görüntü yakalamayı destekler. Bu akış arabirimleri arasında, akış arabirimleri 0x05 ve 0x08 ekstrinsik bilgilerine sahipken, akış arabirimi 0x03 bu bilgilere sahip değil.
Bu örnekte, GET_DEF isteğinin çıktısı aşağıdaki gibi olacaktır:
2.2.2.8 Kamera İç Denetimi
Bu denetim, konak yazılımının video denetim arabirimiyle ilişkili video akışı arabirimlerindeki uç noktalar için kamera iç verilerini almasını sağlar. Bu nedenle her uç nokta için elde edilen veriler, ilgili akış için öznitelik deposunda öznitelik MFStreamExtension_PinholeCameraIntrinsics olarak gösterilir (IMFDeviceTransform::GetOutputStreamAttributes çağrısı kullanılarak elde edilir).
GET_RES, GET_MIN, GET_MAX GET_CUR istekleri bNumEntries alanını 0 olarak ayarlı olarak raporlayacaktır ve bu nedenle ek alanı yoktur.
GET_DEF isteği, iç bilgileri mevcut olan tüm uç noktaları listeler.
Örnek:
Bir kameranın sırasıyla sayı 0x03, 0x05 ve 0x08 üç video akışı arabirimi olduğunu varsayalım. Burada video akışı arabiriminde 0x05, tüm video akış arabirimleri tarafından desteklenen video yakalamaya ek olarak yöntem 2'yi kullanarak hareketsiz görüntü yakalamayı destekler. Bu akış arabirimleri arasında, akış arabirimleri 0x05 ve 0x08 için iç bilgiler mevcutken, akış arabirimi 0x03 için iç bilgiler mevcut değildir.
Bu örnekte, GET_DEF isteğinin çıktısı aşağıdaki gibi olacaktır:
2.2.2.9 Meta Veri Kontrolü
Bu denetim, konak yazılımının kamera tarafından üretilen meta verileri sorgulamasına ve denetlemesine olanak tanır. Bu, video denetimi arabirimiyle ilişkili tüm video akışı arabirimlerindeki tüm uç noktaları etkileyen genel bir denetimdir.
Kamera sürücüsü tarafından bu denetim KSPROPERTY_CAMERACONTROL_EXTENDED_METADATA ile haritalanır.
SET_CUR isteği üretici yazılımı tarafından destekleniyorsa, aşağıdakiler geçerlidir:
GET_MIN, GET_DEF istekleri dwValue alanının 0 olarak ayarlandığını bildirecektir.
GET_RES isteği dwValue alanını GET_MAX istek tarafından bildirilen değerle aynı değer olarak bildirecektir.
dwValue değeri 0 olarak ayarlanmış bir SET_CUR isteği alındığında kamera hiçbir meta veri üretmez. SET_CUR isteği, GET_MAX isteği ile bildirilen değerle aynı olan bir dwValue değeri ile alındığında, kamera meta veriler üretebilir ve bu meta verilerin boyutu herhangi bir çerçeve için dwValue'yi aşamaz.
SET_CUR isteği üretici yazılımı tarafından desteklenmiyorsa, aşağıdakiler geçerlidir:
GET_MIN, GET_DEF istekleri dwValue alanını GET_MAX istek tarafından bildirilen değerle aynı değer olarak bildirecektir.
GET_RES isteği dwValue alanının 0 olarak ayarlandığını bildirecektir.
Kamera meta veri üretebilir ve bu meta verilerin toplam boyutu dwValue değerini (GET_MAX isteği tarafından bildirildiği gibi) aşamaz; herhangi bir çerçeve için UsbVideoHeader meta veri yükünün boyutu 1024 bayt daha azdır.
UsbVideoHeader meta veri yükü sizeof(KSCAMERA_METADATA_ITEMHEADER) + sizeof(KSTREAM_UVC_METADATA) veya 24 bayttır.
Üretilen meta veriler, bölüm 2.2.3'te açıklanan Microsoft standart biçimli meta verilerine uygun olmalıdır.
2.2.2.10 IR Torç Kontrolü
Bu denetim, IR LED donanımının ne ölçüde kontrol edilebileceğini raporlaması için esnek bir araç sağlar ve bunu denetleme olanağı sağlar. Bu, kameraya bağlı bir IR lambasının gücünü ayarlayarak video denetim arabirimiyle ilişkili tüm video akışı arabirimlerindeki tüm uç noktaları etkileyen genel bir denetimdir.
Kamera sürücüsü bu denetimi KSPROPERTY_CAMERACONTROL_EXTENDED_IRTORCHMODE olarak eşler.
Aşağıdakiler geçerlidir:
GET_LEN talep 8 değerini bildirecektir.
GET_INFO talep 3 değerini bildirecektir. Bu değer, GET_CUR ve SET_CUR destekleyen zaman uyumlu bir denetimi gösterir.
GET_MIN isteği dwMode alanını 0 olarak, dwValue değerini ise en düşük güç değerini belirten bir değer olarak raporlayacaktır. 0 güç düzeyi KAPALI olduğunu gösterebilir, ancak en düşük işletimsel güç düzeyi 0 olması gerekmez.
GET_RES isteği , dwMode alanını 0 olarak, dwValue değerini de GET_MAX( dwValue ) – GET_MIN(dwValue) değerinden küçük veya buna eşit bir sayıya ayarlı olarak raporlayacaktır; böylece GET_MAX(dwValue) – GET_MIN(dwValue) bu değer tarafından eşit olarak bölünür. dwValue sıfır (0) olmayabilir.
GET_MAX isteği, bu denetimin özelliklerini belirlemek üzere dwMode alanının D[0-2] bitlerinin ayarlandığını bildirecek. dwMode,OFF'un desteklendiğini belirten bit D0 kümesine sahip olmalı ve etkin bir durumu destekleyen en az bir bit kümesi daha olmalıdır. dwValue , normal gücü gösteren bir değere ayarlanmalıdır.
GET_DEF isteği, dwMode alanının akış başlamadan önce sistemin içinde olması gereken varsayılan moda ayarlandığını bildirmelidir. dwMode 2 (ON) veya 4 (ALTERNATING) olarak ayarlanmalıdır. dwValue , normalde FaceAuth denetimi için kullanılan güç düzeyine ayarlanmalıdır. dwValue , üretici tarafından tanımlanır.
GET_CUR isteği geçerli işletim moduna ayarlanmış dwMode alanını ve geçerli aydınlatmaya ayarlanmış dwValue alanını bildirecektir.
Bir SET_CUR isteği alındığında, IR Torch istenen çalışma modunu kullanarak aydınlatmayı oranlanmış bir yoğunluğa ayarlar.
IR Torcu her kare için MF_CAPTURE_METADATA_FRAME_ILLUMINATION özniteliğini yaymalıdır. Bunu bir Cihaz MFT'si aracılığıyla veya kameradan meta veri yüküne bir MetadataId_FrameIllumination özniteliği ekleyerek sağlayabilir. Bkz. bölüm 2.2.3.4.4.
Bu meta verilerin tek amacı bir çerçevenin aydınlatılıp aydınlatılmadığını göstermektir. Bu, KSPROPERTY_CAMERACONTROL_EXTENDED_FACEAUTH_MODE DDI ve bölüm 2.2.2.6'da tanımlanan MSXU_FACE_AUTHENTICATION_CONTROL için gereken meta verilerdir.
2.2.2.11 Dijital Pencere Denetimi
Dijital Pencere, kamera akış yaparken kameranın görüntü ve yakınlaştırma alanını belirtir. Bu denetim Kaydırma, Eğme ve Yakınlaştırma için olası bir alternatiftir. Bu denetim yalnızca kamera etkin bir şekilde akış yaparken geçerlidir.
Bu denetim her tür kamera için kullanılabilir ve akışa alınan medya türünden bağımsızdır.
Bu denetim, konak yazılımının kamerayla ilişkili dijital pencereyi sorgulamasına ve denetlemesine olanak tanır.
Bu, video denetimi arabirimiyle ilişkili tüm video akışı arabirimlerindeki tüm uç noktaları etkileyen genel bir denetimdir. Görüntü İşlemci Çipi tarafından kullanılan piksel verilerinin kaynağını ayarlar. Bu, Yöntem 2 ve Yöntem 3 için sabit görüntü yakalama pimlerini içerir.
Bu denetim, gömülü kamera sürücüsü tarafından KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW'e eşlenmiştir.
Aşağıdakiler geçerlidir:
GET_LEN talep 16 değerini bildirecektir.
GET_INFO talep 3 değerini bildirecektir. Bu değer, GET_CUR ve SET_CUR destekleyen zaman uyumlu bir denetimi gösterir.
GET_MIN isteği dwMode alanını 0 olarak, OriginX ve OriginY değerini 0,0 olarak ve WindowSize değerini 1,0 olarak bildirecektir. Bu istek şu anda kullanılmamış.
GET_RES isteği dwMode alanını 0 olarak, OriginX ve OriginY değerini 0,0 ve WindowSize değerini 1,0 olarak bildirecektir. Bu istek şu anda kullanılmamış.
GET_MAX isteği, bu denetimin yetkinliklerini tanımlamak için D0 biti ayarlanmış dwMode alanını bildirecektir. 0 değeri yalnızca el ile modun desteklendiğini gösterir. 1 değeri, otomatik yüz çerçeveleme modunun desteklendiğini gösterir. Ancak, bu alanların geri kalanı kullanılmadı, ancak OriginX ve OriginY'nin 0.0 ve WindowSize'ın 1.0 olarak ayarlanmasını öneririz.
GET_DEF isteği dwMode alanını 0 olarak, OriginX ve OriginY değerini 0,0 olarak ve WindowSize değerini 1,0 olarak bildirecektir. Bu her zaman varsayılan penceredir.
GET_CUR isteği geçerli işletim moduna ayarlanmış dwMode alanını bildirecek ve OriginX, OriginY ve WindowSize geçerli dijital pencereyi açıklayacaktır.
bir SET_CUR isteği alındığında kamera, görünüm alanını seçili işletim modu ve dijital pencereyle eşleşecek şekilde ayarlar.
Otomatik yüz çerçeveleme modu seçilirse, kamera sahnedeki hakim yüzü tamamen kapsayan bir pencere seçer ve geçirilen OriginX, OriginY ve WindowSize yok sayılır. Hiçbir yüz bulunmazsa, varsayılan pencere kullanılır.
Dijital pencerede yapılan tüm değişiklikler her örneğin meta veri yüküne yansıtılmalıdır.
Dijital pencerede yapılan değişiklikler hemen etkili olmayabilir, ancak denetim hemen yanıt vermelidir. Dijital pencerede yapılan değişiklikler, yürürlüğe girer girmez çerçevenin meta veri yükünde bildirilmelidir.
2.2.2.12 Dijital Pencere Yapılandırma Denetimi
Digital Window Config Caps denetimi, kullanılabilir tüm çözünürlükler göz önünde bulundurulduğunda kameranın ölçeklendirme sınırlarını belirtir. Çözünürlükler medya türünden bağımsızdır, bu nedenle aynı görüntü çözünürlüğünü gösteren iki medya türü tek bir özellikte birleştirilir.
Bir denetim uç noktasının boyut sınırlamaları nedeniyle, bu denetim en fazla 1820 benzersiz çözünürlüğü açıklayabilir.
Dijital Pencere denetimi de varsa, bu denetimin yetkinliklerini raporlamak için bu denetim her zaman kullanılabilir olmalıdır.
Bu denetim, varsayılan kamera sürücüsü tarafından KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW_CONFIGCAPS ile eşleştirilmiştir.
Aşağıdakiler geçerlidir:
GET_LEN istek yükün boyutunun tamamını bildirecektir. Her çözünürlük tanımı 36 bayt uzunluğunda olduğundan yük boyutu 36'nın katı olmalıdır.
GET_INFO talep 1 bildirecektir. Bu değer, yalnızca GET_CUR destekleyen zaman uyumlu bir denetimi gösterir.
GET_CUR isteği bir dizi özelliği bildirecektir. Yetenek yapısının alanları yukarıda tanımlanmıştır.
GET_MIN, GET_MAX, GET_RES ve GET_DEF istekleri kullanılmaz, ancak GET_CUR aynı değerleri döndürmelidir.
SET_CUR istekleri desteklenmez.
2.2.2.13 Video HDR Denetimi
Bu denetim, konak yazılımının kameranın Video HDR'yi destekleyip desteklemediğini belirtmesine olanak tanır. Bu denetim için destek, kameranın en iyi çaba düzeyinde video HDR performansı gösterebileceğini gösterir. Kamera Video HDR'yi desteklemiyorsa bu denetimi uygulamamalıdır.
Kamera sürücüsü, bu kontrolü KSPROPERTY_CAMERACONTROL_EXTENDED_VIDEOHDR olarak eşler.
Aşağıdakiler geçerlidir:
GET_LEN isteği yükün boyutunun tamamını (örneğin, 4 bayt) bildirecektir.
GET_INFO isteği 3 değerini bildirecektir. Bu değer, GET_CUR SET_CUR destekleyen zaman uyumlu bir denetimi gösterir.
GET_CUR isteği dwMode alanının geçerli çalışma moduna ayarlandığını bildirecektir.
GET_DEF'in dwMode'u kapalı (0) olarak ayarlanmalıdır.
GET_MAX isteği mevcut işlem modları için destek sunacaktır: [1 (ON/OFF), 3 (ON/OFF/Auto)]. Bu denetim için AÇI (1) desteği zorunludur.
GET_MIN ve GET_RES istekleri 0 bildirecektir.
SET_CUR isteği modu KAPALI (0), ON (1) veya AUTO (2) olarak ayarlamalıdır.
2.2.2.14 Çerçeve Hızı Kısıtlama Denetimi
Bu denetim, konak yazılımına kameranın Kare Hızı sınırlamasını destekleyip desteklemediğini belirtme olanağı sağlar.
Bu denetim yalnızca kamera etkin bir şekilde akış yaparken geçerlidir. Etkin bir şekilde akış yapmak için önizleme veya kayıt pin'inin KSSTATE_RUN içinde olması, çerçeveleri teslim etmeye hazır ve mümkün olması gerekir. Bir akış etkin değilse bir kümede bu denetim STATUS_INVALID_DEVICE_STATE döndürmelidir.
Bu bir filtre kapsamı denetimi olsa bile kare hızı denetimi fotoğraf pinini veya IR/derinlik gibi RGB olmayan akışları etkilememelidir. Ayrıca, kare hızı kısıtlaması etkin olduğunda, örnek süresi de buna göre ayarlanmalıdır.
Kamera sürücüsü tarafından bu denetim, KSPROPERTY_CAMERACONTROL_EXTENDED_FRAMERATE_THROTTLE ile eşleştirilir.
| Denetim seçicisi | MSXU_KONTROL_KARE_HIZI_AŞIMI |
|---|---|
| Zorunlu İstekler | GET_INFO, GET_LEN, GET_RES, GET_MIN, GET_MAX, GET_DEF, GET_CUR, SET_CUR |
| İsteğe Bağlı İstekler | |
| wLength | 20 |
| Ofset baskı | Veri Alanı | Boyut | Değer | Açıklama |
|---|---|---|---|---|
| 0 | dwMode | 4 | Bayraklar | D0: 0 (KAPALI) veya 1 (ON) D1-D31: ayrılmış ve 0 olarak ayarlanmış |
| 4 | scaleFactorPercentage | 4 | Sayı | Bu değer Min ve Max aralığında olmalı ve Step değerinin katı olarak ayarlanmalıdır. Örneğin: En Az = 5, Maksimum = 100 ve Adım = 5 ise ve bir uygulama kare hızını özgün değerin 80% düşürmeye karar verirse, bu üye değeri 80 olarak ayarlanmalıdır. Bir uygulama bu değeri uygun şekilde ayarlayarak yeni kare hızının özgün değeri asla aşmadığından veya sıfıra indiğinden emin olabilir, ancak özgün kare hızı mümkündür. |
| 8 | dakika | 4 | Sayı | Min, en az bir adım boyutuna eşit olmalıdır veya adım boyutunun katı olmalıdır (Örnek: adım boyutu 1, adım boyutu 2 vb.). Min değeri 0 olarak ayarlanamaz. |
| 12 | maksimum | 4 | Sayı | Maksimum değer 100 olarak ayarlanmalıdır, yani kare hızında değişiklik olmaz. |
| 16 | adım | 4 | Sayı | Adım, {Max % Adımı == 0} gibi katı bir Max faktörü olmalıdır. Örnek: 1, 2, 4, 5 vb. |
Aşağıdakiler geçerlidir:
GET_LEN isteği yükün boyutunun tamamını (örneğin, 20 bayt) bildirecektir.
GET_INFO isteği 3 değerini bildirecektir. Bu değer, GET_CUR SET_CUR destekleyen zaman uyumlu bir denetimi gösterir.
GET_CUR isteği dwMode alanını geçerli işletim moduna ve scaleFactorPercentage alanını geçerli scaleFactor değerine ayarlayacaktır. Min, max ve step değerleri yukarıdaki tabloda açıklandığı gibi raporlamalıdır.
GET_DEF, dwMode'u KAPALI(0) olarak ayarlanmış, scaleFactorPercentage=100, Min varsayılan minimum değere, maksimum 100'e ve adım varsayılan adım değerine ayarlanmış olacaktır. Min ve step değerleri üretici tarafından tanımlanmalıdır, ancak yukarıdaki tabloda belirtilen yönergeleri izlemelidir.
GET_MAX isteği, kullanılabilir işlem modları için destek tanıtacak ve rapor değeri 1 [ ON | KAPALI ]. Bu denetim için hem ON hem de OFF desteği zorunludur. Min, max, step ve scaleFactorPercentage varsayılan değerlere ayarlanabilir.
GET_MIN ve GET_RES istekleri 0 bildirecektir.
SET_CUR isteği modu KAPALI(0), ON(1) olarak ayarlamalıdır. dwMode ON olarak ayarlanırsa scaleFactorPercentage geçerlilik kazanır. Hem KAPALI hem de ON durumlarında scaleFactorPercentage değerinin yukarıdaki tabloda açıklandığı gibi geçerli olması gerekir.
2.2.2.15 Bakış Alanı 2 Yapılandırma Kontrolü
Görünüm 2 Yapılandırma denetimi alanı, desteklenen çapraz Görünüm derecesi değerlerini bir değer dizisi olarak belirtir. Desteklenen tüm değerler teorik min ve maksimum, 1 derece - 360 derece aralığında olmalıdır.
Cihaz sürekli Görünüm Alanı değerlerini desteklemek istiyorsa desteklenen tüm değerleri raporlaması gerekir. Örneğin, cihaz adım boyutu 1 olan 85 derece - 60 derece arasında çapraz Görünüm Alanını desteklemek istiyorsa, bu denetimin [85, 84, 83, 82, ..., 62, 61, 60] değer dizisini raporlaması gerekir.
Görünüm 2 Alanı denetimi mevcut olduğunda özellikleri raporlamak için bu denetimin kullanılabilir olması gerekir.
Bu, zaman uyumlu filtre düzeyi denetimidir.
Bu denetim, kamera sürücüsü tarafından KSPROPERTY_CAMERACONTROL_EXTENDED_ FIELDOFVIEW2_CONFIGCAPS olarak eşlenmiştir.
| Denetim seçicisi | MSXU_CONTROL_FIELDOFVIEW2_CONFIG |
|---|---|
| Zorunlu İstekler | GET_INFO, GET_LEN, GET_RES, GET_MIN, GET_MAX, GET_DEF, GET_CUR |
| İsteğe Bağlı İstekler | |
| wLength | 4 bayt + Sayım çarpı 4 bayt; burada Sayı , benzersiz Görünüm Alanı değerlerinin sayısıdır. |
| Ofset baskı | Veri Alanı | Boyut | Değer | Açıklama |
|---|---|---|---|---|
| 0 | dwDefaultFieldOfView | 4 | Sayı | Varsayılan çapraz Görünüm Alanı, FieldOfViewValues dizisinde bildirilen değerlerden biri olmalıdır. |
| 4 | FieldOfViewValues[0] | 4 | Sayı | İlk Görünüm Alanı değeri, en geniş FoV (Görünüm Alanı) değeri olmalıdır. |
| … | … | … | … | … |
| 4 + 4*(Sayı-1) | GörüşAlanıDeğerleri [Sayı -1] | 4 | Sayı | Görüş Açısının Son Değeri, bu en dar FoV değeri olmalıdır. |
Aşağıdakiler geçerlidir:
GET_LEN istek yükün boyutunun tamamını bildirecektir.
GET_INFO talep 1 bildirecektir. Bu değer, yalnızca GET_CUR destekleyen zaman uyumlu bir denetimi gösterir.
GET_CUR isteği, varsayılan FoV ve desteklenen FoV değerlerinin dizisini azalan sırada içeren verileri bildirecektir. Yapının alanları yukarıda tanımlanmıştır.
GET_DEF talebi GET_CUR ile aynı şekilde raporlayacaktır.
GET_MIN, GET_MAX ve GET_RES istekleri kullanılmaz, ancak GET_CUR ile aynı değerleri döndürmelidir.
SET_CUR istekleri desteklenmez.
Görünüm değerleri alanı azalan sırada olmalıdır; örneğin, en geniş Görünüm Alanı ilk ve en dar olan en sondur.
2.2.2.16 Görüş Alanı 2 Kontrolü
Bu denetim, kameranın akış yaparken kullandığı temel görünüm alanını belirtir. Bu denetim akış öncesinde veya akış sırasında uygulanabilir.
Bu denetim her tür kamera için kullanılabilir ve akışa alınan medya türünden bağımsızdır.
Bu denetim, konak yazılımının kamerayla ilişkili görünüm alanını sorgulamasına ve denetlemesine olanak tanır.
Bu, video denetimi arabirimiyle ilişkili tüm video akışı arabirimlerindeki tüm uç noktaları etkileyen genel bir denetimdir. ISS (Görüntü Sinyali İşlemcisi) tarafından kullanılan piksel (veya sensör) verilerinin kaynağını ayarlar. Bu, Yöntem 2 ve Yöntem 3 için sabit görüntü yakalama pimlerini içerir.
Bu, zaman uyumlu filtre düzeyi denetimidir.
Bu denetim, kamera sürücüsü tarafından KSPROPERTY_CAMERACONTROL_EXTENDED_ FIELDOFVIEW2 ile eşlendi.
| Denetim seçicisi | MSXU_CONTROL_FIELDOFVIEW2 |
|---|---|
| Zorunlu İstekler | GET_INFO, GET_LEN, GET_RES, GET_MIN, GET_MAX, GET_DEF, GET_CUR, SET_CUR |
| İsteğe Bağlı İstekler | |
| wLength | 4 |
| Ofset baskı | Veri Alanı | Boyut | Değer | Açıklama |
|---|---|---|---|---|
| 0 | dwValue | 4 | Sayı | Derece olarak Çapraz Görünüm Alanı değeri. |
Aşağıdakiler geçerlidir:
GET_LEN talep 4 değerini bildirecektir.
GET_INFO talebi 3 bildirecektir. Bu değer, GET_CUR ve SET_CUR destekleyen zaman uyumlu bir denetimi gösterir.
GET_MIN isteği dwValue alanının desteklenen en düşük Görünüm Alanı değerine ayarlandığını bildirecektir.
GET_RES isteği dwValue set 0 alanını bildirecektir. Bu istek şu anda kullanılmamış.
GET_MAX isteği dwValue alanının desteklenen en yüksek Görünüm Alanı değerine ayarlandığını bildirecektir.
GET_DEF isteği, dwValue alanının varsayılan Görünüm alanı değerine ayarlandığını bildirecektir.
GET_CUR isteği dwValue alanının geçerli Görünüm Alanı değerine ayarlandığını bildirecektir.
bir SET_CUR isteği alındığında, kamera görüş alanını verilen dwValue ile eşleşecek şekilde ayarlar.
Kamera CT_ZOOM_RELATIVE_CONTROL ve/veya CT_ZOOM_ABSOLUTE_CONTROL uygularsa, MSXU_CONTROL_FIELDOFVIEW2 SET_CUR çağrıldığında bu denetimler varsayılan değerlerine sıfırlanır.
Kamera MSXU_CONTROL_DIGITALWINDOW uygularsa, yeni bir Görünüm Alanı değeri ayarlandığında pencere değişikliğini yansıtır. Tam tersi de Görüş Alanı, Dijital Pencere aracılığıyla yapılan değişiklikleri yansıtacaktır. Ayrıntılar için bkz. KSPROPERTY_CAMERACONTROL_EXTENDED_ FIELDOFVIEW2 .
2.2.3 Meta Verileri
Standart biçimli çerçeve meta verileri tasarımı, Windows 10'dan UVC özel meta veri tasarımını kullanır. Windows 10'da, kamera sürücüsü için özel bir INF kullanılarak UVC için özel meta veriler desteklenir (not: kamera sürücüsü Windows USBVIDEO.SYS temel alabilir, ancak meta verilerin gelmesi için verilen donanım için özel bir INF gereklidir).
MetadataBufferSizeInKB<PinIndex> Kayıt defteri girdisi varsa ve sıfır değilse, bu pin için özel meta veriler desteklenir ve değer meta veriler için kullanılan arabellek boyutunu gösterir. alanı, <PinIndex> video pin dizininin 0 tabanlı dizinini gösterir.
Windows 10, sürüm 1703'te kamera sürücüsü aşağıdaki AddReg girişini ekleyerek Microsoft standart biçimli meta veriler için destek sinyali verebilir:
StandardFormatMetadata<PinIndex>: REG_DWORD: 0x0 (Desteklenmez) ile 0x1 (Desteklenir)
DevProxy tarafından okunacak bu kayıt defteri anahtarı, KSSTREAM_METADATA_INFO yapısının Flags alanında KSSTREAM_METADATA_INFO_FLAG_STANDARDFORMAT bayrağını ayarlayarak UVC sürücüsüne meta verilerin standart biçimde olduğunu gösterir.
2.2.3.1 Microsoft Standart biçimli Meta Veriler
Microsoft standart biçim meta verileri, aşağıdaki yapının bir veya daha fazla örneğidir:
typedef struct tagKSCAMERA_METADATA_ITEMHEADER {
ULONG MetadataId;
ULONG Size; // Size of this header + metadata payload following
} KSCAMERA_METADATA_ITEMHEADER, *PKSCAMERA_METADATA_ITEMHEADER;
MetadataId alanı, iyi tanımlanmış tanımlayıcılar ve özel tanımlayıcıları (tanımlayıcılar >= MetadataId_Custom_Start) içeren aşağıdaki enum tanımından bir tanımlayıcıyla doldurulur.
typedef enum {
MetadataId_Standard_Start = 1,
MetadataId_PhotoConfirmation = MetadataId_Standard_Start,
MetadataId_UsbVideoHeader,
MetadataId_CaptureStats,
MetadataId_CameraExtrinsics,
MetadataId_CameraIntrinsics,
MetadataId_FrameIllumination,
MetadataId_Standard_End = MetadataId_FrameIllumination,
MetadataId_Custom_Start = 0x80000000,
} KSCAMERA_MetadataId;
Boyut alanı sizeof(KSCAMERA_METADATA_ITEMHEADER) + sizeof(Meta Veri Yükü) olarak ayarlanır.
2.2.3.2 USB video çerçevesi paketlerinden üretici yazılımı tarafından oluşturulan standart biçimli meta veriler
Çerçeve tabanlı video için UVC üzerinden aktarım sırasında, video kareleri, her biri bir UVC Yük Başlığı ile başlayan bir dizi paket halinde paketlenir. Her bir UVC Yük Başlığı, USB Video Sınıfı Sürücü Çerçevesi Tabanlı Yük belirtimi tarafından tanımlanır.
Payload Üst Bilgisi
Aşağıda, Çerçeve Tabanlı biçimler için yük üst bilgisi biçiminin açıklaması yer alır.
HLE (Üst bilgi uzunluğu) alanı
Üst bilgi uzunluğu alanı, üst bilginin uzunluğunu bayt cinsinden belirtir.
Bit alan başlık alanı
FID: Çerçeve Tanımlayıcısı
- Bu bit, her çerçevenin başlangıç sınırında geçiş yapar ve çerçevenin geri kalanı boyunca sabit kalır.
EOF: Çerçeve Sonu (End of Frame)
- Bu bit, video çerçevesinin sonunu gösterir ve çerçeveye ait son video örneğinde ayarlanır. Bu bitin kullanılması, bir çerçeve aktarımının tamamlanmasındaki gecikme süresini azaltmak için bir iyileştirmedir ve isteğe bağlıdır.
PTS: Sunum Zaman Damgası
- Bu bit, ayarlandığında bir PTS alanının varlığını gösterir.
SCR: Kaynak Saat Başvurusu
- Bu bit ayarlandığında bir SCR alanının varlığını gösterir.
RES: Rezerve.
- 0 olarak ayarlayın.
STI: Hareketsiz Görüntü
- Bu bit ayarlandığında, bir video örneğini hareketsiz bir görüntüye ait olarak tanımlar.
HATA: Hata Biti
- Bu bit ayarlandığında cihaz akışında bir hata olduğunu gösterir.
EOH: Üst Bilgi Sonu
- Bu bit, ayarlandığında BFH alanlarının sonunu gösterir.
PTS: Sunu Zaman Damgası, Boyut: 4 bayt, Değer: Sayı
- PTS biti BFH[0] alanında ayarlandığında, PTS alanı mevcut olur. Video Cihazları için USB Cihaz Sınıf Tanımı belirtiminde Bölüm 2.4.3.3 "Video ve Durağan Görüntü Yükü Üst Bilgileri"ne bakın.
SCR: Kaynak Saat Başvurusu, Boyut: 6 bayt, Değer: Sayı
- SCR biti BFH[0] alanında ayarlandığında SCR alanı mevcut olur. USB Video Cihazları için Cihaz Sınıfı Tanımı belirtiminde Bölüm 2.4.3.3 Video ve Hareketsiz Görüntü Yükü Başlıklarına bakın.
Mevcut UVC sürücüsündeki HLE alanı 2 bayt (PTS/SCR yok) veya en fazla 12 bayt (PTS/SCR mevcut) olarak sabittir. Ancak, bayt boyutunda bir alan olan HLE alanı, 255 bayta kadar üst bilgi verisi belirtebilir. Hem PTS/SCR varsa hem de HLE 12 bayttan büyükse, inf girişi StandardFormatMetadata<PinIndex> ayarlandığında yük üst bilgisinin ilk 12 baytını izleyen ek veriler video çerçevesine özgü standart meta veriler olarak alınır.
Çerçeveyi temsil eden video çerçevesi paketlerinde bulunan kısmi bloblar birleştirilerek (üretici yazılımı tarafından oluşturulan) çerçeve için standart biçim meta verileri elde edilir.
2.2.3.3 Kullanıcı modu bileşenine sağlanan meta veri arabelleği
Kullanıcı modu bileşenine sağlanan meta veri arabelleği, UVC zaman damgaları için bir meta veri öğesi (UVC sürücüsü tarafından oluşturulur) ve ardından üretici yazılımı tarafından oluşturulan meta veri öğelerini içerir, ve bunlar aşağıdaki gibi düzenlenmiştir:
Standart meta veri tanımlayıcıları için 2.2.3.4 Meta veri biçimi
Üretici yazılımı bir tanımlayıcıya karşılık gelen meta verilerin üretilip üretilmeyeceğini seçebilir. Üretici yazılımı bir tanımlayıcıya karşılık gelen meta verileri üretmeyi seçerse, bu tanımlayıcının meta verileri üretici yazılımı tarafından yayılan tüm çerçevelerde bulunur.
2.2.3.4.1 MetadataId_CaptureStats
Bu tanımlayıcının meta veri biçimi aşağıdaki yapıyla tanımlanır:
typedef struct tagKSCAMERA_METADATA_CAPTURESTATS {
KSCAMERA_METADATA_ITEMHEADER Header;
ULONG Flags;
ULONG Reserved;
ULONGLONG ExposureTime;
ULONGLONG ExposureCompensationFlags;
LONG ExposureCompensationValue;
ULONG IsoSpeed;
ULONG FocusState;
ULONG LensPosition; // a.k.a Focus
ULONG WhiteBalance;
ULONG Flash;
ULONG FlashPower;
ULONG ZoomFactor;
ULONGLONG SceneMode;
ULONGLONG SensorFramerate;
} KSCAMERA_METADATA_CAPTURESTATS, *PKSCAMERA_METADATA_CAPTURESTATS;
Bayraklar alanı, yapıdaki sonraki alanlardan hangisinin doldurulduğunu ve geçerli verilere sahip olduğunu gösterir. Bayraklar alanı çerçeveden çerçeveye değişmeyecektir. Şu anda aşağıdaki bayraklar tanımlanmıştır:
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_EXPOSURETIME 0x00000001
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_EXPOSURECOMPENSATION 0x00000002
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_ISOSPEED 0x00000004
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_FOCUSSTATE 0x00000008
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_LENSPOSITION 0x00000010
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_WHITEBALANCE 0x00000020
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_FLASH 0x00000040
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_FLASHPOWER 0x00000080
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_ZOOMFACTOR 0x00000100
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_SCENEMODE 0x00000200
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_SENSORFRAMERATE 0x00000400
Ayrılmış alan gelecek için ayrılmıştır ve 0 olarak ayarlanacaktır.
ExposureTime alanı, çerçeve yakalandığında sensöre uygulanan pozlama süresini 100 ns olarak içerir. Bu, ilgili MF örneğinde öznitelik MF_CAPTURE_METADATA_EXPOSURE_TIME olarak gösterilir.
ExposureCompensationFlags alanı, EV Telafisi değerini iletmek için kullanılan EV telafi adımını (KSCAMERA_EXTENDEDPROP_EVCOMP_XXX adım bayraklarından tam olarak biri ayarlanmalıdır) içerir. ExposureCompensationValue alanı, çerçeve yakalandığında sensöre uygulanan adımın birimleri cinsinden EV Dengeleme değerini içerir. İlgili MF örneğinde, bunlar MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION özniteliği olarak gösterilir.
IsoSpeed alanı, çerçeve yakalandığında sensöre uygulanan ISO hız değerini içerir. Bu birimsiz bir şey. Bu, ilgili MF örneğinde öznitelik MF_CAPTURE_METADATA_ISO_SPEED olarak gösterilir.
FocusState alanı, KSCAMERA_EXTENDEDPROP_FOCUSSTATE numaralandırmasında tanımlanan değerlerden birini alabilen mevcut odak durumunu içerir. Bu, ilgili MF örneğinde öznitelik MF_CAPTURE_METADATA_FOCUSSTATE olarak gösterilir.
LensPosition alanı, çerçeve yakalandığında mantıksal mercek konumunu içerir ve bu birimsizdir. Bu, GET çağrısındaki KSPROPERTY_CAMERACONTROL_EXTENDED_FOCUS sorgulanabilen değerle aynıdır. Bu, ilgili MF örneğinde öznitelik MF_CAPTURE_METADATA_LENS_POSITION olarak gösterilir.
WhiteBalance alanı, çerçeve yakalandığında sensöre uygulanan beyaz dengesini içerir. Bu, Kelvin'deki bir değerdir. Bu, ilgili MF örneğinde öznitelik MF_CAPTURE_METADATA_WHITEBALANCE olarak gösterilir.
Flash alanı, çerçeve yakalandığında 1 değeri flaş açık, 0 değeri flaş kapalı anlamına gelen bir boole değeri içerir. Bu, ilgili MF örneğinde öznitelik MF_CAPTURE_METADATA_FLASH olarak gösterilir.
FlashPower alanı, yakalanan çerçeveye uygulanan ve [0, 100] aralığındaki bir değer olan flaş gücünü içerir. Sürücü flaş için ayarlanabilir gücü desteklemiyorsa bu alan atlanmalıdır. Bu, ilgili MF örneğinde öznitelik MF_CAPTURE_METADATA_FLASH_POWER olarak gösterilir.
ZoomFactor alanı, yakalanan çerçeveye uygulanan Q16 biçimindeki yakınlaştırma değerini içerir. Bu, ilgili MF örneğinde öznitelik MF_CAPTURE_METADATA_ZOOMFACTOR olarak gösterilir.
SceneMode alanı, yakalanan kareye uygulanan sahne modunu içerir ve bu, bir 64 bit KSCAMERA_EXTENDEDPROP_SCENEMODE_XXX bayrağıdır. Bu, ilgili MF örneğinde öznitelik MF_CAPTURE_METADATA_SCENE_MODE olarak gösterilir.
SensorFramerate alanı, çerçeve yakalandığında hertz cinsinden ölçülen sensör okuma hızını içerir ve bu değer üst 32 bitteki bir payda değerinden ve daha düşük 32 bitteki payda değerinden oluşur. Bu, ilgili MF örneğinde öznitelik MF_CAPTURE_METADATA_SENSORFRAMERATE olarak gösterilir.
2.2.3.4.2 MetadataId_CameraExtrinsics
Bu tanımlayıcının meta veri biçimi standart KSCAMERA_METADATA_ITEMHEADER ve ardından bayt dizisi yükü içerir. Yük , MFCameraExtrinsics yapısına ve ardından sıfır veya daha fazla MFCameraExtrinsic_CalibratedTransform yapısına hizalanmalıdır. Yük 8 bayt hizalı olmalı ve kullanılmayan tüm baytlar yükün sonunda yer almalı ve 0 olarak ayarlanmalıdır.
2.2.3.4.3 MetadataId_CameraIntrinsics
Bu tanımlayıcının meta veri biçimi standart KSCAMERA_METADATA_ITEMHEADER ve ardından bayt dizisi yükü içerir. Yük bir MFPinholeCameraIntrinsics yapısına hizalanmalıdır. Yük 8 bayt hizalı olmalı ve kullanılmayan tüm baytlar yükün sonunda yer almalı ve 0 olarak ayarlanmalıdır.
2.2.3.4.4 MetadataId_FrameIllumination
Bu tanımlayıcının meta veri biçimi aşağıdaki yapıyla tanımlanır:
typedef struct tagKSCAMERA_METADATA_FRAMEILLUMINATION {
KSCAMERA_METADATA_ITEMHEADER Header;
ULONG Flags;
ULONG Reserved;
} KSCAMERA_METADATA_FRAMEILLUMINATION, *PKSCAMERA_METADATA_FRAMEILLUMINATION;
Bayraklar alanı, yakalanan çerçeve hakkındaki bilgileri gösterir. Şu anda aşağıdaki bayraklar tanımlanmıştır:
#define KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON 0x00000001
Aydınlatma açıkken bir çerçeve yakalanırsa, bayrak KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON ayarlanmalıdır. Aksi takdirde, bu bayrak ayarlanmayacaktır.
Ayrılmış alan gelecekte kullanılmak üzere ayrılmıştır ve 0 olarak ayarlanacaktır.
Örnek:
Örneğin aydınlatmanın açık olduğunu gösteren KSCAMERA_METADATA_FRAMEILLUMINATION bir yapı aşağıdaki gibi olacaktır:
KSCAMERA_METADATA_FRAMEILLUMINATION.Header.MetadataId = MetadataId_FrameIllumination;
KSCAMERA_METADATA_FRAMEILLUMINATION.Header.Size = 16; // 4 ULONG variables in total inside the structure
KSCAMERA_METADATA_FRAMEILLUMINATION.Flags = KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON;
KSCAMERA_METADATA_FRAMEILLUMINATION.Reserved = 0;
2.2.3.4.5 MetadataId_USBVideoHeader
Bu tanımlayıcının meta veri biçimi ortak bir KSCAMERA_METADATA_ITEMHEADER ve ardından KSSTREAM_UVC_METADATA yapısıyla tanımlanır:
typedef struct
{
ULONG PresentationTimeStamp;
ULONG SourceClockReference;
union
{
struct
{
USHORT Counter : 11;
USHORT Reserved : 5;
};
USHORT SCRToken;
};
USHORT Reserved0;
ULONG Reserved1;
} KSSTREAM_UVC_METADATATYPE_TIMESTAMP, *PKSSTREAM_UVC_METADATATYPE_TIMESTAMP;
typedef struct {
KSSTREAM_UVC_METADATATYPE_TIMESTAMP StartOfFrameTimestamp;
KSSTREAM_UVC_METADATATYPE_TIMESTAMP EndOfFrameTimestamp;
} KSSTREAM_UVC_METADATA, *PKSSTREAM_UVC_METADATA;
StartOfFrameTimestamp ve EndOfFrameTimestamp alanları, bu çerçeveyi oluşturmak için kamera tarafından sağlanan ilk ve son UVC yüklerindeki UVC başlıklarında yer alan zaman damgalarıdır.
Bu yük bir cihaz tarafından gönderilmemelidir.
Bu meta veri yükü, UVC uyumlu yük üst bilgilerinden elde edilen bilgilerden doğrudan USB Video sınıfı sürücüsü tarafından oluşturulan tek meta veri yükü olmasıyla benzersizdir.
Bu yük, her çerçevenin meta veri arabelleğine eklenir.
Cihaz standartlaştırılmış meta verileri destekliyorsa, bölüm 2.2.2.9'da tanımlanan Meta Veri kontrolü tarafından bildirilen arabellek gereksinimlerine, bu yükü depolamak için gereken alanı dahil etmelidir.