Condividi tramite


Dichiarazione del profilo di esempio (Profilo fotocamera V2)

Prendiamo una fotocamera ipotetica che supporti il nuovo profilo High Frame Rate. Definiamo alcuni vincoli per il dispositivo.

  1. Il pin di anteprima è pin 0. Nella KSFILTER_DESCRIPTOR dichiarata dal driver della fotocamera, quando viene definita la matrice di KSPIN_DESCRIPTOR_EX, il primo KSPIN_DESCRIPTOR_EX è il descrittore del pin di anteprima. Analogamente, il pin 1 è Capture pin e pin 2 è photo pin.

  2. A causa delle limitazioni hardware, il dispositivo in questione non può gestire la scalabilità a velocità di fotogrammi di 60 fps o superiore. Pertanto, sia i flussi di anteprima che di acquisizione devono avere la stessa risoluzione.

  3. Analogamente, il dispositivo non può gestire la conversione dello spazio dei colori per 60 fps o superiore.

  4. La fotocamera è in grado di trasmettere video 4K 16x9 a 60 fps. La fotocamera è anche in grado di 3840x2880@60fps (video 4:3 a 60 fps).

  5. La fotocamera non è in grado di fornire operazioni fotografiche durante l'esecuzione a 60 fps.

  6. Dichiareremo anche un profilo di registrazione video, limitato a 30 fps, ma potrebbe consentire qualsiasi combinazione di risoluzione/sottotipi.

  7. Per la sequenza di foto del profilo di registrazione video non è supportata (ad esempio, le singole operazioni fotografico funzionano).

Per la dichiarazione basata su INF, a ogni filtro del tipo di supporto pin deve essere assegnato un nome di voce del Registro di sistema. Questo nome deve essere MTF# dove # rappresenta un valore intero.

Considerati questi vincoli, è possibile dichiarare il profilo seguente:

[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))"

Impostando la voce del Registro di sistema OEMCameraProfileVersion su 2, si indica alla pipeline di acquisizione che supportiamo il nuovo schema del profilo basato su vincoli.

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

Una volta dichiarati, tutti i profili devono essere archiviati nella chiave del Registro di sistema Profili nel nodo Interfaccia dispositivo.

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

Ogni profilo deve essere configurato come sottochiave nella chiave Profili, usando l'ID profilo. Un ID profilo è costituito da Tipo di profilo, Indice profilo.

Il tipo di profilo può essere uno dei tipi di profilo noti seguenti o una stringa {GUID}:

  • KSCAMERAPROFILE_HighQualityPhoto

  • KSCAMERAPROFILE_BalancedVideoAndPhoto

  • KSCAMERAPROFILE_VideoConferencing

  • KSCAMERAPROFILE_PhotoSequence

  • KSCAMERAPROFILE_FaceAuth_Mode

  • KSCAMERAPROFILE_HighFrameRate

  • KSCAMERAPROFILE_HDRWithWCGVideo

  • KSCAMERAPROFILE_HDRWithWCGPhoto

  • KSCAMERAPROFILE_VariablePhotoSequence

  • KSCAMERAPROFILE_VideoHDR8

L'indice del profilo può essere qualsiasi intero senza segno a 32 bit, ad eccezione di 0xFFFFFFFF. Il valore di indice di 0xFFFFFFFF è riservato e non deve essere utilizzato da alcuna dichiarazione IHV/OEM.

La dichiarazione della voce Constraint nella sottochiave del profilo indica che è presente un vincolo a livello di profilo:

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

Per il profilo Frequenza fotogrammi elevata, il LRS;LST indica che la risoluzione in tutti i pin deve essere uguale e il sottotipo deve essere uguale (non è consentita alcuna conversione dello spazio di ridimensionamento né dello spazio dei colori dalla pipeline di acquisizione).

Per il pin di anteprima del profilo a frequenza elevata dei fotogrammi, è possibile ottenere qualsiasi risoluzione/frequenza dei fotogrammi disponibile nel pin di anteprima. Per il dispositivo ipotetico, il pin di anteprima non esporrà mai più di 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:(!)"

Per il pin Capture, consentiamo qualsiasi risoluzione e qualsiasi frequenza di fotogrammi 60 fps o superiore.

[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:(!)"

Anche se il pin foto non è disponibile:

[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:(!)"

Oltre al profilo ad alta frequenza di fotogrammi, forniamo anche un profilo di registrazione video standard.

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))"

Ancora una volta, non abbiamo vincoli sul pin di anteprima, poiché la fotocamera ipotetica espone solo l'anteprima di 30 fps con solo i tipi di supporti che sono garantiti per essere simultanei in entrambi gli scenari di registrazione video o frequenza dei fotogrammi elevata.

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))"

Per il pin di acquisizione, tuttavia, è necessario limitare questo tipo di supporto a 30 fps perché non è possibile supportare frequenze di fotogrammi più elevate per risoluzioni diverse tra le operazioni Preview e Capture e Photo.

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))"

Per il pin foto, non dichiariamo alcun supporto della sequenza di foto dichiarando il controllo Sequenza foto come bloccato per questo profilo.

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))"

specifica dello sviluppatore del profilo della fotocamera V2