Freigeben über


Metadatenattribute für Erfassen von Statistiken

In der folgenden Tabelle sind die verfügbaren Erfassungsstatistik-IMFAttributes für den MFSampleExtension_CaptureMetaData Metadatenattributbehälter des MFT0 für Vorschau, Video und Still Capture zusammengefasst.

Die für still aufgeführten Erfassungsstatistiken sind für jedes aufgenommene Foto obligatorisch, sofern nicht anders angegeben. Die für Vorschau und Video aufgeführten Erfassungsstatistiken sollten als optimaler Aufwand bereitgestellt werden, und der Treiber kann alle Erfassungsstatistiken für alle Frames basierend auf den Überlegungen zur Verfügbarkeit und Leistung bereitstellen oder nicht.

Name Typ Pin BESCHREIBUNG
MF_CAPTURE_METADATA_FOCUSSTATE UINT32 Vorschau Dieses Attribut enthält den aktuellen Fokuszustand, der einen der folgenden Werte annehmen kann.
MF_CAPTURE_METADATA_SENSORFRAMERATE UINT64 Vorschau Dieses Attribut enthält die gemessene Sensorausleserate in Hertz, wenn ein Vorschaurahmen erfasst wird, der aus einem Zählerwert im oberen 32 Bit und einem Nennerwert im unteren 32 Bit besteht.
MF_CAPTURE_METADATA_FACEROIS Blob Vorschau, Video Dieses Attribut enthält die vom Treiber erkannten Gesichtsrechteckinformationen.
MF_CAPTURE_METADATA_FACEROITIMESTAMPS Blob Vorschau, Video Dieses Attribut enthält die Zeitstempelinformationen für die in MF_CAPTURE_METADATA_FACEROIS identifizierten Gesichts-ROIs.
MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS Blob Vorschau, Video Dieses Attribut enthält den Blink- und/oder Gesichtsausdruckszustand für die in MF_CAPTURE_METADATA_FACEROIS identifizierten Gesichts-ROIs. 
MF_CAPTURE_METADATA_EXPOSURE_TIME UINT64 Vorschau, Immer noch Dieses Attribut enthält die Belichtungszeit in 100 Nanosekunden.
MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION Blob Vorschau, Immer noch Dieses Attribut enthält ein Ev-Kompensationsschrittflag und einen EV-Kompensationswert in Einheiten des Schritts, der beim Erfassen des Fotos auf den Treiber angewendet wurde.
MF_CAPTURE_METADATA_ISO_SPEED UINT32 Vorschau, Immer noch Dieses Attribut enthält den ISO-Geschwindigkeitswert, der als ganze Zahl angewendet wird.
MF_CAPTURE_METADATA_LENS_POSITION UINT32 Vorschau, Immer noch Dieses Attribut enthält die logische Objektivposition, wenn der Fokus auf das aufgenommene Foto angewendet wurde. Dieser Wert verfügt nicht über eine bestimmte Einheit.
MF_CAPTURE_METADATA_SCENE_MODE UINT64 Noch Dieses Attribut enthält den Szenenmodus, der als UINT64KSCAMERA_EXTENDEDPROP_SCENEMODE_XXX-Flag angewendet wird.
MF_CAPTURE_METADATA_FLASH UINT32 (Boolesch) Vorschau, Immer noch Dieses Attribut enthält einen booleschen Wert, der den Flashzustand enthält. Der Wert 1 gibt an, dass der Blitz eingeschaltet ist, und der Wert 0 gibt an, dass der Blitz für das aufgenommene Foto ausgeschaltet ist.
MF_CAPTURE_METADATA_FLASH_POWER UINT32 Noch [Optional] Dieses Attribut enthält die Blitzleistung, die als Prozentwert zwischen 0 und 100 angewendet wird.
MF_CAPTURE_METADATA_WHITEBALANCE UINT32 (Kelvin) Vorschau, Immer noch Dieses Attribut enthält den Weißabgleich, der als Wert in Kelvin angewendet wird.
MF_CAPTURE_METADATA_ZOOMFACTOR UINT32 (Q16) Noch Dieses Attribut enthält den angewendeten Zoomwert und ist derselbe Wert, der von KSPROPERTY_CAMERACONTROL_EXTENDED_ZOOM in einem GET-Aufruf abgefragt werden kann. Der Wert muss in Q16 sein.
MF_CAPTURE_METADATA_EXIF Blob Noch [Optional] Dieses Attribut enthält EXIF-Metadaten, wie im Abschnitt Blobdefinition angegeben.
MF_CAPTURE_METADATA_REQUESTED_FRAME_SETTING_ID UINT32 Noch [Optional] Dieses Attribut enthält die Frame-ID für den entsprechenden Frame in der variablen Fotosequenz. Dieses Attribut ist nur für eine variable Fotosequenzaufnahme festgelegt.
MF_CAPTURE_METADATA_ISO_GAINS Blob Vorschau Dieses Attribut enthält die analogen und digitalen Gewinne, die beim Erfassen des Vorschaurahmens auf den Senor angewendet wurden. Dies ist einheitslos.
MF_CAPTURE_METADATA_WHITEBALANCE_GAINS Blob Vorschau Dieses Attribut enthält die Weißabgleichsgewinne, die beim Erfassen des Vorschaurahmens vom Sensor und\oder dem ISP auf R, G, B angewendet wurden. Dies ist ein einheitsloses.
MF_CAPTURE_METADATA_HISTOGRAM Blob Vorschau Dieses Attribut enthält das Histogramm, wenn ein Vorschaurahmen erfasst wird.
MF_CAPTURE_METADATA_FRAME_ILLUMINATION UINT64 IR-Pin für Hello Dieses Attribut für IR-Kameras gibt an, ob die Frames eine aktive IR-Beleuchtung verwenden und in Verbindung mit FACEAUTH_MODE_ALTERNATIVE_FRAME_ILLUMINATION verwendet werden sollen.
Beliebige benutzerdefinierte GUID Beliebiger Variantentyp Dieses Attribut enthält die benutzerdefinierten Daten, die der benutzerdefinierten GUID zugeordnet sind.

