Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Bierzemy hipotetyczny aparat obsługujący nowy profil o wysokiej szybkości klatek. Zdefiniujmy pewne ograniczenia dla naszego urządzenia.
Numer PIN podglądu to numer PIN 0. W KSFILTER_DESCRIPTOR, który jest zadeklarowany przez sterownik aparatu, gdy jest zdefiniowana tablica KSPIN_DESCRIPTOR_EX, pierwszym KSPIN_DESCRIPTOR_EX jest deskryptor numeru PIN podglądu. Podobnie numer PIN 1 to Przechwyć pinezkę, a numer PIN 2 to Zdjęcie pin.
Ze względu na ograniczenia sprzętowe urządzenie, o których mowa, nie może obsłużyć skalowania przy szybkości 60 klatek na sekundę lub większej. W związku z tym zarówno strumienie podglądu, jak i przechwytywania muszą mieć taką samą rozdzielczość.
Podobnie urządzenie nie może obsługiwać konwersji przestrzeni kolorów na 60 klatek na sekundę lub więcej.
Aparat jest w stanie przesyłać strumieniowo wideo 4K 16x9 na 60 klatek na sekundę. Aparat jest również w stanie 3840x2880@60fps (4:3 wideo na 60 klatek na sekundę).
Aparat nie może zapewnić żadnych operacji fotograficznych w przypadku działania przy 60 kl./s.
Zadeklarujemy również profil nagrywania wideo, ograniczony do 30 klatek na sekundę, ale może zezwalać na dowolną kombinację rozdzielczości/podtypy.
W przypadku sekwencji zdjęć profilu nagrywania wideo nie jest obsługiwana (na przykład działa operacja pojedynczego zdjęcia).
W przypadku deklaracji opartej na protokole INF każdy filtr typu nośnika pin musi mieć przypisaną nazwę wpisu rejestru. Ta nazwa musi być nazwą MTF#, gdzie # reprezentuje wartość całkowitą.
Biorąc pod uwagę te ograniczenia, możemy zadeklarować następujący 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))"
Ustawiając wpis rejestru OEMCameraProfileVersion na 2, wskazujemy potok przechwytywania, który obsługujemy nowy schemat profilu opartego na ograniczeniach.
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
Po zadeklarowaniu wszystkie profile muszą być przechowywane w kluczu rejestru Profile w węźle Interfejs urządzenia.
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
Każdy profil musi być skonfigurowany jako podklucz w kluczu Profile przy użyciu identyfikatora profilu. Identyfikator profilu składa się z typu profilu, indeksu profilu.
Typ profilu może być jednym z następujących dobrze znanych typów profilów lub ciągiem {GUID}:
KSCAMERAPROFILE_HighQualityPhoto
KSCAMERAPROFILE_BalancedVideoAndPhoto
KSCAMERAPROFILE_VideoConferencing
KSCAMERAPROFILE_PhotoSequence
KSCAMERAPROFILE_FaceAuth_Mode
KSCAMERAPROFILE_HighFrameRate
KSCAMERAPROFILE_HDRWithWCGVideo
KSCAMERAPROFILE_HDRWithWCGPhoto
KSCAMERAPROFILE_VariablePhotoSequence
KSCAMERAPROFILE_VideoHDR8
Indeks profilu może być dowolną 32-bitową liczbą całkowitą bez znaku, z wyjątkiem 0xFFFFFFFF. Wartość indeksu 0xFFFFFFFF jest zarezerwowana i nie może być używana przez żadną deklarację IHV/OEM.
Deklaracja wpisu Ograniczenie w podkluczu profilu wskazuje, że mamy ograniczenie poziomu profilu:
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
W przypadku profilu o wysokiej szybkości klatek LRS;LST wskazuje, że rozdzielczość we wszystkich wyprowadzeniach musi być taka sama, a podtyp musi być taki sam (żadne skalowanie ani konwersja przestrzeni kolorów nie jest dozwolona z potoku przechwytywania).
W przypadku numeru PIN w wersji zapoznawczej profilu Wysoki współczynnik klatek na klatkę ramową zezwalamy na dowolną rozdzielczość/szybkość klatek dostępną w numerze PIN w wersji zapoznawczej. W przypadku naszego hipotetycznego urządzenia numer PIN w wersji zapoznawczej nigdy nie będzie ujawniać więcej niż 30 klatek na sekundę.
[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:(!)"
W przypadku przypinania przechwytywania zezwalamy na dowolną rozdzielczość i dowolną szybkość 60 klatek na sekundę lub wyższą.
[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:(!)"
Chociaż numer PIN zdjęcia jest niedostępny:
[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:(!)"
Oprócz profilu o wysokiej szybkości klatek udostępniamy również standardowy profil nagrywania wideo.
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))"
Po raz kolejny nie mamy żadnych ograniczeń dotyczących pinezki podglądu, ponieważ nasz hipotetyczny aparat uwidacznia tylko podgląd 30 klatek na sekundę tylko z typami multimediów, które mają gwarancję współbieżności w scenariuszach nagrywania wideo lub wysokiej szybkości klatek.
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))"
Jednak w przypadku przypinania przechwytywania musimy ograniczyć to do 30 typów multimediów na sekundę, ponieważ nie możemy obsługiwać wyższych szybkości klatek dla różnych rozdzielczości między operacjami podglądu i przechwytywania ani zdjęć.
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))"
W przypadku pinezki zdjęć nie deklarujemy obsługi sekwencji zdjęć, deklarując kontrolkę Photo Sequence jako zablokowaną dla tego profilu.
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))"