Attributi dei metadati delle statistiche di acquisizione
La tabella seguente riepiloga le statistiche di acquisizione disponibili IMFAttributes per il contenitore di attributi di metadati MFSampleExtension_CaptureMetaData MFT0 per l'anteprima, il video e l'acquisizione.
Le statistiche di acquisizione elencate per sono comunque obbligatorie per ogni foto acquisita, se non diversamente indicato. Le statistiche di acquisizione elencate per l'anteprima e il video devono essere recapitate nel modo migliore e il driver può o meno fornire tutte le statistiche di acquisizione su tutti i fotogrammi in base alle considerazioni sulla disponibilità e sulle prestazioni.
Nome | Tipo | Aggiungi (Blocca) | Descrizione |
---|---|---|---|
MF_CAPTURE_METADATA_FOCUSSTATE | UINT32 | Anteprima | Questo attributo contiene lo stato attivo corrente che può accettare uno dei valori seguenti. |
MF_CAPTURE_METADATA_SENSORFRAMERATE | UINT64 | Anteprima | Questo attributo contiene la frequenza di lettura del sensore misurata inhz quando viene acquisito un frame di anteprima, costituito da un valore del numeratore nell'angolo superiore a 32 bit e da un valore denominatore inferiore a 32 bit. |
MF_CAPTURE_METADATA_FACEROIS | BLOB | Anteprima, Video | Questo attributo contiene le informazioni sul rettangolo del viso rilevate dal driver. |
MF_CAPTURE_METADATA_FACEROITIMESTAMPS | BLOB | Anteprima, Video | Questo attributo contiene le informazioni sul timestamp per le ROI del viso identificate in MF_CAPTURE_METADATA_FACEROIS. |
MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS | BLOB | Anteprima, Video | Questo attributo contiene lo stato di lampeggiare e\o espressione facciale per le roI del viso identificate in MF_CAPTURE_METADATA_FACEROIS. |
MF_CAPTURE_METADATA_EXPOSURE_TIME | UINT64 | Anteprima, ancora | Questo attributo contiene il tempo di esposizione applicato in 100 nanosecondi |
MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION | BLOB | Anteprima, ancora | Questo attributo contiene un flag di compensazione EV e un valore di compensazione EV in unità del passaggio applicato al conducente quando la foto è stata acquisita. |
MF_CAPTURE_METADATA_ISO_SPEED | UINT32 | Anteprima, ancora | Questo attributo contiene il valore di velocità ISO applicato come integer. |
MF_CAPTURE_METADATA_LENS_POSITION | UINT32 | Anteprima, ancora | Questo attributo contiene la posizione logica dell'obiettivo quando lo stato attivo è stato applicato alla foto acquisita. Questo valore non ha un'unità specifica. |
MF_CAPTURE_METADATA_SCENE_MODE | UINT64 | Ancora | Questo attributo contiene la modalità scena applicata come flag di UINT64KSCAMERA_EXTENDEDPROP_SCENEMODE_XXX . |
MF_CAPTURE_METADATA_FLASH | UINT32 (booleano) | Anteprima, ancora | Questo attributo contiene un valore booleano che contiene lo stato flash. Il valore 1 specifica che il flash è acceso e il valore 0 specifica che il flash è disattivato per la foto acquisita. |
MF_CAPTURE_METADATA_FLASH_POWER | UINT32 | Ancora | [Facoltativo] Questo attributo contiene la potenza flash applicata come valore percentuale compreso tra 0 e 100. |
MF_CAPTURE_METADATA_WHITEBALANCE | UINT32 (Kelvin) | Anteprima, ancora | Questo attributo contiene il bilanciamento del bianco applicato come valore in Kelvin. |
MF_CAPTURE_METADATA_ZOOMFACTOR | UINT32 (Q16) | Ancora | Questo attributo contiene il valore di zoom applicato ed è lo stesso valore su cui è possibile eseguire query da KSPROPERTY_CAMERACONTROL_EXTENDED_ZOOM in una chiamata GET. Il valore deve essere in Q16. |
MF_CAPTURE_METADATA_EXIF | BLOB | Ancora | [Facoltativo] Questo attributo contiene metadati EXIF come specificato nella sezione di definizione del BLOB |
MF_CAPTURE_METADATA_REQUESTED_FRAME_SETTING_ID | UINT32 | Ancora | [Facoltativo] Questo attributo contiene l'ID cornice per il fotogramma corrispondente nella sequenza di foto variabile. Questo attributo è impostato solo per un'acquisizione di sequenza di foto variabile. |
MF_CAPTURE_METADATA_ISO_GAINS | BLOB | Anteprima | Questo attributo contiene i guadagni analogici e digitali applicati al senore quando è stato acquisito il frame di anteprima. Questo è unitless. |
MF_CAPTURE_METADATA_WHITEBALANCE_GAINS | BLOB | Anteprima | Questo attributo contiene i guadagni di bilanciamento del bianco applicati a R, G, B dal sensore e\o dall'ISP quando il frame di anteprima è stato acquisito. Si tratta di un'unità. |
MF_CAPTURE_METADATA_HISTOGRAM | BLOB | Anteprima | Questo attributo contiene l'istogramma quando viene acquisito il frame apreview. |
MF_CAPTURE_METADATA_FRAME_ILLUMINATION | UINT64 | Pin del runtime di integrazione usato per Hello | Questo attributo per le fotocamere IR specifica se i fotogrammi usano l'illuminazione del runtime di integrazione attiva e devono essere usati insieme a FACEAUTH_MODE_ALTERNATIVE_FRAME_ILLUMINATION. |
Qualsiasi GUID personalizzato | Qualsiasi tipo variant | Questo attributo contiene i dati personalizzati associati al GUID personalizzato |
MF_CAPTURE_METADATA_FOCUSSTATE
MF_CAPTURE_METADATA_FOCUSSTATE attributo contiene lo stato attivo corrente che può accettare uno dei valori seguenti.
typedef enum
{
KSCAMERA_EXTENDEDPROP_FOCUSSTATE_UNINITIALIZED = 0,
KSCAMERA_EXTENDEDPROP_FOCUSSTATE_LOST,
KSCAMERA_EXTENDEDPROP_FOCUSSTATE_SEARCHING,
KSCAMERA_EXTENDEDPROP_FOCUSSTATE_FOCUSED,
KSCAMERA_EXTENDEDPROP_FOCUSSTATE_FAILED,
} KSCAMERA_EXTENDEDPROP_FOCUSSTATE;
MF_CAPTURE_METADATA_SENSORFRAMERATE
MF_CAPTURE_METADATA_SENSORFRAMERATE attributo contiene la frequenza di lettura del sensore misurata in hertz quando viene acquisito un frame di anteprima, costituito da un valore numeratore nella parte superiore di 32 bit e un valore denominatore nella parte inferiore di 32 bit.
MF_CAPTURE_METADATA_FACEROIS
MF_CAPTURE_METADATA_FACEROIS attributo contiene le informazioni sul rettangolo viso rilevate dal driver. Per impostazione predefinita, driver\MFT0 deve fornire le informazioni sul viso nel flusso di anteprima. Se il driver annuncia la funzionalità in altri flussi, driver\MFT deve fornire le informazioni sul viso nei flussi corrispondenti se l'applicazione abilita il rilevamento dei volti in tali flussi. Quando la stabilizzazione video è abilitata sul driver, le informazioni sul viso devono essere fornite dopo la stabilizzazione video. Le strutture di dati seguenti descrivono il formato BLOB per MF_CAPTURE_METADATA_FACEROIS. Il viso domina deve essere il primo FaceRectInfo nel BLOB.
typedef struct tagFaceRectInfoBlobHeader
{
ULONG Size; // Size of this header + all FaceRectInfo following
ULONG Count; // Number of FaceRectInfo’s in the blob
} FaceRectInfoBlobHeader;
typedef struct tagFaceRectInfo
{
RECT Region; // Relative coordinates on the frame that face detection is running (Q31 format)
LONG ConfidenceLevel; // Confidence level of the region being a face ([0, 100])
} FaceRectInfo;
Si noti che gli struct FaceRectinfoBlobHeader e FaceRectInfo descrivono solo il formato BLOB per l'attributo MF_CAPTURE_METADATA_FACEROIS. La struttura dell'elemento dei metadati per le ROI viso (KSCAMERA_METADATA_ITEMHEADER + payload dei metadati delle ROIs viso) è fino al driver e deve essere allineata a 8 byte.
Per progettazione, se un flusso è configurato con il rilevamento viso abilitato e la scena in questione non contiene visi durante l'acquisizione, il driver è comunque necessario collegare un attributo "fittizio" MF_CAPTURE_METADATA_FACEROIS a ogni esempio che non ha informazioni sul volto associate. Un attributo "dummy" face ROI ha il campo Count della struttura FaceRectInfoBlobHeader impostata su zero.
MF_CAPTURE_METADATA_FACEROITIMESTAMPS
MF_CAPTURE_METADATA_FACEROITIMESTAMPS attributo contiene le informazioni sul timestamp per le RO viso identificate in MF_CAPTURE_METADATA_FACEROIS. Per il dispositivo che non è in grado di fornire il timestamp per le ROI viso, questo attributo deve essere omesso.
La struttura di dati seguente descrive il formato BLOB per MF_CAPTURE_METADATA_FACEROITIMESTAMPS.
typedef struct tagMetadataTimeStamps
{
ULONG Flags; // Bitwise OR of MF_METADATATIMESTAMPS_XXX flags
LONGLONG Device; // QPC time for the sample where the face rect is derived from (in 100ns)
LONGLONG Presentation; // PTS for the sample where the face rect is derived from (in 100ns)
} MetadataTimeStamps;
Per il campo Flags, verranno definiti i flag di bit seguenti per indicare quale timestamp è valido. MFT0 deve impostare Flag su MF_METADATATIEMSTAMPS_DEVICE e l'ora QPC appropriata per Dispositivo, se il driver fornisce i metadati timestamp per le PARTIZIONI viso.
#define MF_METADATATIMESTAMPS_DEVICE 0x00000001
#define MF_METADATATIMESTAMPS_PRESENTATION 0x00000002
Si noti che lo struct MetadataTimeStamps descrive solo il formato BLOB per l'attributo MF_CAPTURE_METADATA_FACEROITIMESTAMPS. La struttura dell'elemento dei metadati per timestamp (KSCAMERA_METADATA_ITEMHEADER + payload dei metadati timestamp) è fino al driver e deve essere allineata a 8 byte.
MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS
MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS attributo contiene lo stato di espressione blink e\o facciale per le RO del viso identificate in MF_CAPTURE_METADATA_FACEROIS. Per il dispositivo che non supporta il rilevamento di espressioni blink e\o facciali, questo attributo deve essere omesso.
La struttura dei dati seguente descrive il formato BLOB per MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS.
Si noti che FaceConfigurationBlobHeader e FaceConfiguration struct descrivono solo il formato BLOB per l'attributo MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS. La struttura degli elementi dei metadati per la caratterizzazione del viso (KSCAMERA_METADATA_ITEMHEADER + payload dei metadati del viso) è fino al driver e deve essere allineata a 8 byte.
typedef struct tagFaceCharacterizationBlobHeader
{
ULONG Size; // Size of this header + all FaceCharacterization following
ULONG Count; // Number of FaceCharacterization’s in the blob. Must match the number of FaceRectInfo’s in FaceRectInfoBlobHeader
} FaceCharacterizationBlobHeader;
typedef struct tagFaceCharacterization
{
ULONG BlinkScoreLeft; // [0, 100]. 0 indicates no blink for the left eye. 100 indicates definite blink for the left eye
ULONG BlinkScoreRight; // [0, 100]. 0 indicates no blink for the right eye. 100 indicates definite blink for the right eye
ULONG FacialExpression; // Any one of the MF_METADATAFACIALEXPRESSION_XXX defined
ULONG FacialExpressionScore; // [0, 100]. 0 indicates no such facial expression as identified. 100 indicates definite such facial expression as defined
} FaceCharacterization;
Di seguito viene definita la possibile espressione facciale che può essere rilevata.
#define MF_METADATAFACIALEXPRESSION_SMILE 0x00000001
Se MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS attributo presenta, il numero e l'ordine delle voci Face Mapping nel BLOB devono corrispondere al numero e all'ordine delle voci FaceRectInfo nel BLOB di MF_CAPTURE_METADATA_FACEROIS. Ogni voce FaceObject rappresenta lo stato di espressione blink e\o facciale del viso nella voce FaceRectInfo corrispondente allo stesso indice.
La figura seguente illustra i layout di un BLOB di caratterizzazione del viso e un BLOB di visi ROIs di quattro visi con il primo non lampeggiante né sorridente, il secondo un occhio sinistro lampeggiante, il terzo sorridente, e il quarto entrambi lampeggianti (entrambi gli occhi) e sorridente.
MF_CAPTURE_METADATA_EXPOSURE_TIME
MF_CAPTURE_METADATA_EXPOSURE_TIME attributo contiene il tempo di esposizione applicato al sensore quando l'anteprima e\o la cornice di foto è stata acquisita, ovvero un UINT64 ed è in 100ns.
MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION
MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION attributo contiene un flag di compensazione EV e un valore di compensazione EV in unità del passaggio applicato al sensore quando è stata acquisita l'anteprima e\o la cornice fotografica.
La struttura di dati seguente descrive il formato BLOB per MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION.
typedef struct tagCapturedMetadataExposureCompensation
{
UINT64 Flags; // KSCAMERA_EXTENDEDPROP_EVCOMP_XXX step flag
INT32 Value; // EV Compensation value in units of the step
} CapturedMetadataExposureCompensation;
Si noti che CapturedMetadataExposureCompensation struct descrive solo il formato BLOB per l'attributo MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION. La struttura dell'elemento dei metadati per la compensazione ev (KSCAMERA_METADATA_ITEMHEADER + payload dei metadati di compensazione EV) è fino al driver e deve essere allineata a 8 byte.
MF_CAPTURE_METADATA_ISO_SPEED
MF_CAPTURE_METADATA_ISO_SPEED attributi contiene il valore di velocità ISO applicato al sensore quando è stata acquisita l'anteprima e\o la cornice fotografica. Questo è senza unità.
MF_CAPTURE_METADATA_ISO_GAINS
MF_CAPTURE_METADATA_ISO_GAINS attributo contiene i guadagni analogici e digitali applicati al senor quando è stato acquisito il frame di anteprima. Questo è senza unità.
La struttura dei dati seguente descrive il formato BLOB per MF_CAPTURE_METADATA_ISO_GAINS.
typedef struct tagCapturedMetadataISOGains
{
FLOAT AnalogGain;
FLOAT DigitalGain;
} CapturedMetadataISOGains;
Si noti che Lo struct CapturedMetadataISOGains descrive solo il formato BLOB per l'attributo MF_CAPTURE_METADATA_ISO_GAINS. La struttura degli elementi di metadati per i guadagni ISO (KSCAMERA_METADATA_ITEMHEADER + ISO ottiene il payload dei metadati) è fino al driver e deve essere allineata a 8 byte.
MF_CAPTURE_METADATA_LENS_POSITION
MF_CAPTURE_METADATA_LENS_POSITION attributo contiene la posizione logica dell'obiettivo quando è stata acquisita l'anteprima e\o la cornice fotografica, che è senza unità. Si tratta dello stesso valore che può essere eseguito una query da KSPROPERTY_CAMERACONTROL_EXTENDED_FOCUS in una chiamata GET.
MF_CAPTURE_METADATA_SCENE_MODE
MF_CAPTURE_METADATA_SCENE_MODE attributo contiene la modalità scena applicata alla foto acquisita che è un flag di KSCAMERA_EXTENDEDPROP_SCENEMODE_XXX a 64 bit.
MF_CAPTURE_METADATA_FLASH
MF_CAPTURE_METADATA_FLASH attributo contiene un valore booleano quando è stata acquisita l'anteprima e\o la cornice di foto, con 1 significato flash su e 0 significa flash off.
MF_CAPTURE_METADATA_FLASH_POWER
MF_CAPTURE_METADATA_FLASH_POWER attributo contiene la potenza flash applicata alla foto acquisita che è un valore nell'intervallo di [0, 100]. Questo attributo deve essere omesso se il driver non supporta la potenza regolabile per flash.
MF_CAPTURE_METADATA_WHITEBALANCE
MF_CAPTURE_METADATA_WHITEBALANCE attributo contiene il bilanciamento del bianco applicato al sensore quando è stata acquisita l'anteprima e\o la cornice di foto, ovvero un valore in Kevin.
MF_CAPTURE_METADATA_WHITEBALANCE_GAINS
MF_CAPTURE_METADATA_WHITEBALANCE_GAINS attributo contiene i guadagni di bilanciamento del bianco applicati a R, G, B dal sensore e\o dall'ISP quando è stato acquisito il frame di anteprima. Si tratta di un'unità.
La struttura di dati seguente descrive il formato BLOB per MF_CAPTURE_METADATA_WHITEBALANCE_GAINS.
typedef struct tagCapturedMetadataWhiteBalanceGains
{
FLOAT R;
FLOAT G;
FLOAT B;
} CapturedMetadataWhiteBalanceGains;
Si noti che CapturedMetadataWhiteBalanceGains struct descrive solo il formato BLOB per l'attributo MF_CAPTURE_METADATA_WHITEBALANCE_GAINS. La struttura dell'elemento dei metadati per i guadagni del bilanciamento del bianco (KSCAMERA_METADATA_ITEMHEADER + bilanciamento del bianco ottiene il payload dei metadati) è fino al driver e deve essere allineata a 8 byte.
MF_CAPTURE_METADATA_ZOOMFACTOR
MF_CAPTURE_METADATA_ZOOMFACTOR attributo contiene il valore di zoom applicato alla foto acquisita, ovvero lo stesso valore che può essere eseguito da query da KSPROPERTY_CAMERACONTROL_EXTENDED_ZOOM in una chiamata GET. Questo deve essere in Q16.
MF_CAPTURE_METADATA_EXIF
MF_CAPTURE_METADATA_EXIF contiene metadati EXIF come specificato nella sezione 3.1 (definizione BLOB). MFT0 estrae i metadati EXIF non elaborati, identificati come elemento di metadati personalizzati (MetadataId >= MetadataId_Custom_Start), dal buffer MF_CAPTURE_METADATA_FRAME_RAWSTREAM fornito dal driver. MFT0 converte quindi i dati non elaborati in un attributo MF_CAPTURE_METADATA_EXIF.
Definizione BLOB
Il BLOB è costituito da un'intestazione TIFF completa, 0th IFD e EXIF sub-IFD come definito dalle specifiche EXIF 2.3 e TIFF 6.0. Il BLOB non contiene dati prima dell'intestazione TIFF. Il BLOB non contiene dati dopo la fine dell'IFD 0. Ad esempio, non è valido includere un IFD contenente dati di anteprima.
Il diagramma seguente, copiato dalla specifica TIFF, illustra il layout di memoria previsto:
Di seguito sono riportati i requisiti coerenti con le specifiche EXIF e TIFF, ma vengono chiamati per enfasi:
- L'ordine di byte deve essere un piccolo endian ("II") o big endian("MM").
- I puntatori ("offset byte" nella specifica TIFF) devono essere relativi all'inizio dell'intestazione TIFF.
Di seguito sono riportati i requisiti più restrittivi rispetto alle specifiche EXIF e TIFF:
- L'offset al successivo IFD sarà 0, ad esempio non sono indicati altri IFD.
- L'intestazione TIFF e il 0° IFD devono essere contigui, ad esempio l'offset al 0 ifD archiviato in byte 4-7 deve essere 0x8.
Metadati EXIF obbligatori
La sezione seguente descrive i metadati EXIF che devono essere inclusi in MF_CAPTURE_METADATA_EXIF .
Nome | EXIF Tag | Descrizione |
---|---|---|
Orientamento | 274 | Orientamento dell'immagine visualizzato in termini di righe e colonne. Per descrizione completa, vedere la specifica EXIF |
Casa automobilistica | 271 | Produttore dell'attrezzatura di registrazione |
Modellare | 272 | Nome del modello o numero di modello del dispositivo |
XResolution | 282 | Numero di pixel per unità di risoluzione nella direzione ImageWidth |
YResolution | 283 | Numero di pixel per unità di risoluzione nella direzione ImageLength |
ResolutionUnit | 296 | Unità per la misurazione di XResolution e YResolution |
Software | 305 | Nome e versione del firmware |
ColorSpace | 40961 | Informazioni sullo spazio dei colori, in genere sRGB |
SubsSecTimeOriginal | 37521 | Registra le frazioni di secondi associate al tag DateTimeOriginal |
SubSecTimeDigitized | 37522 | Registra le frazioni di secondi associate al tag DateTimeDigitized |
ExposureTime | 33434 | Tempo di esposizione in secondi (accurato a 0,001s) |
FNumber | 33437 | Numero F utilizzato per l'acquisizione |
ISOSpeedRatings | 34855 | Valore della velocità ISO definito in ISO 12322, basato sulla saturazione |
DateTimeOriginal | 36867 | Data e ora in cui sono stati generati i dati dell'immagine originale |
DateTimeDIgitized | 36868 | Data e ora in cui l'immagine viene archiviata come dati digitali |
SpeedValue dell'otturatore | 37377 | Velocità dell'otturatore nelle unità Di esposizione fotografica (APEX) |
Valore di apertura | 37378 | Apertura dell'obiettivo in unità APEX |
Valore di ExposureBias | 37380 | Valore di distorsione dell'esposizione nelle unità APEX |
MeteringMode | 37383 | Modalità di misurazione di AE (vedere specifica EXIF) |
LightSource | 37384 | Tipo di fonte di luce (vedere la specifica EXIF) |
Flash | 37385 | Stato del flash durante l'acquisizione di immagini |
FocalLength | 37386 | Lunghezza focale effettiva dell'obiettivo |
ExposureMode | 41986 | Modalità di esposizione durante l'acquisizione |
WhiteBalance | 41987 | Modalità di bilanciamento del bianco durante l'acquisizione |
DigitalZoomRatio | 41988 | Rapporto di zoom digitale durante l'acquisizione di immagini |
FocalLengthIn35mmFilm | 41989 | Lunghezza focale equivalente a 35 mm |
SceneCaptureType | 41990 | Tipo di scena che è stato girato |
Metadati definiti dall'OEM/facoltativi
Il driver della fotocamera può includere tutti i metadati aggiuntivi sotto forma di tag EXIF personalizzati purché sia conforme alla specifica EXIF ed è archiviato nel 0° IFD TIFF o nel sub-IFD EXIF.
Requisiti di MakerNote e aspettative di layout binario
Il driver della fotocamera può includere informazioni proprietarie del produttore sotto forma di nota del produttore (tag 37500). La nota del creatore non deve contenere puntatori a, o in caso contrario, dati esterni alla nota del maker, incluso l'inizio del file e la posizione dell'intestazione TIFF. Inoltre, non deve fare presupposti sulla endianità del file come specificato nell'intestazione TIFF.
In generale, il sistema operativo non garantisce che il layout binario del BLOB di metadati venga mantenuto quando viene scritto nel flusso JPEG di output. Garantisce solo che i metadati vengano scritti in conformità con la specifica EXIF. Ad esempio, garantisce solo che la nota del creatore venga copiata come blocco contiguo e sia identificata dal tag IFD corretto, tipo e offset.
Utilizzo con il codificatore WIC JPEG
L'utilizzo previsto di MF_CAPTURE_METADATA_EXIF è con il codificatore JPEG (Windows Imaging Component) fornito dal sistema operativo. Fotocamera Windows pipeline usa il codificatore JPEG windows WIC per utilizzare i metadati EXIF ottenuti da MF_CAPTURE_METADATA_EXIF e muxe questo con i dati pixel dell'immagine in un file JPEG quando l'applicazione non acquisisce un JPEG direttamente dalla fotocamera, ma configurata la pipeline per l'acquisizione in NV12/YUY2 e viene codificata dal sistema operativo
MF_CAPTURE_METADATA_REQUESTED_FRAME_SETTING_ID
MF_CAPTURE_METADATA_REQUESTED_FRAME_SETTING_ID attributo contiene l'ID cornice per la cornice corrispondente nella sequenza di foto variabile. Questo attributo è impostato solo per un'acquisizione di sequenza di foto variabile.
MF_CAPTURE_METADATA_FRAME_ILLUMINATION
MF_CAPTURE_METADATA_FRAME_ILLUMINATION attributo per le fotocamere IR specifica se i fotogrammi usano l'illuminazione attiva del ir e devono essere usati insieme a FACEAUTH_MODE_ALTERNATIVE_FRAME_ILLUMINATION. Viene usato solo per esempi di integrazione e non deve essere presente nei fotogrammi RGB se la fotocamera supporta sia esempi di ir che di colore.
Il valore deve essere impostato su 0xXXXXXXXXXXXXXXX1 se la cornice è stata acquisita quando l'illuminazione attiva è stata attivata e impostata su 0xXXXXXXXXXXXXXXXXXXXXX0 se non è presente alcuna illuminazione durante l'acquisizione del fotogramma.
MF_CAPTURE_METADATA_HISTOGRAM
MF_CAPTURE_METADATA_HISTOGRAM attributo contiene l'istogramma quando viene acquisito il frame apreview.
Le strutture di dati seguenti descrivono il formato BLOB per MF_CAPTURE_METADATA_HISTOGRAM.
typedef struct tagHistogramGrid
{
ULONG Width; // Width of the sensor output that histogram is collected from
ULONG Height; // Height of the sensor output that histogram is collected from
RECT Region; // Absolute coordinates of the region on the sensor output that the histogram is collected for
} HistogramGrid;
typedef struct tagHistogramBlobHeader
{
ULONG Size; // Size of the entire histogram blob in bytes
ULONG Histograms; // Number of histograms in the blob. Each histogram is identified by a HistogramHeader
} HistogramBlobHeader;
typedef struct tagHistogramHeader
{
ULONG Size; // Size of this header + (HistogramDataHeader + histogram data following) * number of channels available
ULONG Bins; // Number of bins in the histogram
ULONG FourCC; // Color space that the histogram is collected from
ULONG ChannelMasks; // Masks of the color channels that the histogram is collected for
HistogramGrid Grid; // Grid that the histogram is collected from
} HistogramHeader;
typedef struct tagHistogramDataHeader
{
ULONG Size; // Size in bytes of this header + histogram data following
ULONG ChannelMask; // Mask of the color channel for the histogram data
ULONG Linear; // 1, if linear; 0 nonlinear
} HistogramDataHeader;
Per il campo ChannelMasks, si definiranno le maschera di bit seguenti per indicare i canali disponibili nell'istogramma.
#define MF_HISTOGRAM_CHANNEL_Y 0x00000001
#define MF_HISTOGRAM_CHANNEL_R 0x00000002
#define MF_HISTOGRAM_CHANNEL_G 0x00000004
#define MF_HISTOGRAM_CHANNEL_B 0x00000008
#define MF_HISTOGRAM_CHANNEL_Cb 0x00000010
#define MF_HISTOGRAM_CHANNEL_Cr 0x00000020
Note:
- Ogni BLOB può contenere più istogrammi raccolti da aree diverse o spazi di colore diversi dello stesso frame
- Ogni istogramma nel BLOB viene identificato dal proprio IstogramHeader
- Ogni istogramma ha una propria area e dimensioni di output del sensore associate. Per l'istogramma full frame, l'area corrisponderà alle dimensioni di output del sensore specificate in HistogramGrid.
- I dati istogrammi per tutti i canali disponibili vengono raggruppati in un istogramma. I dati istogrammi per ogni canale vengono identificati da un istogramDataHeader immediatamente sopra i dati. ChannelMasks indica quanti canali e quali canali hanno i dati istogrammi, ovvero l'OR bit per bit dei MF_HISTOGRAM_CHANNEL_XXX supportati come definito in precedenza. ChannelMask indica il canale per cui i dati sono identificati da uno dei MF_HISTOGRAM_CHANNEL_XXX maschera di bit definiti in precedenza.
La figura seguente illustra il layout di un BLOB istogramma con un istogramma con un istogramma a fotogramma intero.
I dati istogrammi sono una matrice di ULONG con ogni voce che rappresenta il numero di pixel che rientrano in un set di valori tonali come classificato dal bin. I dati nella matrice devono iniziare da bin 0 a bin N-1, dove N è il numero di bin nell'istogramma, ad esempio IstogramBlobHeader.Bins.
La figura seguente illustra il layout della sezione dei dati istogrammi.
La figura seguente illustra il layout di un BLOB istogramma con un istogramma con un istogramma a fotogramma intero con quattro canali.
La figura seguente illustra il layout di un BLOB istogramma con un istogramma solo Y seguito da un istogramma RGB con tre canali.
Per Soglia, è necessario specificare almeno un istogramma full frame con canale Y che deve essere il primo istogramma nel BLOB istogramma, se KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM è supportato.
Si noti che i dati HistogramBlobHeader, HistogramHeader, HistogramDataHeader e Istogram descrivono solo il formato BLOB per l'attributo MF_CAPTURE_METADATA_HISTOGRAM. La struttura dell'elemento dei metadati per l'istogramma (KSCAMERA_METADATA_ITEMHEADER + tutti i payload dei metadati istogrammi) è fino al driver e deve essere allineata a 8 byte.
Controllo metadati istogramma
KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM è un ID proprietà che verrà usato per controllare i metadati istogrammi generati dal driver. Si tratta di un controllo a livello di pin solo per il pin di anteprima e viene definito come segue:
typedef enum {
…
#if (NTDDI_VERSION >= NTDDI_WIN8)
KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM
#endif
} KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY;
Per KSCAMERA_EXTENDEDPROP_HEADER, verranno definiti i flag di bit seguenti per controllare i metadati istogrammi nel driver. Il valore predefinito è OFF.
#define KSCAMERA_EXTENDEDPROP_HISTOGRAM_OFF 0x0000000000000000
#define KSCAMERA_EXTENDEDPROP_HISTOGRAM_ON 0x0000000000000001
Questo controllo deve essere usato prima del controllo KSPROPERTY_CAMERACONTROL_EXTENDED_METADATA per assicurarsi che venga allocato il buffer di metadati di dimensioni appropriato.
Se impostato su HISTOGRAM_OFF, il driver non recapita i metadati istogrammi nel pin di anteprima. Il driver non deve includere le dimensioni dei metadati istogrammi nel requisito delle dimensioni del buffer dei metadati.
Se impostato su HISTOGRAM_ON, il driver recapita i metadati istogrammi nel pin di anteprima. Il driver deve includere le dimensioni dei metadati istogrammi nel requisito delle dimensioni del buffer dei metadati.
Se il driver non dispone della capacità di produrre metadati istogrammi, il driver non deve implementare questo controllo. Se il driver supporta questo controllo, deve supportare anche il controllo KSPROPERTY_CAMERACONTROL_EXTENDED_METADATA.
La chiamata SET di questo controllo non ha alcun effetto quando il pin di anteprima è inany stato superiore allo stato KSSTATE_STOP. Il driver rifiuta la chiamata SET ricevuta se l'anteprima non è nello stato di arresto e restituisce STATUS_INVALID_DEVICE_STATE. In una chiamata GET, il driver deve restituire le impostazioni correnti nel campo Flags.
Si tratta di un controllo sincrono. Non sono state definite funzionalità per questo controllo.
KSCAMERA_EXTENDEDPROP_HEADER
Versione
Deve essere 1.
PinId
Deve essere l'ID pin associato al pin di anteprima.
Dimensione
Deve essere sizeof(KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(KSCAMERA_EXTENDEDPROP_VALUE)
Risultato
Indica i risultati dell'errore dell'ultima operazione SET. Se non è stata eseguita alcuna operazione SET, questa operazione deve essere 0.
Funzionalità
Deve essere 0.
Flags
Si tratta di un campo di lettura/scrittura. Questo può essere uno dei KSCAMERA_EXTENDEDPROP_HISTOGRAM_XXX
flag definiti in precedenza.
KSCAMERA_EXTENDEDPROP_VALUE
Non usato