MF_CAPTURE_METADATA_FOCUSSTATE

MF_CAPTURE_METADATA_FOCUSSTATE-Attribut enthält den aktuellen Fokuszustand, der einen der folgenden Werte annehmen kann.

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 -Attribut enthält die gemessene Sensorausleserate in Hertz, wenn ein Vorschauframe erfasst wird, das aus einem Zählerwert im oberen 32 Bit und einem Nennerwert im unteren 32 Bit besteht.

MF_CAPTURE_METADATA_FACEROIS

MF_CAPTURE_METADATA_FACEROIS-Attribut enthält die vom Treiber erkannten Gesichtsrechteckinformationen. Standardmäßig sollte driver\MFT0 die Gesichtsinformationen im Vorschaustream bereitstellen. Wenn der Treiber die Funktion in anderen Streams ankündigen, muss driver\MFT die Gesichtsinformationen für die entsprechenden Datenströme bereitstellen, wenn die Anwendung die Gesichtserkennung für diese Datenströme aktiviert. Wenn die Videostabilisierung auf dem Treiber aktiviert ist, sollten die Gesichtsinformationen nach der Videostabilisierung bereitgestellt werden. Die folgenden Datenstrukturen beschreiben das Blobformat für MF_CAPTURE_METADATA_FACEROIS. Das dominierende Gesicht muss das erste FaceRectInfo im Blob sein.

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;

Beachten Sie, dass die Strukturen FaceRectinfoBlobHeader und FaceRectInfo nur das Blobformat für das attribut MF_CAPTURE_METADATA_FACEROIS beschreiben. Die Metadatenelementstruktur für Gesichts-ROIs (KSCAMERA_METADATA_ITEMHEADER + Metadatennutzlast von ROIs) ist bis zum Treiber festgelegt und muss 8 Byte ausgerichtet sein.

