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:

Definizione BLOB EXIF.

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:

  1. Ogni BLOB può contenere più istogrammi raccolti da aree diverse o spazi di colore diversi dello stesso frame
  2. Ogni istogramma nel BLOB viene identificato dal proprio IstogramHeader
  3. 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.
  4. 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