Beispielprofildeklaration (Kameraprofil V2)
Wir verwenden eine hypothetische Kamera, die das neue Profil für hohe Bildfrequenz unterstützt. Definieren wir einige Einschränkungen für unser Gerät.
Der Vorschau-Pin ist pin 0. In der KSFILTER_DESCRIPTOR, die vom Kameratreiber deklariert wird, ist beim Definieren des Arrays von KSPIN_DESCRIPTOR_EX die erste KSPIN_DESCRIPTOR_EX der Vorschau-Pindeskriptor. Auf ähnliche Weise ist Pin 1 Aufnahmepin und Pin 2 ist Fotopin.
Aufgrund von Hardwareeinschränkungen kann das betreffende Gerät die Skalierung bei Bildfrequenzen von 60 fps oder höher nicht verarbeiten. Daher müssen sowohl der Vorschaudatenstrom als auch der Capture-Stream die gleiche Auflösung aufweisen.
Ebenso kann das Gerät auch keine Farbraumkonvertierung für 60 fps oder höher verarbeiten.
Die Kamera ist in der Lage, 4K 16x9-Video mit 60 fps zu streamen. Die Kamera kann auch 3840x2880@60fps (4:3-Video bei 60 fps).
Die Kamera kann keine Fotovorgänge bereitstellen, wenn sie mit 60 fps ausgeführt wird.
Wir deklarieren auch ein Videoaufzeichnungsprofil, das auf 30 fps beschränkt ist, aber möglicherweise alle Auflösungskombinationen/Untertypen zulassen.
Für die Videoaufzeichnung Profilfoto Sequenz nicht unterstützt wird (z. B. einzelne Fotovorgänge funktionieren).
Für die INF-basierte Deklaration muss jedem Filter vom Typ "Medien anheften" ein Registrierungseintragsname zugewiesen werden. Dieser Name muss MTF# sein, wobei # einen ganzzahligen Wert darstellt.
Angesichts dieser Einschränkungen können wir das folgende Profil deklarieren:
[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))"
Wenn Sie den Registrierungseintrag OEMCameraProfileVersion auf 2 festlegen, geben wir der Erfassungspipeline an, dass wir das neue Constraint-basierte Profilschema unterstützen.
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
Nach der Veröffentlichung müssen alle Profile unter dem Registrierungsschlüssel Profiles unter dem Knoten Device Interface gespeichert werden.
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
Jedes Profil muss mit der Profil-ID als Unterschlüssel unter dem Schlüssel Profile konfiguriert werden. Eine Profil-ID besteht aus Profiltyp, Profilindex.
Der Profiltyp kann einer der folgenden bekannten Profiltypen oder eine {GUID}-Zeichenfolge sein:
KSCAMERAPROFILE_HighQualityPhoto
KSCAMERAPROFILE_BalancedVideoAndPhoto
KSCAMERAPROFILE_VideoConferencing
KSCAMERAPROFILE_PhotoSequence
KSCAMERAPROFILE_FaceAuth_Mode
KSCAMERAPROFILE_HighFrameRate
KSCAMERAPROFILE_HDRWithWCGVideo
KSCAMERAPROFILE_HDRWithWCGPhoto
KSCAMERAPROFILE_VariablePhotoSequence
KSCAMERAPROFILE_VideoHDR8
Der Profilindex kann eine beliebige 32-Bit-Ganzzahl ohne Vorzeichen sein, mit Ausnahme von 0xFFFFFFFF. Der Indexwert von 0xFFFFFFFF ist reserviert und darf von keiner IHV/OEM-Deklaration verwendet werden.
Die Deklaration des Einschränkungseintrags am Profilunterschlüssel gibt an, dass wir über eine Einschränkung auf Profilebene verfügen:
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
Für das Profil Mit hoher Bildfrequenz gibt an, dass die LRS;LST
Auflösung für alle Pins identisch sein muss und der Untertyp ebenfalls gleich sein muss (keine Skalierung oder Farbraumkonvertierung ist von der Aufnahmepipeline zulässig).
Für den Vorschau-Pin des Profils "Hohe Bildfrequenz" lassen wir jede Auflösung/Bildfrequenz zu, die auf dem Vorschaupin verfügbar ist. Für unser hypothetisches Gerät wird der Vorschau-Pin niemals mehr als 30 fps verfügbar machen.
[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:(!)"
Für den Capture-Pin lassen wir jede Auflösung und jede Bildfrequenz von 60 fps oder höher zu.
[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:(!)"
Die Fotonadel ist zwar nicht verfügbar:
[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:(!)"
Zusätzlich zum Profil "Hohe Bildfrequenz" bieten wir auch ein Standard-Videoaufnahmeprofil an.
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))"
Auch hier gibt es keine Einschränkungen für den Vorschau-Pin, da unsere hypothetische Kamera nur eine Vorschau von 30 fps mit nur Medientypen verfügbar macht, die sowohl in Videoaufzeichnungs- als auch in Szenarien mit hoher Bildfrequenz garantiert gleichzeitig sind.
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))"
Für den Aufnahmepin müssen wir dies jedoch auf 30 fps-Medientypen beschränken, da wir keine höheren Bildfrequenzen für unterschiedliche Auflösungen zwischen Vorschau- und Aufnahmevorgängen oder Fotovorgängen unterstützen können.
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))"
Für Den Foto-Pin deklarieren wir keine Unterstützung für Fotosequenzen, indem wir das Fotosequenz-Steuerelement für dieses Profil als blockiert deklarieren.
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))"