Wenn ein Stream mit aktivierter Gesichtserkennung konfiguriert ist und die betreffende Szene während der Erfassung keine Gesichter enthält, muss der Treiber jedem Beispiel ein "Dummy"-MF_CAPTURE_METADATA_FACEROIS-Attribut anfügen, dem keine Gesichtsinformationen zugeordnet sind. (Für ein ROI-Attribut "dummy" ist das Feld Count der FaceRectInfoBlobHeader-Struktur auf null festgelegt.)

MF_CAPTURE_METADATA_FACEROITIMESTAMPS

MF_CAPTURE_METADATA_FACEROITIMESTAMPS-Attribut enthält die Zeitstempelinformationen für die in MF_CAPTURE_METADATA_FACEROIS identifizierten Gesichts-ROIs. Für das Gerät, das den Zeitstempel für Gesichtserkennungs-ROIs nicht bereitstellen kann, sollte dieses Attribut weggelassen werden.

Die folgende Datenstruktur beschreibt das Blobformat für 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;

Für das Feld Flags definieren wir die folgenden Bitflags, um anzugeben, welcher Zeitstempel gültig ist. MFT0 muss Flags auf MF_METADATATIEMSTAMPS_DEVICE und die entsprechende QPC-Zeit für Device festlegen, wenn der Treiber die Zeitstempelmetadaten für die Gesichtserkennungs-ROIs bereitstellt.

#define MF_METADATATIMESTAMPS_DEVICE 0x00000001

#define MF_METADATATIMESTAMPS_PRESENTATION 0x00000002

Beachten Sie, dass die MetadataTimeStamps-Struktur nur das Blobformat für das attribut MF_CAPTURE_METADATA_FACEROITIMESTAMPS beschreibt. Die Metadatenelementstruktur für den Zeitstempel (KSCAMERA_METADATA_ITEMHEADER + Zeitstempelmetadatennutzlast) entspricht dem Treiber und muss 8 Byte ausgerichtet sein.

MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS

MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS-Attribut enthält den Blink- und Gesichtsausdruckszustand für die in MF_CAPTURE_METADATA_FACEROIS identifizierten Gesichts-ROIs.  Für das Gerät, das die Erkennung von Blinken und/oder Gesichtsausdrücken nicht unterstützt, sollte dieses Attribut weggelassen werden.

Die folgende Datenstruktur beschreibt das Blobformat für MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS.

Beachten Sie, dass Die Strukturen FaceCharacterizationBlobHeader und FaceCharacterization nur das Blobformat für das attribut MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS beschreiben. Die Metadatenelementstruktur für die Gesichtscharakterisierungen (KSCAMERA_METADATA_ITEMHEADER Metadatennutzlast + Gesichtscharakterisierungen) ist bis zum Treiber festgelegt und muss 8 Byte ausgerichtet sein.

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;

Im Folgenden wird der mögliche Gesichtsausdruck definiert, der erkannt werden kann.  

#define MF_METADATAFACIALEXPRESSION_SMILE             0x00000001

Wenn MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS-Attribut angezeigt wird, müssen die Zahl und die Reihenfolge der FaceCharacterization-Einträge in seinem Blob mit der Zahl und der Reihenfolge der FaceRectInfo-Einträge im Blob von MF_CAPTURE_METADATA_FACEROIS übereinstimmen.   Jeder Face Character-Eintrag stellt den Blink- und/oder Gesichtsausdruckszustand des Gesichts im entsprechenden FaceRectInfo-Eintrag am selben Index dar.

Die folgende Abbildung veranschaulicht die Layouts eines Gesichtscharakterisierungsblobs und eines Gesichts-ROIs-Blobs von vier Gesichtern, wobei das erste weder blinkt noch lächelnd, das zweite das linke Auge blinkt, das dritte lächelnd und das vierte sowohl blinkt (beide Augen) als auch lächelnd.

MF_CAPTURE_METADATA_EXPOSURE_TIME

MF_CAPTURE_METADATA_EXPOSURE_TIME-Attribut enthält die Belichtungszeit, die auf den Sensor angewendet wird, wenn vorschau und\oder fotoframe aufgenommen wurde. Dies ist ein UINT64 und liegt in 100ns.

MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION

MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION-Attribut enthält ein Ev-Kompensationsschrittflag und einen EV-Kompensationswert in Einheiten des Schritts, der auf den Sensor angewendet wurde, als Vorschau und/oder Fotorahmen erfasst wurden.

Die folgende Datenstruktur beschreibt das Blobformat für 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;

Beachten Sie, dass die CapturedMetadataExposureCompensation-Struktur nur das Blobformat für das attribut MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION beschreibt. Die Metadatenelementstruktur für die EV-Kompensation (KSCAMERA_METADATA_ITEMHEADER + EV-Kompensationsmetadatennutzlast) ist bis zum Treiber festgelegt und muss 8 Byte ausgerichtet sein.

MF_CAPTURE_METADATA_ISO_SPEED

MF_CAPTURE_METADATA_ISO_SPEED Attribute enthalten den ISO-Geschwindigkeitswert, der auf den Sensor angewendet wird, wenn vorschau und/oder fotoframe erfasst wurde. Dies ist einheitslos.

MF_CAPTURE_METADATA_ISO_GAINS

MF_CAPTURE_METADATA_ISO_GAINS-Attribut enthält die analogen und digitalen Gewinne, die beim Erfassen des Vorschauframes auf den Senor angewendet wurden. Dies ist einheitslos.

Die folgende Datenstruktur beschreibt das Blobformat für MF_CAPTURE_METADATA_ISO_GAINS.

typedef struct tagCapturedMetadataISOGains
{
    FLOAT AnalogGain;
    FLOAT DigitalGain;
} CapturedMetadataISOGains;

Beachten Sie, dass die CapturedMetadataISOGains-Struktur nur das Blobformat für das attribut MF_CAPTURE_METADATA_ISO_GAINS beschreibt. Die Metadatenelementstruktur für ISO-Gewinne (KSCAMERA_METADATA_ITEMHEADER + ISO gewinnt Metadatennutzlast) ist bis zum Treiber festgelegt und muss 8 Byte ausgerichtet sein.

MF_CAPTURE_METADATA_LENS_POSITION

MF_CAPTURE_METADATA_LENS_POSITION-Attribut enthält die logische Objektivposition, wenn vorschau und/oder fotoframe aufgenommen wurde, die einheitslos ist. Dies ist der gleiche Wert, der von KSPROPERTY_CAMERACONTROL_EXTENDED_FOCUS in einem GET-Aufruf abgefragt werden kann.

MF_CAPTURE_METADATA_SCENE_MODE

MF_CAPTURE_METADATA_SCENE_MODE-Attribut enthält den Szenenmodus, der auf das aufgenommene Foto angewendet wird, bei dem es sich um ein 64-Bit-KSCAMERA_EXTENDEDPROP_SCENEMODE_XXX-Flag handelt.

MF_CAPTURE_METADATA_FLASH

MF_CAPTURE_METADATA_FLASH Attribut enthält einen booleschen Wert, wenn vorschau und\oder fotoframe aufgenommen wurde, wobei 1 die Bedeutung "Flash on" und 0 "flash off" bedeutet.

MF_CAPTURE_METADATA_FLASH_POWER

MF_CAPTURE_METADATA_FLASH_POWER-Attribut enthält die Blitzleistung, die auf das aufgenommene Foto angewendet wird. Dabei handelt es sich um einen Wert im Bereich von [0, 100]. Dieses Attribut sollte weggelassen werden, wenn der Treiber keine einstellbare Leistung für Blitzlicht unterstützt.

MF_CAPTURE_METADATA_WHITEBALANCE

MF_CAPTURE_METADATA_WHITEBALANCE -Attribut enthält den Weißabgleich, der auf den Sensor angewendet wird, wenn vorschau und\oder fotoframe erfasst wurde. Dies ist ein Wert in Kevin.

MF_CAPTURE_METADATA_WHITEBALANCE_GAINS

MF_CAPTURE_METADATA_WHITEBALANCE_GAINS -Attribut enthält die Weißabgleichsgewinne, die beim Erfassen des Vorschauframes vom Sensor und dem ISP auf R, G, B angewendet wurden. Dies ist ein einheitsloses.

