Delen via


Microsoft-extensies voor USB Video Class 1.5-specificatie

1 Overzicht

1.1 Samenvatting

Microsoft-extensies voor de USB-videoklassespecificatie zorgen voor nieuwe besturingselementen en de mogelijkheid om duidelijk gedefinieerde framemetagegevens in een standaardindeling mee te voeren.

1.2 Architectuurbeslissingen

De ondersteuning voor metagegevens van het USB Video Class-frame (UVC) is beschikbaar voor ISOCH- en BULK-eindpunten. In het geval van BULK-eindpunt is de grootte van de metagegevens echter beperkt tot 240 bytes (omdat alle videoframegegevens worden overgedragen in één videoframepakket op BULK-eindpunten).

Ondersteuning voor UVC-metagegevens is alleen beschikbaar voor frame-gebaseerde payloads.

Ondersteuning voor UVC-metagegevens is alleen beschikbaar via de MF-capture-pijplijn (Media Foundation).

UVC-metagegevens zijn opt-in. Elke IHV/OEM die ondersteuning voor metagegevens nodig heeft, moet worden ingeschakeld via een aangepast INF-bestand.

UVC-metagegevens ondersteunen alleen systeemtoegewezen geheugen. VRAM- of DX-oppervlakken worden niet ondersteund.

2 Architectuuroverzicht

2.1 Beschrijving

2.2.1 Mogelijkheidsdetectie via INF

2.2.1.1 Still Image Capture – Methode 2

Sommige bestaande UVC-apparaten bieden mogelijk geen ondersteuning voor methode 2 die wordt beschreven in sectie 2.4.2.4 (Still Image Capture) van de UVC 1.5-klasse specification.pdf die kunnen worden gedownload op de website met specificatie van USB Video Class .

In Windows 10, versie 1607 en eerder, heeft de capture-pijplijn methode 2 niet gebruikt, zelfs niet als een apparaat hiervoor ondersteuning heeft aangekondigd volgens de UVC 1.5-specificatie.

In Windows 10 versie 1703 moeten apparaten die deze methode gebruiken een aangepast INF-bestand voor het camerastuurprogramma gebruiken, maar voor de opgegeven hardware is een aangepaste INF vereist om methode 2 stilbeeldopname in te schakelen.

Opmerking: het camerastuurprogramma kan worden gebaseerd op de Windows-USBVIDEO.SYS of kan worden gebaseerd op een aangepast binair stuurprogramma.

Het aangepaste INF-bestand, gebaseerd op een aangepast of ingebouwd UVC-stuurprogramma, moet de volgende AddReg-vermelding bevatten:

EnableDependentStillPinCapture: REG_DWORD: 0x0 (uitgeschakeld) tot 0x1 (ingeschakeld)

Wanneer deze vermelding is ingesteld op Ingeschakeld (0x1), gebruikt de capture-pijplijn methode 2 voor Still Image Capture (ervan uitgaande dat de firmware ook ondersteuning voor methode 2 adverteert zoals opgegeven door de UVC 1.5-specificatie).

Een voorbeeld voor de aangepaste INF-sectie is als volgt:

[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 Besturingselementen voor extensie-eenheden

De uitbreiding van Microsoft op de USB Video Class-specificatie voor het inschakelen van nieuwe bedieningselementen wordt uitgevoerd via een extensie-eenheid die wordt geïdentificeerd door de GUID MS_CAMERA_CONTROL_XU (aangeduid als Microsoft-XU).

// {0F3F95DC-2632-4C4E-92C9-A04782F43BC8}
DEFINE_GUID(MS_CAMERA_CONTROL_XU,
    0xf3f95dc, 0x2632, 0x4c4e, 0x92, 0xc9, 0xa0, 0x47, 0x82, 0xf4, 0x3b, 0xc8);

Een Microsoft-XU geïmplementeerd door de apparaatfirmware bevat de nieuwe bedieningselementen die zijn gedefinieerd in de volgende secties. De volgende verzoekdefinities zijn van toepassing op al deze besturingselementen, tenzij er expliciet een overheersende definitie voor dat besturingselement is opgegeven. Raadpleeg UVC 1.5-klasse specification.pdf voor definities van D3, D4, GET_INFO enzovoort.

GET_INFO-verzoek zal de controle rapporteren zonder AutoUpdate- en Asynchrone capaciteiten (bijvoorbeeld, D3- en D4-bits moeten op 0 worden gezet).

GET_LEN-verzoek moet rapporteren over de maximale lengte van de payload voor dit besturingselement (wLength).

GET_RES aanvraag rapporteert de resolutie (stapgrootte) voor qwValue/dwValue. Alle andere velden worden ingesteld op 0.

GET_MIN aanvraag rapporteert de minimaal ondersteunde waarde voor qwValue/dwValue. Alle andere velden worden ingesteld op 0.

GET_MAX aanvraag rapporteert de maximaal ondersteunde waarde voor qwValue/dwValue. Bovendien worden alle ondersteunde vlaggen ingesteld op 1 in bmControlFlags. Alle andere velden worden ingesteld op 0.

GET_DEF en GET_CUR aanvragen rapporteren respectievelijk de standaard- en huidige instellingen voor de velden qwValue/dwValue en bmControlFlags. Alle andere velden worden ingesteld op 0.

Een SET_CUR aanvraag wordt door de host uitgegeven nadat alle velden zijn ingesteld.

In de volgende tabel worden de controleselectors voor Microsoft-XU toegewezen aan hun respectieve waarden en de bitpositie voor het bmControls veld in de extensie-eenheidsdescriptor.

Besturingsonderdeelkiezer Waarde Bitpositie
(bmControls Field)
MSXU_CONTROL_UNDEFINED 0x00 NA
MSXU_CONTROL_FOCUS 0x01 D0
MSXU_CONTROL_EXPOSURE 0x02 D1
MSXU_CONTROL_EVCOMPENSATION 0x03 D2
MSXU_CONTROL_WHITEBALANCE 0x04 D3
Gereserveerd voor toekomstig gebruik 0x05 D4
MSXU_CONTROL_FACE_AUTHENTICATION (Gezichtsherkenning authenticatie) 0x06 D5
MSXU_CONTROL_CAMERA_EXTRINSICS 0x07 D6
MSXU_CONTROL_CAMERA_INTRINSICS 0x08 D7
MSXU_CONTROL_METADATA 0x09 D8
MSXU_CONTROL_IR_LAMP 0x0A D9
MSXU_CONTROL_DIGITALWINDOW 0X0B D10
MSXU_CONTROL_DIGITALWINDOW_CONFIG 0X0C D11
MSXU_CONTROL_VIDEO_HDR 0X0D D12
MSXU_CONTROL_FRAMERATE_THROTTLE 0x0E D13
MSXU_CONTROL_FIELDOFVIEW2_CONFIG 0x0F D14
MSXU_CONTROL_FIELDOFVIEW2 0x10 D15
2.2.2.1 Annuleerbare besturingselementen

Hier wordt een annuleerbaar besturingselement gedefinieerd met behulp van de Autoupdate-functie.

GET_INFO-verzoek rapporteert de besturing als een besturingselement voor automatisch bijwerken (bijvoorbeeld de D3-bit moet worden ingesteld op 1) maar niet als een asynchroon besturingselement (bijvoorbeeld de D4-bit moet worden ingesteld op 0).

Voor een dergelijke controle kan een SET_CUR-aanvraag worden verzonden om een nieuwe waarde in te stellen (een SET_CUR(NORMAL)-aanvraag waarbij bmOperationFlags:D0-bit is ingesteld op 0) of om een eerdere SET_CUR(NORMAL)-aanvraag te annuleren (een SET_CUR(CANCEL)-aanvraag waarbij bmOperationFlags:D0-bit is ingesteld op 1). Een SET_CUR aanvraag moet onmiddellijk door het apparaat worden voltooid zodra de aanvraag is ontvangen (hoewel de hardware niet is geconfigureerd of geconvergeerd naar de aangevraagde nieuwe instellingen). Voor elke SET_CUR(NORMAL)-aanvraag genereert het apparaat een bijbehorende Control Change-interrupt voor dit besturingselement, die wordt geactiveerd zodra de nieuwe instellingen zijn toegepast of wanneer er een SET_CUR(CANCEL)-aanvraag binnenkomt; totdat deze interrupt binnenkomt, wordt de SET_CUR(NORMAL)-aanvraag als in behandeling beschouwd. Wanneer een SET_CUR(NORMAL)-aanvraag wordt uitgevoerd, leiden aanvullende SET_CUR(NORMAL)-aanvragen voor dit specifieke besturingselement tot een storing. Een SET_CUR(CANCEL)-aanvraag slaagt altijd. Als er niets te annuleren is, doet het apparaat niets.

De payload van de ControleVerandering onderbreking moet de bit bmOperationFlags:D0 instellen op 0 als de door SET_CUR(NORMAL) opgegeven instellingen zijn toegepast (bijvoorbeeld convergentie is opgetreden) en instellen op 1 als de instellingen niet zijn toegepast vanwege een SET_CUR(CANCEL)-aanvraag die is ontvangen na de SET_CUR(NORMAL) aanvraag (bijvoorbeeld convergentie is nog niet opgetreden).

2.2.2.2 Focus Control

Met dit besturingselement kan de hostsoftware de focusinstellingen voor de camera opgeven. Dit is een algemeen besturingselement dat van invloed is op alle eindpunten op alle videostreaminginterfaces die zijn gekoppeld aan de interface voor videobeheer.

focusbesturing.

Dit besturingselement werkt als een annuleerbaar besturingselement (zie sectie 2.2.2.1 voor GET_INFO-verzoekvereisten en functioneel gedrag van SET_CUR-verzoek).

GET_MAX vereiste: deze controle biedt ondersteuning voor bits D0, D1, D2, D8 en D18 in bmControlFlags.

GET_DEF vereiste: de standaardwaarde voor bmControlFlags moet D0 en D18 zijn ingesteld op 1 en dwValue ingesteld op 0.

Voor GET_CUR/SET_CUR aanvragen gelden de volgende beperkingen voor field bmControlFlags:

  • Tussen D0-, D1- en D8-bit kan slechts één bit worden ingesteld; geen van deze, is ook geldig als D2-bit is ingesteld.

  • Onder D16, D17, D18, D19 en D20 kan slechts één bit worden ingesteld; het is ook geldig als geen enkel bit is ingesteld.

  • D1 is niet compatibel met alle andere bits die momenteel zijn gedefinieerd (D0, D2, D8, D16, D17, D18, D19 en D20).

  • D2 is niet compatibel met D1 en D8.

  • D2 is niet compatibel met D16, D17, D18, D19 en D20 als D0 niet is ingesteld.

2.2.2.3 Blootstellingsbeheersing

Met dit besturingselement kan de hostsoftware de belichtingsinstellingen voor de camera opgeven. Dit is een algemeen besturingselement dat van invloed is op alle eindpunten op alle videostreaminginterfaces die zijn gekoppeld aan de interface voor videobeheer.

blootstellingsbeheersing.

GET_INFO aanvraag rapporteert dit besturingselement als een asynchroon besturingselement (bijvoorbeeld D4-bits moet worden ingesteld op 1), maar niet als een AutoUpdate-besturingselement (bijvoorbeeld D3-bits moet worden ingesteld op 0).

GET_MAX vereiste: Deze controle adverteert ondersteuning voor bits D0, D1 en D2 in bmControlFlags.

GET_DEF vereiste: de standaardinstelling voor bmControlFlags is D0 ingesteld op 1 en qwValue ingesteld op 0.

Voor GET_CUR/SET_CUR aanvragen gelden de volgende beperkingen voor field bmControlFlags:

  • Tussen D0-, D1- en D2-bits moet ten minste één bit worden ingesteld.
  • D1 is niet compatibel met D0 en D2.
2.2.2.4 EV Compensatieregeling

Met dit besturingselement kan de hostsoftware de EV-compensatie-instellingen voor de camera opgeven. Dit is een algemeen besturingselement dat van invloed is op alle eindpunten op alle videostreaminginterfaces die zijn gekoppeld aan de interface voor videobeheer.

E V-compensatiecontrole.

GET_INFO aanvraag rapporteert dit besturingselement als een asynchroon besturingselement (bijvoorbeeld D4-bits moet worden ingesteld op 1), maar niet als een AutoUpdate-besturingselement (bijvoorbeeld D3-bits moet worden ingesteld op 0).

GET_RES aanvraag rapporteert alle ondersteunde resoluties (stapgrootte) door overeenkomstige bits in bmControlFlags in te stellen. Alle andere velden worden ingesteld op 0.

GET_MIN en GET_MAX aanvragen rapporteren de minimum- en maximumwaarde voor dwValue. De bit D4 (die de stapgrootte van 1 aangeeft) moet de enige en enige bit zijn die is ingesteld in bmControlFlags. Alle andere velden worden ingesteld op 0.

GET_DEF, GET_CUR, en SET_CUR aanvragen volgen de definities in sectie 2.2.2.1, maar er mag één en slechts één bit ingesteld zijn tussen de D0, D1, D2, D3 en D4 bits voor het veld bmControlFlags. Bovendien moet voor GET_DEF aanvraag dwValue zijn ingesteld op 0.

2.2.2.5 Witbalansregeling

Met dit besturingselement kan de hostsoftware de instellingen voor witbalans voor de camera opgeven. Dit is een algemeen besturingselement dat van invloed is op alle eindpunten op alle videostreaminginterfaces die zijn gekoppeld aan de interface voor videobeheer.

witbalansregeling.

GET_INFO aanvraag rapporteert dit besturingselement als een asynchroon besturingselement (bijvoorbeeld D4-bits moet worden ingesteld op 1), maar niet als een AutoUpdate-besturingselement (bijvoorbeeld D3-bits moet worden ingesteld op 0).

GET_RES, GET_MIN, volgen GET_MAX aanvragen de definities in sectie 2.2.2.1, maar moeten dwValueFormat zijn ingesteld op 1.

GET_MAX-vereiste: dit besturingselement moet ondersteuning adverteren voor bits D0, D1 en D2 in bmControlFlags.

GET_DEF vereiste: de standaardinstelling voor bmControlFlags is D0 ingesteld op 1 en dwValueFormat en dwValue ingesteld op 0.

Voor GET_CUR/SET_CUR aanvragen gelden de volgende beperkingen voor field bmControlFlags:

  • Tussen D0-, D1- en D2-bits moet ten minste één bit worden ingesteld.
  • D1 is niet compatibel met D0 en D2.
2.2.2.6 Gezichtsverificatiebeheer

Met dit besturingselement kan de hostsoftware opgeven of de camera streamingmodi ondersteunt die worden gebruikt voor gezichtsverificatie. Ondersteuning voor dit besturingselement impliceert dat de camera geschikt is voor gezichtsverificatie. Dit besturingselement wordt anders niet ondersteund.

Dit besturingselement is alleen van toepassing op camera's die Infra-Red (IR)-gegevens kunnen produceren en alleen van toepassing is op de opgegeven streaming-interfaces (dit is een subset van alle videostreaminginterfaces die zijn gekoppeld aan de interface voor videobesturing).

gezichtsauthenticatiecontrole.

GET_RES en GET_MIN aanvragen rapporteren veld bNumEntries ingesteld op 0 en hebben daarom geen extra velden.

Voor een GET_MAX aanvraag geeft een bit die is ingesteld op 1 in het veld bmControlFlags aan dat de bijbehorende modus wordt ondersteund voor die streaming-interface. Een GET_MAX-aanvraaguitvoer vermeldt alle en alleen de streaming-interfaces die geschikt zijn voor D1 of D2 (bijvoorbeeld als een streaming-interface in staat is om D1 of D2 te gebruiken, wordt deze vermeld; anders wordt deze niet vermeld). Er wordt ook geen streaming-interface geadverteerd die zowel D1 als D2 ondersteunt. Als een streaming-interface ook is bedoeld voor algemeen gebruik (bijvoorbeeld buiten het doel van gezichtsverificatie), wordt D0 ingesteld op 1 voor die streaming-interface (naast D1/D2).

Voor GET_DEF/GET_CUR/SET_CUR-aanvragen wordt een bit op 1 ingesteld in het veld bmControlFlags, waarmee wordt aangegeven dat de bijbehorende modus is gekozen voor die streaminginterface. In deze aanvragen moet één en slechts één bit (tussen D0, D1 &D2) worden ingesteld voor een bepaalde streaming-interface. Voor de GET_DEF aanvraag die de standaardkeuze retourneert (wat specifiek is voor implementatie), wordt D0 standaard ingesteld op 1 op die streaming-interface voor algemeen gebruik (bijvoorbeeld buiten het doel van gezichtsverificatie). anders worden D1 of D2 (maar niet beide) standaard ingesteld op 1. Een GET_DEF/GET_CUR aanvraaguitvoer bevat informatie over alle streaminginterfaces die worden vermeld in GET_MAX aanvraaguitvoer. Een SET_CUR aanvraag mag echter alleen een subset van de streaming-interfaces bevatten die worden vermeld in GET_MAX aanvraaguitvoer.

Voorbeeld:

Laten we ervan uitgaan dat een camera vier videostreaminginterfaces heeft met nummers 0x03, 0x05, 0x08 en 0x0b waarbij de interface voor videostreaming 0x05 RGB-gegevens produceert en de resterende drie interface voor videostreaming IR-gegevens produceren. Onder de streaming-interfaces die IR-gegevens produceren, gaan we ervan uit dat streaming-interfaces 0x03 en 0x0b beide geschikt zijn voor D1, maar 0x03 ook geschikt is voor D0. In dit voorbeeld is het besturingselement voor gezichtsverificatie alleen van toepassing op de genummerde streaming-interfaces 0x03 en 0x0b en worden daarom alleen deze interfaces weergegeven in de aanvragen.

De uitvoer voor GET_MAX aanvraag is het volgende:

gezichtsherkenning GET_MAX.

De uitvoer voor GET_DEF aanvraag is het volgende:

gezichtsauthenticatie GET_DEF.

Een SET_CUR aanvraag voor het wijzigen van de instelling voor de streaming-interface 0x03 in D1 is als volgt:

gezichtsherkenning SET_CUR.

De uitvoer voor een GET_CUR aanvraag na de bovenstaande SET_CUR aanvraag is als volgt:

gezichtsauthenticatie GET_CUR.

2.2.2.7 Camera-extrinsieke besturing

Met dit besturingselement kan de hostsoftware de cameraextrinsische gegevens ophalen voor eindpunten op videostreaminginterfaces die zijn gekoppeld aan de interface voor videobesturing. De gegevens die voor elk eindpunt zijn verkregen, worden weergegeven als kenmerk MFStreamExtension_CameraExtrinsics in het kenmerkarchief voor de bijbehorende stroom (verkregen met behulp van IMFDeviceTransform::GetOutputStreamAttributes-aanroep).

camera extrinsics controle.

GET_RES-, GET_MIN-, GET_MAX- en GET_CUR-aanvragen moeten het veld bNumEntries rapporteren dat is ingesteld op 0 en dus geen extra velden hebben.

GET_DEF aanvraag vermeldt alle eindpunten met de beschikbare extrinsische informatie.

Voorbeeld:

We gaan ervan uit dat een camera drie videostreaminginterfaces heeft met nummers 0x03, 0x05 en 0x08 respectievelijk waarbij de interface voor videostreaming 0x05 ondersteuning biedt voor het vastleggen van afbeeldingen met behulp van methode 2, naast de video-opname die wordt ondersteund door alle videostreaminginterfaces. Onder deze streaming-interfaces gaan we ervan uit dat streaminginterfaces 0x05 en 0x08 extrinsische informatie beschikbaar hebben terwijl de streaming-interface 0x03 niet beschikt over de informatie over extrinsiek.

In dit voorbeeld is de uitvoer voor GET_DEF aanvraag het volgende:

camera-extrinsics GET_DEF.

2.2.2.8 Camera Intrinsieke Controle

Met dit besturingselement kan de hostsoftware de intrinsieke gegevens van de camera ophalen voor eindpunten op videostreaminginterfaces die zijn gekoppeld aan de videobesturingsinterface. De gegevens die voor elk eindpunt zijn verkregen, worden weergegeven als kenmerk MFStreamExtension_PinholeCameraIntrinsics in het kenmerkarchief voor de bijbehorende stroom (verkregen met behulp van IMFDeviceTransform::GetOutputStreamAttributes call).

camera intrinsiek controle.

GET_RES, GET_MIN, GET_MAX, GET_CUR aanvragen moeten rapporteren dat het veld bNumEntries is ingesteld op 0 en daarom geen extra velden bevatten.

GET_DEF aanvraag vermeldt alle eindpunten met de intrinsieke informatie die beschikbaar is.

Voorbeeld:

We gaan ervan uit dat een camera drie videostreaminginterfaces heeft met nummers 0x03, 0x05 en 0x08 respectievelijk waarbij de interface voor videostreaming 0x05 ondersteuning biedt voor het vastleggen van afbeeldingen met behulp van methode 2, naast de video-opname die wordt ondersteund door alle videostreaminginterfaces. Onder deze streaming-interfaces gaan we ervan uit dat streaminginterfaces 0x05 en 0x08 intrinsieke informatie beschikbaar hebben terwijl de streaming-interface 0x03 niet over de intrinsieke informatie beschikt.

In dit voorbeeld is de uitvoer voor GET_DEF aanvraag het volgende:

camera-intrinsiek GET_DEF.

2.2.2.9 Metadata Control

Met dit besturingselement kan de hostsoftware metagegevens opvragen en beheren die door de camera worden geproduceerd. Dit is een algemeen besturingselement dat van invloed is op alle eindpunten op alle videostreaminginterfaces die zijn gekoppeld aan de interface voor videobeheer.

Dit besturingselement wordt gekoppeld aan KSPROPERTY_CAMERACONTROL_EXTENDED_METADATA door het camerastuurprogramma.

besturingselement voor metagegevens.

Als SET_CUR aanvraag wordt ondersteund door de firmware, is het volgende van toepassing:

  • GET_MIN- en GET_DEF-aanvragen moeten veld dwValue instellen op 0 rapporteren.

  • GET_RES aanvraag rapporteert veld dwValue als dezelfde waarde als gerapporteerd door GET_MAX aanvraag.

  • Wanneer een SET_CUR aanvraag wordt ontvangen met dwValue ingesteld op 0, produceert de camera geen metagegevens. Wanneer een SET_CUR aanvraag wordt ontvangen met dwValue ingesteld op dezelfde waarde als gerapporteerd door GET_MAX aanvraag, kan de camera metagegevens produceren en de grootte van dergelijke metagegevens kan dwValue voor elk frame niet overschrijden.

Als SET_CUR aanvraag niet wordt ondersteund door de firmware, is het volgende van toepassing:

  • GET_MIN, GET_DEF aanvragen moeten rapporteren dat veld dwValue dezelfde waarde is als gerapporteerd door de GET_MAX aanvraag.

  • GET_RES aanvraag rapporteert veld dwValue ingesteld op 0.

  • De camera kan metagegevens produceren en de totale grootte van dergelijke metagegevens kan niet groter zijn dan de dwValue - zoals gerapporteerd door GET_MAX verzoek - keer 1024 bytes verminderd met de grootte van een UsbVideoHeader-metagegevensbelasting, voor elk frame.

  • Een nettolading van metagegevens van UsbVideoHeader is de grootte van (KSCAMERA_METADATA_ITEMHEADER) + sizeof(KSTREAM_UVC_METADATA) of 24 bytes.

De geproduceerde metagegevens voldoen aan de standaardmetagegevens van Microsoft, zoals beschreven in sectie 2.2.3.

2.2.2.10 IR Zaklampbediening

Dit besturingselement biedt een flexibele manier voor de IR LED-hardware om te rapporteren in hoeverre het kan worden beheerd en biedt de mogelijkheid om het te beheren. Dit is een algemeen besturingselement dat van invloed is op alle eindpunten op alle videostreaminginterfaces die zijn gekoppeld aan de videobesturingsinterface door de stroom aan te passen aan een IR-lamp die is verbonden met de camera.

Dit besturingselement wordt toegewezen aan KSPROPERTY_CAMERACONTROL_EXTENDED_IRTORCHMODE door het camerastuurprogramma.

I R zaklampbesturing.

Het volgende is van toepassing:

  • GET_LEN aanvraag rapporteert een waarde van 8.

  • GET_INFO aanvraag rapporteert een waarde van 3. Deze waarde geeft een synchroon besturingselement aan dat ondersteuning biedt voor GET_CUR en SET_CUR.

  • GET_MIN aanvraag rapporteert veld dwMode ingesteld op 0 en dwValue ingesteld op een waarde die de minimale macht aangeeft. Een energieniveau van 0 kan duiden op UIT, maar het minimale operationele energieniveau hoeft niet 0 te zijn.

  • GET_RES aanvraag rapporteert veld dwMode ingesteld op 0 en dwValue ingesteld op een getal dat kleiner is dan of gelijk is aan GET_MAX(dwValue) – GET_MIN(dwValue) en zodanig dat GET_MAX(dwValue) – GET_MIN(dwValue) gelijkmatig deelbaar is door die waarde. dwValue is mogelijk niet nul (0).

  • GET_MAX-verzoek rapporteert veld dwMode ingesteld met bits D[0-2] om de mogelijkheden van deze controle te identificeren. dwMode moet bit D0 hebben ingesteld, wat aangeeft dat OFF wordt ondersteund en moet ten minste één andere bitset hebben die een actieve status ondersteunt. dwValue moet worden ingesteld op een waarde die de normale macht aangeeft.

  • GET_DEF aanvraag moet veld dwMode aangeven dat is ingesteld op de standaardmodus waarin het systeem zich moet bevinden voordat het streamen begint. dwMode moet worden ingesteld op 2 (AAN) of 4 (ALTERNATING). dwValue moet worden ingesteld op het energieniveau dat normaal wordt gebruikt voor het FaceAuth-besturingselement. dwValue wordt gedefinieerd door de fabrikant.

  • GET_CUR aanvraag rapporteert veld dwMode ingesteld op de huidige bedrijfsmodus en dwValue ingesteld op de huidige verlichting.

  • Wanneer een SET_CUR aanvraag wordt ontvangen, stelt de IR Torch de verlichting in op een prorate-intensiteit met behulp van de aangevraagde bedrijfsmodus.

De IR-torch moet voor elk frame het kenmerk MF_CAPTURE_METADATA_FRAME_ILLUMINATION verzenden. Dit kan worden verstrekt via een Device MFT of door het MetadataId_FrameIllumination kenmerk op te geven in de metagegevens-payload van de camera. Zie sectie 2.2.3.4.4.

Het enige doel van deze metagegevens is om aan te geven of een frame wordt verlicht of niet. Dit zijn dezelfde metagegevens die vereist zijn voor de KSPROPERTY_CAMERACONTROL_EXTENDED_FACEAUTH_MODE DDI en de MSXU_FACE_AUTHENTICATION_CONTROL gedefinieerd in sectie 2.2.2.6.

2.2.2.11 Digitaal vensterbediening

Digitaal venster bepaalt het gezichtsveld en de zoom van de camera terwijl deze aan het streamen is. Dit besturingselement is een mogelijke vervanging voor Pan, Tilt en Zoom. Dit besturingselement is alleen van toepassing terwijl de camera actief streamt.

Dit besturingselement is beschikbaar voor alle typen camera's en is onafhankelijk van het mediatype dat wordt gestreamd.

Met dit besturingselement kan de hostsoftware het digitale venster opvragen en beheren dat is gekoppeld aan een camera.

Dit is een algemeen besturingselement dat van invloed is op alle eindpunten op alle videostreaminginterfaces die zijn gekoppeld aan de interface voor videobeheer. Hiermee wordt de bron van pixelgegevens aangepast die door de internetprovider worden gebruikt. Dit omvat Methode 2 en Methode 3 vastlegspinnen.

Dit besturingselement wordt toegewezen aan KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW door de inbox-camera driver.

digitale raamregeling.

Het volgende is van toepassing:

  • GET_LEN aanvraag rapporteert een waarde van 16.

  • GET_INFO aanvraag rapporteert een waarde van 3. Deze waarde geeft een synchroon besturingselement aan dat ondersteuning biedt voor GET_CUR en SET_CUR.

  • GET_MIN aanvraag rapporteert veld dwMode ingesteld op 0, OriginX en OriginY ingesteld op 0.0 en WindowSize ingesteld op 1.0. Deze aanvraag is momenteel niet gebruikt.

  • GET_RES aanvraag rapporteert veld dwMode ingesteld op 0, OriginX en OriginY ingesteld op 0,0 en WindowSize ingesteld op 1.0. Deze aanvraag is momenteel niet gebruikt.

  • De GET_MAX aanvraag rapporteert het veld dwMode met bit D0 geconfigureerd om de mogelijkheden van deze controle te identificeren. Een waarde van 0 geeft aan dat alleen de handmatige modus wordt ondersteund. Een waarde van 1 geeft aan dat de modus voor automatische gezichtskadering wordt ondersteund. De rest van deze velden zijn ongebruikt, maar we raden u aan OriginX en OriginY in te stellen op 0,0 en WindowSize ingesteld op 1.0.

  • GET_DEF aanvraag rapporteert veld dwMode ingesteld op 0, OriginX en OriginY ingesteld op 0,0 en WindowSize ingesteld op 1.0. Dit is altijd het standaardvenster.

  • GET_CUR aanvraag rapporteert veld dwMode ingesteld op de huidige bedrijfsmodus en OriginX, OriginY en WindowSize beschrijven het huidige digitale venster.

  • Wanneer een SET_CUR aanvraag wordt ontvangen, past de camera het weergaveveld aan zodat deze overeenkomt met de geselecteerde bedrijfsmodus en het digitale venster.

  • Als de automatische gezichtsframingmodus is geselecteerd, selecteert de camera een venster dat het dominante gezicht in de scène volledig omvat en de OriginX-, OriginY- en WindowSize die zijn doorgegeven, worden genegeerd. Als er geen gezicht wordt gevonden, wordt het standaardvenster gebruikt.

  • Wijzigingen in het digitale venster moeten worden doorgevoerd in de nettolading van metagegevens van elk voorbeeld.

  • Wijzigingen in het digitale venster zijn mogelijk niet onmiddellijk effectief, maar het besturingselement moet onmiddellijk reageren. Wijzigingen in het digitale venster moeten worden gerapporteerd in de metadatapayload van het frame zodra ze in werking treden.

2.2.2.12 Digitaal configuratiebeheer voor ramen

De besturing van de Digital Window Config Caps specificeert de schaalbeperkingen van de camera met inachtneming van alle beschikbare resoluties. Resoluties zijn onafhankelijk van het mediatype, dus twee mediatypen die dezelfde weergaveresolutie adverteren, worden gecombineerd tot één mogelijkheid.

Vanwege de groottebeperkingen van een besturingseindpunt kan dit besturingselement maximaal 1820 unieke oplossingen beschrijven.

Dit besturingselement moet altijd beschikbaar zijn om de mogelijkheden van het besturingselement Digitaal venster te rapporteren als dat besturingselement ook aanwezig is.

Dit besturingselement wordt toegewezen aan KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW_CONFIGCAPS door de ingebouwde camera-stuurprogramma.

digitaal vensterinstellingencontrole.

Het volgende is van toepassing:

  • De GET_LEN-aanvraag moet de volledige grootte van de payload rapporteren. De nettoladinggrootte moet een veelvoud van 36 zijn, omdat elke resolutiedefinitie 36 bytes lang is.

  • GET_INFO verzoek moet een 1 rapporteren. Deze waarde geeft een synchroon besturingselement aan dat alleen GET_CUR ondersteunt.

  • GET_CUR aanvraag rapporteert een reeks mogelijkheden. De velden van de capaciteitsstructuur worden hierboven gedefinieerd.

  • GET_MIN, GET_MAX, GET_RES en GET_DEF-aanvragen worden niet gebruikt, maar moeten dezelfde waarden retourneren als GET_CUR.

  • SET_CUR aanvragen worden niet ondersteund.

2.2.2.13 Video HDR Control

Met dit besturingselement kan de hostsoftware opgeven of de camera Video HDR ondersteunt. Ondersteuning voor deze controle impliceert dat de camera video HDR kan uitvoeren als een optimale inspanning. Als de camera Video HDR niet ondersteunt, mag deze dit besturingselement niet implementeren.

Dit besturingselement wordt toegewezen aan KSPROPERTY_CAMERACONTROL_EXTENDED_VIDEOHDR door het camerastuurprogramma.

video H D R-bediening.

Het volgende is van toepassing:

  • GET_LEN-aanvraag rapporteert de volledige grootte van de payload (bijvoorbeeld 4 bytes).

  • GET_INFO aanvraag rapporteert een waarde 3. Deze waarde geeft een synchroon besturingselement aan dat ondersteuning biedt voor GET_CUR, SET_CUR.

  • GET_CUR-verzoek moet rapporteren dat veld dwMode is ingesteld op de huidige operationele modus.

  • GET_DEF moet een dwMode hebben ingesteld op OFF (0).

  • GET_MAX aanvraag vermeldt ondersteuning voor de beschikbare bewerkingsmodi: [1 (AAN/UIT), 3 (AAN/UIT/Auto)]. Ondersteuning voor ON (1) is verplicht voor dit besturingselement.

  • GET_MIN en GET_RES verzoeken rapporteren 0.

  • SET_CUR aanvraag moet de modus instellen op UIT (0), AAN (1) of AUTO (2).

2.2.2.14 Framerate Throttle Control

Met dit besturingselement kan de hostsoftware opgeven of de camera framerate-beperking ondersteunt.

Dit besturingselement is alleen van toepassing terwijl de camera actief streamt. Als u actief wilt streamen, moet een preview- of recordpincode zich in KSSTATE_RUN, gereed en in staat zijn om frames te leveren. Op een set als een stream niet actief is, moet dit besturingselement STATUS_INVALID_DEVICE_STATE retourneren.

Zelfs als dit een besturingselement voor het filterbereik is, zou de regeling van de framesnelheid geen invloed mogen hebben op de fotopin of niet-RGB-stromen zoals IR/diepte. Wanneer de framerate-limiter van kracht is, moet ook de duur van de steekproef dienovereenkomstig worden aangepast.

Dit besturingselement wordt toegewezen aan KSPROPERTY_CAMERACONTROL_EXTENDED_FRAMERATE_THROTTLE door het camerastuurprogramma.

Selector voor besturingselementen MSXU_CONTROL_FRAMERATE_THROTTLE
Verplichte aanvragen GET_INFO, GET_LEN, GET_RES, GET_MIN, GET_MAX, GET_DEF, GET_CUR, SET_CUR
Optionele aanvragen
wLength 20
Offset Veld Grootte Waarde Beschrijving
0 dwMode 4 Vlaggen D0: 0 (UIT) of 1 (AAN)
D1-D31: gereserveerd en ingesteld op 0
4 scaleFactorPercentage 4 Aantal Deze waarde moet binnen het bereik van Min en Max vallen en moet worden ingesteld op een veelvoud van de stapwaarde. Bijvoorbeeld: als Min = 5, Max = 100 en Stap = 5 en als een toepassing heeft besloten de framesnelheid te verlagen tot 80% oorspronkelijke waarde, moet deze lidwaarde worden ingesteld op 80. Door deze waarde op de juiste manier in te stellen, kan een app ervoor zorgen dat de nieuwe framesnelheid nooit de oorspronkelijke waarde overschrijdt, noch naar nul gaat, maar de oorspronkelijke framesnelheid is mogelijk.
8 min 4 Aantal Min moet gelijk zijn aan ten minste één stapgrootte of moet een veelvoud van stapgrootte zijn (bijvoorbeeld stap1, stap2, etc.). Minimumwaarde kan niet worden ingesteld op 0.
12 max 4 Aantal Max moet worden ingesteld op 100, wat betekent dat er geen wijziging in framesnelheid is.
16 stap 4 Aantal Stap moet een strikte factor van Max zijn, bijvoorbeeld {Max % Step == 0}. Voorbeeld: 1, 2, 4, 5 enzovoort.

Het volgende is van toepassing:

  • GET_LEN aanvraag rapporteert de volledige grootte van de nettolading (bijvoorbeeld 20 bytes). 

  • GET_INFO aanvraag rapporteert een waarde 3. Deze waarde geeft een synchroon besturingselement aan dat ondersteuning biedt voor GET_CUR, SET_CUR. 

  • GET_CUR aanvraag rapporteert veld dwMode ingesteld op de huidige bedrijfsmodus en scaleFactorPercentage ingesteld op de huidige scaleFactor-waarde. Min, max en stap moeten de waarden rapporteren zoals beschreven in de bovenstaande tabel.

  • GET_DEF moet een dwMode hebben ingesteld op OFF(0), scaleFactorPercentage=100, Min ingesteld op standaard minimumwaarde, max ingesteld op 100 en stap ingesteld op standaardstapwaarde. De waarden van min en stap moeten worden gedefinieerd door de fabrikant, maar moeten de richtlijnen volgen die in de bovenstaande tabel worden vermeld.

  • GET_ MAX-aanvraag vermeldt ondersteuning voor beschikbare bewerkingsmodi en rapporteert waarde 1 [ AAN | UIT ]. Ondersteuning voor zowel AAN als UIT is verplicht voor dit besturingselement. Min, max, step en scaleFactorPercentage kunnen worden ingesteld op de standaardwaarden.

  • GET_MIN en GET_RES verzoeken rapporteren 0. 

  • SET_CUR aanvraag moet de modus instellen op OFF(0), ON(1). Als dwMode is ingesteld op AAN, wordt scaleFactorPercentage van kracht. Voor zowel OFF- als ON-gevallen moet de scaleFactorPercentage geldig zijn zoals beschreven in de bovenstaande tabel.

2.2.2.15 Veld van weergave 2 Configuratiebeheer

Het besturingselement voor Weergave 2 Configuratie specificeert de ondersteunde diagonale gezichtsveldgraadwaarden als een array van waarden. Alle ondersteunde waarden moeten zich bevinden tussen het theoretische minimum en maximum, 1 graad - 360 graden.

Als het apparaat doorlopende waarden voor weergavevelden wil ondersteunen, moet het alle ondersteunde waarden rapporteren. Als het apparaat bijvoorbeeld diagonale weergavevelden van 85 graden - 60 graden met stapgrootte van 1 wil ondersteunen, moet dit besturingselement een matrix van waarden rapporteren [85, 84, 83, 82, ..., 62, 61, 60].

Wanneer controle 'Veld van weergave 2' aanwezig is, moet deze controle beschikbaar zijn om de mogelijkheden te rapporteren.

Dit is een filter-niveauregelaar voor synchroon gebruik.

Dit controle-element wordt toegewezen aan KSPROPERTY_CAMERACONTROL_EXTENDED_ FIELDOFVIEW2_CONFIGCAPS door het camerastuurprogramma.

Selector voor bedieningselementen MSXU_CONTROL_FIELDOFVIEW2_CONFIG
Verplichte aanvragen GET_INFO, GET_LEN, GET_RES, GET_MIN, GET_MAX, GET_DEF, GET_CUR
Optionele aanvragen
wLength 4 bytes + Count keer 4 bytes, waarbij Count het aantal unieke gezichtsveldwaarden is.
Offset Veld Grootte Waarde Beschrijving
0 dwDefaultFieldOfView 4 Aantal Het standaarddiagonaal veld van weergave moet een van de waarden zijn die zijn gerapporteerd in de matrix FieldOfViewValues.
4 FieldOfViewValues[0] 4 Aantal Eerste veld van weergavewaarde, dit moet de breedste FoV-waarde (Veld van weergave) zijn.
4 + 4*(Aantal-1) FieldOfViewValues [Aantal -1] 4 Aantal Laatste veld van weergavewaarde, dit moet de smalste FoV-waarde zijn.

Het volgende is van toepassing:

  • GET_LEN-verzoek rapporteert de totale grootte van de payload.

  • Het GET_INFO-verzoek moet een 1 rapporteren. Deze waarde geeft een synchroon besturingselement aan dat alleen GET_CUR ondersteunt.

  • GET_CUR aanvraag rapporteert gegevens die standaard FoV en matrix met ondersteunde FoV-waarden in aflopende volgorde bevatten. De velden van de structuur worden hierboven gedefinieerd.

  • GET_DEF verzoek rapporteert hetzelfde als GET_CUR.

  • GET_MIN-, GET_MAX- en GET_RES-aanvragen worden niet gebruikt, maar moeten dezelfde waarden retourneren als GET_CUR.

  • SET_CUR aanvragen worden niet ondersteund.

Het veld met weergavewaarden moet in aflopende volgorde staan, bijvoorbeeld het breedste weergaveveld is eerst en het smalste veld is het laatst.

2.2.2.16 Veld van weergave 2 Besturingselement

Dit besturingselement geeft het basisveld van de weergave aan dat de camera gebruikt bij het streamen. Dit besturingselement kan vóór of tijdens het streamen worden toegepast.

Dit besturingselement is beschikbaar voor alle typen camera's en is onafhankelijk van het mediatype dat wordt gestreamd.

Met dit besturingselement kan de hostsoftware het veld van de weergave opvragen en beheren dat is gekoppeld aan een camera.

Dit is een algemeen besturingselement dat van invloed is op alle eindpunten op alle videostreaminginterfaces die zijn gekoppeld aan de interface voor videobeheer. Hiermee wordt de bron van pixelgegevens (of sensorgegevens) aangepast die worden gebruikt door de internetprovider (Image Signal Processor). Dit omvat Methode 2 en Methode 3 vastlegspinnen.

Dit is synchronisatie regeling voor filterniveau.

Dit besturingselement is toegewezen aan KSPROPERTY_CAMERACONTROL_EXTENDED_ FIELDOFVIEW2 door het camerastuurprogramma.

Bedieningskiezer MSXU_CONTROL_FIELDOFVIEW2
Verplichte aanvragen GET_INFO, GET_LEN, GET_RES, GET_MIN, GET_MAX, GET_DEF, GET_CUR, SET_CUR
Optionele aanvragen
wLength 4
Offset Veld Grootte Waarde Beschrijving
0 dwValue 4 Aantal Diagonale gezichtsveldwaarde in graden.

Het volgende is van toepassing:

  • GET_LEN aanvraag rapporteert een waarde van 4.

  • Het GET_INFO-verzoek moet een 3 rapporteren. Deze waarde geeft een synchroon besturingselement aan dat ondersteuning biedt voor GET_CUR en SET_CUR.

  • GET_MIN-aanvraag moet rapporteren over het veld dwValue dat is ingesteld op de minimaal ondersteunde gezichtsveldwaarde.

  • GET_RES aanvraag rapporteert veld dwValue set 0. Deze aanvraag is momenteel niet gebruikt.

  • GET_MAX-verzoek rapporteert dat veld dwValue is ingesteld op de maximaal ondersteunde gezichtsveldwaarde.

  • GET_DEF-aanvraag zal rapporteren dat het veld dwValue is ingesteld op de standaardwaarde voor gezichtsveld.

  • GET_CUR-verzoek rapporteert veld dwValue ingesteld op huidige Gezichtsveld-waarde.

  • Wanneer een SET_CUR aanvraag wordt ontvangen, stelt de camera het weergaveveld in op de opgegeven dwValue.

  • Als de camera CT_ZOOM_RELATIVE_CONTROL en/of CT_ZOOM_ABSOLUTE_CONTROL implementeert, worden deze besturingselementen opnieuw ingesteld op hun standaardwaarden wanneer MSXU_CONTROL_FIELDOFVIEW2 SET_CUR wordt aangeroepen.

Als de camera MSXU_CONTROL_DIGITALWINDOW implementeert, wordt de wijziging van het venster weergegeven wanneer een nieuwe waarde voor weergave wordt ingesteld. En omgekeerd geeft het weergaveveld de wijzigingen weer die via digitaal venster zijn aangebracht. Zie KSPROPERTY_CAMERACONTROL_EXTENDED_ FIELDOFVIEW2 voor meer informatie.

2.2.3 Metagegevens

Het ontwerp voor framemetagegevens met standaardindeling is gebaseerd op het aangepaste UVC-metagegevensontwerp van Windows 10. In Windows 10 worden aangepaste metagegevens ondersteund voor UVC met behulp van een aangepaste INF voor het camerastuurprogramma (opmerking: het camerastuurprogramma kan worden gebaseerd op de Windows-USBVIDEO.SYS, maar een aangepaste INF is vereist voor de opgegeven hardware voor metagegevens die moeten worden doorgegeven). Als MetadataBufferSizeInKB<PinIndex> registervermelding aanwezig is en niet-nul, worden aangepaste metagegevens ondersteund voor die pincode en de waarde geeft de buffergrootte aan die wordt gebruikt voor de metagegevens. Het <PinIndex> veld geeft een index op basis van 0 aan van de videopinindex.

In Windows 10 versie 1703 kan een camerastuurprogramma ondersteuning voor metagegevens in de standaardindeling van Microsoft signaleren door de volgende AddReg-vermelding te includeren:

StandardFormatMetadata<PinIndex>: REG_DWORD: 0x0 (Niet ondersteund) naar 0x1 (ondersteund)

Deze registersleutel wordt gelezen door DevProxy en informeert het UVC-stuurprogramma dat de metagegevens standaardindeling hebben door de vlag in te stellen KSSTREAM_METADATA_INFO_FLAG_STANDARDFORMAT in het veld Vlaggen voor KSSTREAM_METADATA_INFO structuur.

2.2.3.1 Metagegevens van Microsoft Standard-indeling

De standaardmetagegevens van Microsoft zijn een of meer exemplaren van de volgende structuur:

metagegevens van standaardindeling.

typedef struct tagKSCAMERA_METADATA_ITEMHEADER {
    ULONG MetadataId;
    ULONG Size; // Size of this header + metadata payload following
} KSCAMERA_METADATA_ITEMHEADER, *PKSCAMERA_METADATA_ITEMHEADER;

Het veld MetadataId wordt gevuld met een id uit de volgende enumdefinitie die goed gedefinieerde id's en aangepaste id's (id's >= MetadataId_Custom_Start) bevat.

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;

Het veld Grootte is ingesteld op sizeof(KSCAMERA_METADATA_ITEMHEADER) + sizeof(Metadata Payload).

2.2.3.2 Firmware-gegenereerde standaardformaat metadata van USB-videoframepakketten

Tijdens een overdracht via UVC voor framegebaseerde video wordt het videoframe verpakt in een reeks pakketten, elk voorafgegaan door een UVC-payloadheader. Elke UVC-payloadheader wordt gedefinieerd door de specificatie van de frame-gebaseerde payload van het USB-videoklassestuurprogramma.

PayloadHeader

Hier volgt een beschrijving van de indeling van de payload-header voor frame-gebaseerde indelingen.

payload header.

HLE -veld (lengte koptekst)

Het veld lengte van de koptekst geeft de lengte van de koptekst op in bytes.

Veldkoptekst van bitveld

FID: Frame-ID

  • Bij elke beginrand van het frame wisselt dit bit van stand en blijft het tijdens de rest van het frame onveranderd.

EOF: Einde van het frame

  • Deze bit geeft het einde van een videoframe aan en wordt ingesteld in het laatste videovoorbeeld dat hoort bij een frame. Het gebruik van deze bit is een optimalisatie om de latentie bij het voltooien van een frameoverdracht te verminderen en is optioneel.

PTS: Tijdstempel van presentatie

  • Deze bit, indien ingesteld, geeft de aanwezigheid van een PTS-veld aan.

SCR: Bronklokreferentie

  • Deze bit, indien ingesteld, geeft de aanwezigheid van een SCR-veld aan.

RES: Gereserveerd.

  • Ingesteld op 0.

STI: Still Image

  • Deze bit, wanneer deze is ingesteld, identificeert een videovoorbeeld als behorend tot een still-afbeelding.

ERR: Fout-bit

  • Deze bit, wanneer deze is ingesteld, geeft een fout aan in het streamen van het apparaat.

EOH: einde van koptekst

  • Deze bit, wanneer deze is ingesteld, geeft het einde van de BFH-velden aan.

PTS: Tijdstempel van presentatie, grootte: 4 bytes, waarde: getal

  • Het PTS-veld is aanwezig wanneer de PTS-bit is ingesteld in het veld BFH[0].. Zie sectie 2.4.3.3 "Video and Still Image Payload Headers" in de specificatie van de USB-apparaatklasse voor Videoapparaten.

SCR: Bronklok verwijzing, grootte: 6 bytes, waarde: getal

  • Het SCR-veld is aanwezig wanneer de SCR-bit is ingesteld in het veld BFH[0].. Zie Sectie 2.4.3.3 Video en Still Image Payload Headers in de definitie van usb-apparaatklasse voor videoapparaten specificatie.

Het HLE-veld in het bestaande UVC-stuurprogramma is vastgezet op 2 bytes (geen PTS/SCR aanwezig) of maximaal 12 bytes (PTS/SCR aanwezig). Het HLE-veld, een veld met de grootte van een byte, kan echter maximaal 255 bytes aan headergegevens opgeven. ** Als zowel PTS/SCR aanwezig zijn en de HLE groter is dan 12 bytes, worden eventuele extra gegevens na de eerste 12 bytes van de payloadheader beschouwd als standaardmetagegevens die specifiek zijn voor het videoframe, wanneer de INF-vermelding StandardFormatMetadata<PinIndex> is ingesteld.

De metadata in standaardformaat (gegenereerd door firmware) voor een frame wordt verkregen door de gedeeltelijke blobs in de videoframepakketten die dat frame vertegenwoordigen samen te voegen.

metagegevensframepakketten.

2.2.3.3 Metagegevensbuffer die is opgegeven voor het onderdeel gebruikersmodus

De metagegevensbuffer die aan het onderdeel van de gebruikersmodus wordt verstrekt, heeft een metagegevensitem voor de UVC-tijdstempels (gegenereerd door UVC-stuurprogramma), gevolgd door door firmware gegenereerde metagegevensitems en ze worden als volgt ingedeeld:

buffer voor metagegevens.

2.2.3.4 Metagegevensindeling voor standaardmetagegevens-id's

De firmware kan ervoor kiezen al dan niet metagegevens te produceren die overeenkomen met een identificator. Als de firmware ervoor kiest metagegevens te produceren die overeenkomen met een id, zijn de metagegevens van die id aanwezig op alle frames die door de firmware worden verzonden.

2.2.3.4.1 MetadataId_CaptureStats

De indeling van de metagegevens voor deze id wordt gedefinieerd door de volgende structuur:

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;

Het veld Vlaggen geeft aan welke van de latere velden in de structuur zijn ingevuld en geldige gegevens bevatten. Het veld vlaggen mag niet variëren van frame tot frame. Momenteel zijn de volgende vlaggen gedefinieerd:

#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

Het veld Gereserveerd is voor de toekomst gereserveerd en wordt ingesteld op 0.

Het veld ExposureTime bevat de belichtingstijd, in 100 ns, toegepast op de sensor toen het frame werd vastgelegd. Dit wordt weergegeven als kenmerk MF_CAPTURE_METADATA_EXPOSURE_TIME in het bijbehorende MF-voorbeeld.

Het veld ExposureCompensationFlags bevat de EV-compensatiestap (precies een van de KSCAMERA_EXTENDEDPROP_EVCOMP_XXX stapvlaggen moet worden ingesteld) die wordt gebruikt om de waarde van de EV-compensatie over te brengen. Het veld ExposureCompensationValue bevat de EV-compensatiewaarde, uitgedrukt in eenheden van de stap die op de sensor werd toegepast toen het frame werd vastgelegd. Deze worden weergegeven als kenmerk MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION in het bijbehorende MF-voorbeeld.

Het veld IsoSpeed bevat de ISO-snelheidswaarde die op de sensor wordt toegepast toen het frame werd vastgelegd. Dit is eenheidloos. Dit wordt weergegeven als kenmerk MF_CAPTURE_METADATA_ISO_SPEED in het bijbehorende MF-voorbeeld.

Het veld FocusState bevat de huidige focusstatus die een van de waarden kan aannemen die zijn gedefinieerd in enum KSCAMERA_EXTENDEDPROP_FOCUSSTATE. Dit wordt weergegeven als kenmerk MF_CAPTURE_METADATA_FOCUSSTATE in het bijbehorende MF-voorbeeld.

Het veld LensPosition bevat de positie van de logische lens wanneer het frame is vastgelegd, wat unitloos is. Dit is dezelfde waarde die kan worden opgevraagd vanuit KSPROPERTY_CAMERACONTROL_EXTENDED_FOCUS in een GET-aanroep. Dit wordt weergegeven als kenmerk MF_CAPTURE_METADATA_LENS_POSITION in het bijbehorende MF-voorbeeld.

Het veld WhiteBalance bevat de witbalans die wordt toegepast op de sensor toen het frame werd vastgelegd, een waarde in Kelvin. Dit wordt weergegeven als kenmerk MF_CAPTURE_METADATA_WHITEBALANCE in het bijbehorende MF-voorbeeld.

Het veld Flash bevat een Booleanse waarde, met 1 betekent dat de flits aan is, en 0 betekent dat de flits uit is, wanneer het frame is vastgelegd. Dit wordt weergegeven als kenmerk MF_CAPTURE_METADATA_FLASH in het bijbehorende MF-voorbeeld.

Het veld FlashPower bevat de flitskracht die is toegepast op het vastgelegde frame. Dit is een waarde in het bereik van [0, 100]. Dit veld moet worden weggelaten als het stuurprogramma geen aanpasbare voeding voor flash ondersteunt. Dit wordt weergegeven als kenmerk MF_CAPTURE_METADATA_FLASH_POWER in het bijbehorende MF-voorbeeld.

Het veld ZoomFactor bevat de zoomwaarde in Q16-indeling die is toegepast op het vastgelegde frame. Dit wordt weergegeven als kenmerk MF_CAPTURE_METADATA_ZOOMFACTOR in het bijbehorende MF-voorbeeld.

Het veld SceneMode bevat de scènemodus die is toegepast op het vastgelegde frame. Dit is een 64-bits KSCAMERA_EXTENDEDPROP_SCENEMODE_XXX vlag. Dit wordt weergegeven als kenmerk MF_CAPTURE_METADATA_SCENE_MODE in het bijbehorende MF-voorbeeld.

Het veld SensorFramerate bevat de gemeten leessnelheid van de sensor in hertz wanneer het frame wordt vastgelegd, dat bestaat uit een tellerwaarde in de bovenste 32-bits en een noemerwaarde in de lagere 32-bits. Dit wordt weergegeven als kenmerk MF_CAPTURE_METADATA_SENSORFRAMERATE in het bijbehorende MF-voorbeeld.

2.2.3.4.2 MetadataId_CameraExtrinsics

De metagegevensindeling voor deze identificatie omvat de standaard KSCAMERA_METADATA_ITEMHEADER gevolgd door een byte-reekspayload. De nettolading moet worden uitgelijnd op een MFCameraExtrinsics-structuur, gevolgd door nul of meer MFCameraExtrinsic_CalibratedTransform-structuren. De payload moet 8-byte uitgelijnd zijn en alle ongebruikte bytes moeten aan het einde van de payload worden geplaatst en op 0 worden gezet.

2.2.3.4.3 MetadataId_CameraIntrinsics

De metagegevensindeling voor deze identifier omvat de standaard KSCAMERA_METADATA_ITEMHEADER, gevolgd door een byte-array payload. De payload moet overeenkomen met een MFPinholeCameraIntrinsics-structuur. De payload moet 8-byte uitgelijnd zijn en alle ongebruikte bytes moeten aan het einde van de payload staan en op 0 worden gezet.

2.2.3.4.4 MetadataId_FrameIllumination

De indeling van de metagegevens voor deze id wordt gedefinieerd door de volgende structuur:

typedef struct tagKSCAMERA_METADATA_FRAMEILLUMINATION {
    KSCAMERA_METADATA_ITEMHEADER Header;
    ULONG Flags;
    ULONG Reserved;
} KSCAMERA_METADATA_FRAMEILLUMINATION, *PKSCAMERA_METADATA_FRAMEILLUMINATION;

Het veld Vlaggen geeft informatie over het vastgelegde frame aan. Momenteel zijn de volgende vlaggen gedefinieerd:

#define KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON 0x00000001

Indien een frame is vastgelegd wanneer de verlichting werd ingeschakeld, wordt de vlag KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON ingesteld. Anders wordt deze vlag niet ingesteld.

Het veld Gereserveerd is gereserveerd voor toekomstig gebruik en wordt ingesteld op 0.

Voorbeeld:

Een KSCAMERA_METADATA_FRAMEILLUMINATION structuur die aangeeft dat de verlichting is ingeschakeld, zou bijvoorbeeld als volgt zijn:

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

De indeling van de metagegevens voor deze id wordt gedefinieerd door een gemeenschappelijke KSCAMERA_METADATA_ITEMHEADER gevolgd door een KSSTREAM_UVC_METADATA structuur:

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;

Het veld StartOfFrameTimestamp en EndOfFrameTimestamp zijn de tijdstempels die zijn opgenomen in de UVC-headers, uitgegeven door de camera in de eerste en laatste UVC-payloads om dit frame samen te stellen.

Deze payload mag niet door een apparaat worden verzonden.

Deze metagegevensbelasting is uniek omdat het de enige metagegevensbelasting is die rechtstreeks door de USB-video-klasse stuurprogramma wordt gegenereerd, dankzij informatie verkregen uit de kopteksten van UVC-compatibele metagegevensbelasting.

Deze payload wordt vooraf toegevoegd aan de metagegevensbuffer van elk frame.

Als het apparaat gestandaardiseerde metagegevens ondersteunt, moet het de ruimte bevatten die nodig is om deze nettolading op te slaan in de buffervereisten, zoals gerapporteerd door het besturingselement Metagegevens dat is gedefinieerd in sectie 2.2.2.9.