Sdílet prostřednictvím


Ukázková deklarace profilu (profil fotoaparátu V2)

Vezmeme hypotetickou kameru, která podporuje nový profil vysoké frekvence snímků. Pojďme pro naše zařízení definovat určitá omezení.

  1. Připnutí náhledu je pin 0. V KSFILTER_DESCRIPTOR, která je deklarována ovladačem kamery, když je definováno pole KSPIN_DESCRIPTOR_EX, první KSPIN_DESCRIPTOR_EX je popisovač pinu náhledu. Podobně je kolík 1 zachycený a připínáček 2 je kolík fotky.

  2. Vzhledem k hardwarovým omezením nemůže dané zařízení zpracovat škálování rychlostí snímků 60 snímků za sekundu nebo vyšší. Proto musí mít streamy Preview i Capture stejné rozlišení.

  3. Podobně zařízení také nemůže zpracovat převod barevného prostoru pro 60 fps nebo vyšší.

  4. Kamera je schopna streamovat 4K 16x9 video při 60 fps. Kamera je také schopna 3840x2880@60fps (4:3 video při 60 fps).

  5. Fotoaparát není schopen poskytovat žádné operace fotografie při spuštění při 60 fps.

  6. Budeme také deklarovat profil záznamu videa, omezený na 30 fps, ale může povolit jakoukoli kombinaci rozlišení /podtypy.

  7. Pro sekvenci fotek profilu záznamu videa se nepodporuje (například jednoúčelové operace s fotkou fungují).

Pro deklaraci založené na INF musí být každému filtru typů médií pin přiřazen název položky registru. Tento název musí být MTF#, kde # představuje celočíselnou hodnotu.

Vzhledem k těmto omezením můžeme deklarovat následující profil:

[SampleDriver.CameraInterface.AddReg]
; Declare our schema version.
HKR,,"OEMCameraProfileVersion",0x00010001,2
;
; Declare our HighFrameRate profile with a lock resolution/subtype constraint.
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"
;
; Declare our VideoRecording profile.
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"

Nastavením položky registru OEMCameraProfileVersion na 2 označujeme kanál zachycení, který podporujeme nové schéma profilu založeného na omezeních.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2

Po deklaraci musí být všechny profily uloženy pod klíčem registru Profily v uzlu Rozhraní zařízení.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"

Každý profil musí být nakonfigurovaný jako podklíč pod klíčem Profily pomocí ID profilu. ID profilu se skládá z typu profilu, indexu profilu.

Typ profilu může být některý z následujících známých typů profilů nebo řetězec {GUID}:

  • KSCAMERAPROFILE_HighQualityPhoto

  • KSCAMERAPROFILE_BalancedVideoAndPhoto

  • KSCAMERAPROFILE_VideoConferencing

  • KSCAMERAPROFILE_PhotoSequence

  • KSCAMERAPROFILE_FaceAuth_Mode

  • KSCAMERAPROFILE_HighFrameRate

  • KSCAMERAPROFILE_HDRWithWCGVideo

  • KSCAMERAPROFILE_HDRWithWCGPhoto

  • KSCAMERAPROFILE_VariablePhotoSequence

  • KSCAMERAPROFILE_VideoHDR8

Index profilu může být libovolné 32bitové celé číslo bez znaménka s výjimkou 0xFFFFFFFF. Hodnota indexu 0xFFFFFFFF je vyhrazená a nesmí být používána žádnou deklarací IHV/OEM.

Deklarace položky Constraint v podklíči profilu označuje, že máme omezení na úrovni profilu:

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"

Pro profil vysoké frekvence snímků LRS;LST označuje, že rozlišení napříč všemi kolíky musí být stejné a podtyp musí být také stejný (z kanálu zachycení není povoleno žádné škálování ani převod barevného prostoru).

U připínáčku Náhled profilu vysoké frekvence snímků povolujeme, aby byla na kolíku náhledu k dispozici jakákoli rozlišení a frekvence snímků. Pro naše hypotetické zařízení, Náhled pin nikdy nezpřístupní více než 30 fps.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"

U kolíku Capture povolíme jakékoli rozlišení a libovolnou frekvenci snímků 60 fps nebo vyšší.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"

I když není připnutí fotky k dispozici:

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"

Kromě profilu Vysoká frekvence snímků poskytujeme také standardní profil záznamu videa.

HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"

Opět nemáme žádná omezení připnutí náhledu, protože naše hypotetická kamera zveřejňuje pouze 30 snímků/s náhled pouze s typy médií, které jsou zaručeny souběžné v obou scénářích nahrávání videa nebo vysoké frekvence snímků.

HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"

U připínáčku Capture ale musíme tuto možnost omezit na typy médií s 30 fps, protože nemůžeme podporovat vyšší frekvence snímků pro různá rozlišení mezi náhledem a zachycením ani operacemi foto.

HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"

Pro připnutí fotky deklarujeme žádnou podporu sekvence fotek deklarací ovládacího prvku Sekvence fotek jako blokovaného pro tento profil.

HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"

specifikace profilu kamery v2