Die folgende Datenstruktur beschreibt das Blobformat für MF_CAPTURE_METADATA_WHITEBALANCE_GAINS.

typedef struct tagCapturedMetadataWhiteBalanceGains
{
    FLOAT R;
    FLOAT G;
    FLOAT B;
} CapturedMetadataWhiteBalanceGains;

Beachten Sie, dass die CapturedMetadataWhiteBalanceGains-Struktur nur das Blobformat für das attribut MF_CAPTURE_METADATA_WHITEBALANCE_GAINS beschreibt. Die Metadatenelementstruktur für Weißabgleichsgewinne (KSCAMERA_METADATA_ITEMHEADER + Weißabgleich erhält Metadatennutzlast) entspricht dem Treiber und muss 8 Byte ausgerichtet sein.

MF_CAPTURE_METADATA_ZOOMFACTOR

MF_CAPTURE_METADATA_ZOOMFACTOR -Attribut enthält den Zoomwert, der auf das aufgenommene Foto angewendet wird. Dabei handelt es sich um denselben Wert, der von KSPROPERTY_CAMERACONTROL_EXTENDED_ZOOM in einem GET-Aufruf abgefragt werden kann. Dies sollte im 16. Quartal sein.

MF_CAPTURE_METADATA_EXIF

MF_CAPTURE_METADATA_EXIF enthält EXIF-Metadaten, wie in Abschnitt 3.1 (Blobdefinition) angegeben. MFT0 extrahiert die unformatierten EXIF-Metadaten, die als benutzerdefiniertes Metadatenelement (MetadataId >= MetadataId_Custom_Start) identifiziert werden, aus dem vom Treiber bereitgestellten MF_CAPTURE_METADATA_FRAME_RAWSTREAM Puffer. MFT0 konvertiert dann die Rohdaten in ein MF_CAPTURE_METADATA_EXIF-Attribut.

Blobdefinition

Das Blob muss aus einem vollständigen TIFF-Header, 0. IFD und EXIF-Sub-IFD bestehen, wie in den Spezifikationen EXIF 2.3 und TIFF 6.0 definiert. Das Blob darf keine Daten vor dem TIFF-Header enthalten. Das Blob darf nach dem Ende des 0. IFD keine Daten enthalten. Beispielsweise ist es ungültig, eine IFD mit Miniaturansichtsdaten einzuschließen.

Das folgende Diagramm, das aus der TIFF-Spezifikation kopiert wurde, veranschaulicht das erwartete Speicherlayout:

EXIF-Blobdefinition.

Im Folgenden sind Anforderungen aufgeführt, die mit den EXIF- und TIFF-Spezifikationen konsistent sind, aber als Hervorhebung bezeichnet werden:

  • Die Bytereihenfolge muss entweder little endian ("II") oder big endian ("MM") sein.
  • Zeiger ("Byteoffsets" in der TIFF-Spezifikation) müssen relativ zum Anfang des TIFF-Headers sein.

Im Folgenden sind Anforderungen aufgeführt, die restriktiver sind als die EXIF- und TIFF-Spezifikationen:

  • Der Offset zur nächsten IFD muss 0 sein, d. h., es werden keine zusätzlichen IFDs angezeigt.
  • Der TIFF-Header und der 0. IFD müssen zusammenhängend sein, d. h. der Offset zum 0. IFD, wie in Bytes 4-7 gespeichert, muss 0x8 sein.

Obligatorische EXIF-Metadaten

Im folgenden Abschnitt werden EXIF-Metadaten beschrieben, die in MF_CAPTURE_METADATA_EXIF enthalten sein müssen.

