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:
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:
- Jedes Blob kann mehrere Histogramme enthalten, die aus verschiedenen Regionen oder unterschiedlichen Farbräumen desselben Frames gesammelt wurden.
- Jedes Histogramm im Blob wird durch einen eigenen HistogramHeader identifiziert.
- Jedem Histogramm ist eine eigene Bereichs- und Sensorausgabegröße zugeordnet. Bei Vollbildhistogrammen entspricht der Bereich der in HistogramGrid angegebenen Sensorausgabegröße.
- 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