Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt uitgelegd hoe u een afbeeldingsvervanging inschakelt voor een camera die ondersteuning biedt voor het rapporteren van sluiterstatussen. Het beschrijft ook hoe u een aangepaste vervangende afbeelding kunt opgeven.
Camerastuurprogramma's die privacyluiken/schakelaars hadden vóór de implementatie van deze functie, leverden monsters van de camerasensor of moesten een eigen functionaliteit implementeren om de sluiterstatus te detecteren en de monsters zelf te vervangen. Met deze functie kan het camerastuurprogramma afhankelijk zijn van het besturingssysteem om de afbeelding in het voorbeeld te vervangen door een door het besturingssysteem geleverde oplossing of een aangepaste afbeelding van het camerastuurprogramma.
Vanaf Windows 11 versie 21H2 vereist het Windows Hardware Compatibility Program (WHCP) dat camera's die worden geleverd met privacyluiken of uitschakelschakelaars de status van de camerasluiter rapporteren. Met deze vereiste kunnen het besturingssysteem en de toepassingen de huidige status van de sluiter kennen en worden gebruikt om nuttige gebruikersrichtlijnen te bieden over het wijzigen van de status van de sluiter. OEM-partners gebruiken dit mechanisme om functionaliteit in hun stuurprogramma's te bouwen om de afbeelding die afkomstig is van de camera te vervangen door iets dat informatief is voor de gebruikers. Met deze functie kan een OEM dezelfde functionaliteit gebruiken zonder dat ze bedrijfseigen code hoeven te schrijven binnen een DeviceMFT.
Behoeften
Deze functie wordt alleen ondersteund door camera's die privacyluiken of uitschakelknoppen hebben. Implementatiedetails voor privacyluiken worden beschreven in het artikel Privacy sluiter/switchmelding .
Apparaten die een aangepaste afbeelding voor vervanging van afbeeldingen willen ondersteunen, moeten ook een ondertekend binair bestand van hun stuurprogrammapakket leveren dat hun vervangende afbeelding bevat.
Omdat vervanging van beelden de bestaande uitvoerbuffer overschrijft, geeft het apparaat niet-gecomprimeerde frames weer. Voor gecomprimeerde frames zoals MJPEG en JPEG vindt er geen vervanging van afbeeldingen plaats en wordt de oorspronkelijke afbeelding van het stuurprogramma geleverd.
Implementatieoverzicht
Afbeeldingsvervanging vindt plaats wanneer een apparaat de melding verzendt dat de sluiter voor het apparaat gesloten is. Als de sluiterstatus is gesloten en afbeeldingsvervanging is ingeschakeld, laadt de camerapijplijn de vervangende afbeelding, hetzij van een aangepaste afbeelding geleverd door het camerastuurprogramma of van de inbox-vervangingsafbeelding hier weergegeven.
Wanneer de pijplijn wordt geladen, wordt de afbeelding omgezet in een uitvoerbuffer die overeenkomt met dezelfde resolutie en hetzelfde mediatype als het geselecteerde mediatype van het camerastuurprogramma. Als de resoluties verschillen, wordt de afbeelding omhoog of omlaag geschaald, maar wordt deze niet buiten de bestaande hoogte-breedteverhouding uitgerekt.
Vanaf dat moment, totdat de sluiterstatus is gewijzigd om te openen, hebben alle voorbeelden die door het camerastuurprogramma worden geleverd hun metagegevens en voorbeeldkenmerken gekopieerd naar een nieuw voorbeeld en hun mediabuffer verwijderd. Een nieuwe mediabuffer wordt gekopieerd uit de vertaalde sluiterafbeelding en wordt in plaats daarvan gebruikt. Dit nieuwe voorbeeld wordt vervolgens verzonden via de pijplijn alsof het het oorspronkelijke voorbeeld was.
Implementatiehandleiding
Als u het vervangen van afbeeldingen wilt inschakelen, moet de volgende registervermelding worden toegevoegd aan het knooppunt van de apparaatinterface van de camera, waarbij de waarde is ingesteld op 1.
| Registersleuteltype | Regkey-naam | Regkey-waarde |
|---|---|---|
| REG_DWORD | EnableImageReplacement | 0x1 |
Voor een DRIVER INF kan dit worden toegevoegd, zoals hier wordt weergegeven.
...
[Device.AddReg]
HKR,,EnableImageReplacement,%REG_DWORD%,1
...
[Strings]
REG_DWORD=0x00010001
Voor de MS-OS Descriptor kan dit worden toegevoegd als de volgende naam:
UVC-EnableImageReplacement
Aangepaste installatiekopie
Voor het vervangen van aangepaste afbeeldingen moet het stuurprogramma het volgende opgeven:
Een of meer afbeeldingsbestanden met de indeling BMP-type ARGB32 met een grootte van 1000 x 1000 pixels. In dit voorbeeld is het 'TestImage.bmp'.
Een resource-DLL, met het afbeeldingsbestand dat is opgenomen als een resource. In dit voorbeeld is het SampleSocMFT.dll.
De door de bestuurder geleverde afbeeldingsbestanden moeten een ARGB32-afbeelding van 1000 x 1000 pixels zijn. Hiermee vervangt u de afbeelding die wordt weergegeven in het implementatieoverzicht. Alle andere wijzigingen in het voorbeeld vinden plaats zoals beschreven, alleen de afbeelding die wordt vervangen is specifiek aangepast voor de driver. De bron-DLL moet deel uitmaken van het stuurprogrammapakket en moet zijn ondertekend. Voor de meeste apparaten betekent dit dat het in de Driver DeviceMFT wordt geplaatst.
Als u het afbeeldingsbestand wilt toevoegen aan het bron-DLL-bestand, wijzigt u het resourcebestand *.rc van het project met het volgende als voorbeeld.
#ifdef ID_REPLACEMENT_IMAGE
#define ID_REPLACEMENT_IMAGE 200
#endif
ID_REPLACEMENT_IMAGE RCDATA "TestImage.bmp"
De volgende stap bestaat uit het wijzigen van de driver-INF. Als het gebruikte bron-DLL-bestand nieuw is, moet deze deel uitmaken van de copyfiles-instructie. Ten slotte moeten er drie extra AddReg-richtlijnen worden toegevoegd.
[SourceDisksFiles]
AvsCameraSim.sys=1
SampleSocMFT.dll=1
[DestinationDir]
AvsCameraSim.CopySys=13
AvsCameraSim.CopyDMFT=13
[AvsCameraSim.CopySys]
AvsCameraSim.sys
[AvsCameraSim.CopyDMFT]
SampleSocMFT.dll
[AvsCameraSim]
Include=ks.inf, kscaptur.inf
Needs=KS.registration, KSCaptur.Registration.NT
CopyFiles=AvsCameraSim.CopySys, AvsCameraSim.CopyDMFT
AddReg=AvsCameraSim.AddReg
[AvsCameraSim.AddReg]
HKR,,CameraImageResource,,%13%\%DMFT.NAME%
HKR,,CameraImageResourceID,%REG_DWORD%,%ResourceID%
HKR,,EnableImageReplacement,%REG_DWORD%,1
[Strings]
DMFT.Name="SampleSocMFT.dll"
REG_DWORD=0x00010001
;localizable
ResourceID=200
...
De INF-resource-id en ID_REPLACEMENT_IMAGE-id voor de resource moeten overeenkomen. Deze waarden kunnen zodanig worden aangepast dat één resource-DLL meerdere resource-ID's en meerdere afbeeldingen kan bevatten, en dat een INF kan worden gelokaliseerd om de juiste resource-ID te selecteren.
Aangepaste afbeeldingsrand
Voor aangepaste afbeeldingen die geen zwarte rand willen wanneer letterboxen optreedt, kan een MFARGB-structuur worden gespecificeerd via het register, waarmee de randkleur van het vervangende beeldmonster wordt aangepast.
| Regkey Type | Regkey-naam | Regkey-waarde |
|---|---|---|
| REG_BINARY | AchtergrondkleurCameraAfbeelding | 0x1 |
Voor een DRIVER INF kan deze worden toegevoegd, zoals hier wordt weergegeven:
...
[Device.AddReg]
HKR,,CameraImageBackgroundColor,%REG_ BINARY%,00,00,00,FF
[Strings]
REG_BINARY=0x00000001