Name EXIF-Tag BESCHREIBUNG
Ausrichtung 274 Die Bildausrichtung wird in Zeilen und Spalten angezeigt. Eine vollständige Beschreibung finden Sie unter EXIF-Spezifikation.
Make 271 Der Hersteller des Aufzeichnungsgeräts
Modell 272 Der Modellname oder die Modellnummer des Geräts
XResolution 282 Die Anzahl von Pixeln pro Auflösungseinheit in BildWidth-Richtung
YResolution 283 Die Anzahl der Pixel pro Auflösungseinheit in ImageLength-Richtung
ResolutionUnit 296 Die Einheit zum Messen von XResolution und YResolution
Software 305 Name und Version der Firmware
Farbraum 40961 Die Farbrauminformationen, in der Regel sRGB
SubsSecTimeOriginal 37521 Zeichnet Sekundenbruchteile auf, die dem DateTimeOriginal-Tag zugeordnet sind
SubSecTimeDigitized 37522 Zeichnet Sekundenbruchteile auf, die dem DateTimeDigitized-Tag zugeordnet sind
ExposureTime 33434 Belichtungszeit in Sekunden (genau auf 0,001 s)
FNumber 33437 Die für die Erfassung verwendete F-Zahl
ISOSpeedRatings 34855 ISO-Geschwindigkeitswert gemäß ISO 12322, Sättigungsbasiert
DateTimeOriginal 36867 Datum und Uhrzeit der Generierung der ursprünglichen Bilddaten
DateTimeDIgitized 36868 Das Datum und die Uhrzeit, zu dem das Bild als digitale Daten gespeichert wurde
VerschlusszeitWert 37377 Verschlusszeit in APEX-Einheiten (Additive System of Photographic Exposure)
Aperture-Wert 37378 Die Objektivblende in APEX-Einheiten
ExposureBias-Wert 37380 Exposure Bias-Wert in APEX-Einheiten
MeteringMode 37383 AE-Verbrauchsmodus (siehe EXIF-Spezifikation)
Lichtquelle 37384 Die Art der Lichtquelle (siehe EXIF-Spezifikation)
Blinken 37385 Status des Flash während der Bildaufnahme
FocalLength 37386 Die tatsächliche Brennweite des Objektivs
ExposureMode 41986 Belichtungsmodus während der Aufnahme
WhiteBalance 41987 Weißabgleichsmodus während der Aufzeichnung
DigitalZoomRatio 41988 Digitales Zoomverhältnis während der Bildaufnahme
FocalLengthIn35mmFilm 41989 35 mm Äquivalentbrennweite
SceneCaptureType 41990 Art der Szene, die gedreht wurde

Optionale/OEM-definierte Metadaten

Der Kameratreiber kann alle zusätzlichen Metadaten in Form von benutzerdefinierten EXIF-Tags enthalten, solange er der EXIF-Spezifikation entspricht und entweder im 0. TIFF-IFD oder im EXIF-Sub-IFD gespeichert wird.

MakerNote-Anforderungen und Erwartungen an binäres Layout

Der Kameratreiber kann herstellereigene Informationen in Form einer Makernote (Tag 37500) enthalten. Die Makernotiz darf keine Zeiger auf Daten enthalten, die sich außerhalb der Makernotiz selbst befinden, einschließlich des Dateistarts und der Position des TIFF-Headers. Darüber hinaus dürfen keine Annahmen über die Endianität der Datei getroffen werden, die im TIFF-Header angegeben ist.

Im Allgemeinen übernimmt das Betriebssystem keine Garantie dafür, dass das binäre Layout des Metadatenblobs beibehalten wird, wenn es in den JPEG-Ausgabedatenstrom geschrieben wird. Sie garantiert nur, dass die Metadaten in Übereinstimmung mit der EXIF-Spezifikation geschrieben werden. Beispielsweise wird nur garantiert, dass die Makernotiz als zusammenhängender Block kopiert und durch das richtige IFD-Tag, den richtigen Typ und den richtigen Offset identifiziert wird.

Verwendung mit WIC JPEG-Encoder

Die beabsichtigte Verwendung von MF_CAPTURE_METADATA_EXIF erfolgt mit dem vom Betriebssystem bereitgestellten WIC-JPEG-Encoder (Windows Imaging Component). Windows-Kamera Pipeline verwendet den Windows WIC JPEG-Encoder, um EXIF-Metadaten aus MF_CAPTURE_METADATA_EXIF zu nutzen und diese mit Bildpixeldaten in eine JPEG-Datei zu muxen, wenn die Anwendung ein JPEG nicht direkt von der Kamera erfasst, sondern die Pipeline für die Aufnahme in NV12/YUY2 konfiguriert und vom Betriebssystem codiert wird.

MF_CAPTURE_METADATA_REQUESTED_FRAME_SETTING_ID

MF_CAPTURE_METADATA_REQUESTED_FRAME_SETTING_ID -Attribut enthält die Frame-ID für den entsprechenden Frame in der variablen Fotosequenz. Dieses Attribut ist nur für eine variable Fotosequenzaufnahme festgelegt.

MF_CAPTURE_METADATA_FRAME_ILLUMINATION

MF_CAPTURE_METADATA_FRAME_ILLUMINATION Attribut für IR-Kameras gibt an, ob die Frames eine aktive IR-Beleuchtung verwenden und in Verbindung mit FACEAUTH_MODE_ALTERNATIVE_FRAME_ILLUMINATION verwendet werden sollen. Sie wird nur für IR-Beispiele verwendet und sollte nicht auf RGB-Frames vorhanden sein, wenn die Kamera sowohl IR- als auch Farbbeispiele unterstützt.

Der Wert sollte auf 0xXXXXXXXXXXXXX1 festgelegt werden, wenn der Frame erfasst wurde, wenn die aktive Beleuchtung aktiviert war, und auf 0xXXXXXXXXXXXXXXX0 festgelegt werden, wenn beim Erfassen des Frames keine Beleuchtung vorhanden war.

MF_CAPTURE_METADATA_HISTOGRAM

MF_CAPTURE_METADATA_HISTOGRAM-Attribut enthält das Histogramm, wenn ein Vorschaurahmen erfasst wird.

Die folgenden Datenstrukturen beschreiben das Blobformat für 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;

Für das Feld ChannelMasks definieren wir die folgenden Bitmasken, um die verfügbaren Kanäle im Histogramm anzugeben.

#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

Hinweise:

  1. Jedes Blob kann mehrere Histogramme enthalten, die aus verschiedenen Regionen oder unterschiedlichen Farbräumen desselben Frames gesammelt wurden.
  2. Jedes Histogramm im Blob wird durch einen eigenen HistogramHeader identifiziert.
  3. Jedem Histogramm ist eine eigene Bereichs- und Sensorausgabegröße zugeordnet. Bei Vollbildhistogrammen entspricht der Bereich der in HistogramGrid angegebenen Sensorausgabegröße.
  4. Histogrammdaten für alle verfügbaren Kanäle werden unter einem Histogramm gruppiert. Histogrammdaten für jeden Kanal werden durch ein HistogramDataHeader direkt über den Daten identifiziert. ChannelMasks gibt an, wie viele und welche Kanäle die Histogrammdaten aufweisen. Dabei handelt es sich um das bitweise OR der unterstützten MF_HISTOGRAM_CHANNEL_XXX Bitmasken, wie oben definiert. ChannelMask gibt an, für welchen Kanal die Daten verwendet werden, der durch eine der oben definierten MF_HISTOGRAM_CHANNEL_XXX Bitmasken identifiziert wird.

Die folgende Abbildung veranschaulicht das Layout eines Histogrammblobs mit einem vollständigen Y-Histogramm.

Histogrammdaten sind ein Array von ULONG, wobei jeder Eintrag die Anzahl der Pixel darstellt, die unter eine Reihe von Tonwerten fallen, die nach dem Bin kategorisiert sind. Die Daten im Array sollten von bin 0 bis bin N-1 beginnen, wobei N die Anzahl der Behälter im Histogramm darstellt, d. h. HistogrammBlobHeader.Bins.

Die folgende Abbildung veranschaulicht das Layout des Histogrammdatenabschnitts.

Die folgende Abbildung veranschaulicht das Layout eines Histogrammblobs mit einem Vollbild-YRGB-Histogramm mit vier Kanälen.

Die folgende Abbildung veranschaulicht das Layout eines Histogrammblobs mit einem reinen Y-Histogramm gefolgt von einem RGB-Histogramm mit drei Kanälen.

Für Schwellenwert muss mindestens ein Vollbildhistogramm mit Y-Kanal bereitgestellt werden, das das erste Histogramm im Histogrammblob sein sollte, wenn KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM unterstützt wird.

Beachten Sie, dass histogramBlobHeader, HistogramHeader, HistogramDataHeader und Histogrammdaten nur das Blobformat für das attribut MF_CAPTURE_METADATA_HISTOGRAM beschreiben. Die Metadatenelementstruktur für das Histogramm (KSCAMERA_METADATA_ITEMHEADER + alle Histogrammmetadatennutzlast) ist bis zum Treiber festgelegt und muss 8 Byte ausgerichtet sein.

Metadatensteuerelement für Histogramme

KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM ist eine Eigenschafts-ID, die verwendet wird, um die vom Treiber erzeugten Histogrammmetadaten zu steuern. Dies ist ein Pin-Level-Steuerelement nur für die Vorschau-Pin und ist wie folgt definiert:

typedef enum {
    …
#if (NTDDI_VERSION >= NTDDI_WIN8)
    KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM
#endif
} KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY;

Für KSCAMERA_EXTENDEDPROP_HEADER definieren wir die folgenden Bitflags, um die Histogrammmetadaten im Treiber zu steuern. Der Standardwert ist OFF.

#define KSCAMERA_EXTENDEDPROP_HISTOGRAM_OFF 0x0000000000000000
#define KSCAMERA_EXTENDEDPROP_HISTOGRAM_ON  0x0000000000000001

Dieses Steuerelement muss vor dem KSPROPERTY_CAMERACONTROL_EXTENDED_METADATA-Steuerelements verwendet werden, um sicherzustellen, dass der Metadatenpuffer der richtigen Größe zugeordnet ist.

Wenn die Einstellung auf HISTOGRAM_OFF festgelegt ist, darf der Treiber die Histogrammmetadaten nicht auf dem Vorschau-Pin übermitteln. Der Treiber sollte die Größe der Histogrammmetadaten nicht in seine Metadatenpuffergröße einbeziehen.

Wenn die Einstellung auf HISTOGRAM_ON festgelegt ist, muss der Treiber die Histogrammmetadaten auf dem Vorschau-Pin übermitteln. Der Treiber muss die Größe der Histogrammmetadaten in seine Metadatenpuffergröße einbeziehen.

Wenn der Treiber nicht in der Lage ist, Histogrammmetadaten zu erstellen, sollte der Treiber dieses Steuerelement nicht implementieren. Wenn der Treiber dieses Steuerelement unterstützt, muss er auch KSPROPERTY_CAMERACONTROL_EXTENDED_METADATA-Steuerelement unterstützen.

Der SET-Aufruf dieses Steuerelements hat keine Auswirkung, wenn der Vorschaunadel einen höheren Zustand aufweist als der KSSTATE_STOP Zustand. Der Treiber muss den empfangenen SET-Aufruf ablehnen, wenn sich die Vorschau nicht im Stoppzustand befindet, und gibt STATUS_INVALID_DEVICE_STATE zurück. Bei einem GET-Aufruf sollte der Treiber die aktuellen Einstellungen im Feld Flags zurückgeben.

Dies ist ein synchrones Steuerelement. Für dieses Steuerelement sind keine Funktionen definiert.

KSCAMERA_EXTENDEDPROP_HEADER

Version

Muss 1 sein.

PinId

Muss die Pin-ID sein, die der Vorschau-Pin zugeordnet ist.

Size

Muss gleich sizeof(KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(KSCAMERA_EXTENDEDPROP_VALUE) sein.

Ergebnis

Gibt die Fehlerergebnisse des letzten SET-Vorgangs an. Wenn kein SET-Vorgang stattgefunden hat, muss dieser 0 sein.

Funktion

Muss den Wert 0 (null) haben.

Flags

Dies ist ein Lese-/Schreibfeld. Dies kann eines der KSCAMERA_EXTENDEDPROP_HISTOGRAM_XXX oben definierten Flags sein.

KSCAMERA_EXTENDEDPROP_VALUE

Nicht verwendet