diff options
Diffstat (limited to 'AVStream/avscamera/common')
| -rw-r--r-- | AVStream/avscamera/common/CustomProperties.h | 59 | ||||
| -rw-r--r-- | AVStream/avscamera/common/Macros.h | 48 | ||||
| -rw-r--r-- | AVStream/avscamera/common/MetadataInternal.h | 267 |
3 files changed, 374 insertions, 0 deletions
diff --git a/AVStream/avscamera/common/CustomProperties.h b/AVStream/avscamera/common/CustomProperties.h new file mode 100644 index 00000000..f9a9db09 --- /dev/null +++ b/AVStream/avscamera/common/CustomProperties.h @@ -0,0 +1,59 @@ +/************************************************************************** + + A/V Stream Camera Sample + + Copyright (c) 2014, Microsoft Corporation. + + File: + + CustomProperties.h + + Abstract: + + This file contains a definition used to demonstrate a custom property. + + History: + + created 10/10/2014 + +**************************************************************************/ +#pragma once + + +#define STATIC_PROPSETID_VIDCAP_CUSTOM_CAMERACONTROL_MFT0 \ + 0x452da6d7, 0xa42b, 0x4906, 0xa6, 0xc3, 0x81, 0x62, 0xe7, 0x2d, 0x38, 0x3d +DEFINE_GUIDSTRUCT("452da6d7-a42b-4906-a6c3-8162e72d383d", PROPSETID_VIDCAP_CUSTOM_CAMERACONTROL_MFT0); +#define PROPSETID_VIDCAP_CUSTOM_CAMERACONTROL_MFT0 DEFINE_GUIDNAMED(PROPSETID_VIDCAP_CUSTOM_CAMERACONTROL_MFT0) + +typedef enum +{ + KSPROPERTY_CUSTOM_CAMERACONTROL_MFT0_VIDEOSTABILIZATION +} KSPROPERTY_CUSTOM_CAMERACONTROL_MFT0; + +typedef struct +{ + BOOL VideoStabilizationEnabled; +} KSPROPERTY_CUSTOM_CAMERACONTROL_MFT0_VIDEOSTABILIZATION_S, *PKSPROPERTY_CUSTOM_CAMERACONTROL_MFT0_VIDEOSTABILIZATION_S; + +// {05DC8943-B9FB-4201-808F-6E91451C4760} +#define STATIC_PROPSETID_VIDCAP_CUSTOMCONTROL \ + 0x5dc8943, 0xb9fb, 0x4201, 0x80, 0x8f, 0x6e, 0x91, 0x45, 0x1c, 0x47, 0x60 +DEFINE_GUIDSTRUCT("05DC8943-B9FB-4201-808F-6E91451C4760", PROPSETID_VIDCAP_CUSTOMCONTROL ); +#define PROPSETID_VIDCAP_CUSTOMCONTROL DEFINE_GUIDNAMED(PROPSETID_VIDCAP_CUSTOMCONTROL ) + +enum +{ + KSPROPERTY_CUSTOMCONTROL_DUMMY +}; + +// {570615F9-D924-42AC-B967-BE7B0E489965} +#define STATIC_PROPSETID_SENSOR_CUSTOMCONTROL \ + 0x570615f9, 0xd924, 0x42ac, 0xb9, 0x67, 0xbe, 0x7b, 0xe, 0x48, 0x99, 0x65 +DEFINE_GUIDSTRUCT("570615F9-D924-42AC-B967-BE7B0E489965", PROPSETID_SENSOR_CUSTOMCONTROL); +#define PROPSETID_SENSOR_CUSTOMCONTROL DEFINE_GUIDNAMED(PROPSETID_SENSOR_CUSTOMCONTROL ) + +enum +{ + KSPROPERTY_SENSOR_PIN_CUSTOM_CONTROL_ULONG=0 +}; + diff --git a/AVStream/avscamera/common/Macros.h b/AVStream/avscamera/common/Macros.h new file mode 100644 index 00000000..b87aa436 --- /dev/null +++ b/AVStream/avscamera/common/Macros.h @@ -0,0 +1,48 @@ +/************************************************************************** + + A/V Stream Camera Sample + + Copyright (c) 2014, Microsoft Corporation. + + File: + + macros.h + + Abstract: + + This file contains common error checking macros for the MFT0 + + History: + + created 10/10/2014 + +**************************************************************************/ + +#pragma once + +#define IFFAILED_BREAK(exp) \ +{ \ + if ( FAILED(hr= (exp)) ) \ + { \ + break; \ + } \ +} + +#define IFFALSE_BREAK_HR(exp, retval) \ +{ \ + if ( !(exp)) \ + { \ + hr = retval; \ + break; \ + } \ +} + + +#define IFNULL_BREAK_HR(exp, retval) \ +{ \ + if ( (exp) == NULL ) \ + { \ + hr = retval; \ + break; \ + } \ +}
\ No newline at end of file diff --git a/AVStream/avscamera/common/MetadataInternal.h b/AVStream/avscamera/common/MetadataInternal.h new file mode 100644 index 00000000..41f49469 --- /dev/null +++ b/AVStream/avscamera/common/MetadataInternal.h @@ -0,0 +1,267 @@ +/************************************************************************** + + A/V Stream Camera Sample + + Copyright (c) 2013, Microsoft Corporation. + + File: + + MetadataInternal.h + + Abstract: + + Internal structures for private metadata communication between the + driver and its MFT0. + + History: + + created 4/29/2013 + +**************************************************************************/ + + + +enum MetadataId_Custom +{ + MetadataId_Custom_ImageAggregation = MetadataId_Custom_Start, + MetadataId_Custom_FaceDetection, + MetadataId_Custom_PreviewAggregation, + MetadataId_Custom_Histogram +}; + +typedef struct +{ + UINT32 Set; + UINT32 Value; +} METADATA_UINT32, METADATA_LONG; + +typedef struct +{ + UINT32 Set; + UINT16 Value; + UINT16 Reserved; +} METADATA_UINT16, METADATA_SHORT; + +typedef struct +{ + UINT32 Length; // Use a length of 0 for not Set + CHAR String[32]; +} METADATA_SHORTSTRING; + +typedef struct +{ + UINT32 Set; + UINT32 Reserved; + UINT32 Numerator; + UINT32 Denominator; +} METADATA_RATIONAL; + +typedef struct +{ + UINT32 Set; + UINT32 Reserved; + INT64 Value; +} METADATA_INT64; + +typedef struct +{ + UINT32 Set; + UINT32 Reserved; + UINT64 Value; +} METADATA_UINT64; + +typedef struct +{ + UINT32 Set; + UINT32 Reserved; + INT32 Numerator; + INT32 Denominator; +} METADATA_SRATIONAL; + +typedef struct +{ + UINT32 Set; + INT32 Value; + UINT64 Flags; +} METADATA_EVCOMP; + +#ifndef _WDM_INCLUDED_ +// +// Time conversion routines +// +typedef short CSHORT; + +typedef struct _TIME_FIELDS +{ + CSHORT Year; // range [1601...] + CSHORT Month; // range [1..12] + CSHORT Day; // range [1..31] + CSHORT Hour; // range [0..23] + CSHORT Minute; // range [0..59] + CSHORT Second; // range [0..59] + CSHORT Milliseconds;// range [0..999] + CSHORT Weekday; // range [0..6] == [Sunday..Saturday] +} TIME_FIELDS; +typedef TIME_FIELDS *PTIME_FIELDS; + +#endif //TIME_FIELDS + +typedef struct +{ + UINT32 Set; + UINT32 Reserved; + TIME_FIELDS Time; +} METADATA_TIMEFIELDS; + +typedef struct _METADATA_PREVIEWAGGREGATION +{ + // Mandatory fields + UINT32 FocusState; + UINT32 Reserved; + METADATA_INT64 ExposureTime; + METADATA_EVCOMP EVCompensation; + METADATA_UINT32 ISOSpeed; + METADATA_UINT32 LensPosition; + METADATA_UINT32 FlashOn; + METADATA_UINT32 WhiteBalanceMode; + METADATA_SRATIONAL IsoAnalogGain; // MF_CAPTURE_METADATA_ISO_GAINS + METADATA_SRATIONAL IsoDigitalGain; // MF_CAPTURE_METADATA_ISO_GAINS + METADATA_UINT64 SensorFrameRate; // MF_CAPTURE_METADATA_SENSORFRAMERATE + METADATA_SRATIONAL WhiteBalanceGain_R; // MF_CAPTURE_METADATA_WHITEBALANCE_GAINS + METADATA_SRATIONAL WhiteBalanceGain_G; // MF_CAPTURE_METADATA_WHITEBALANCE_GAINS + METADATA_SRATIONAL WhiteBalanceGain_B; // MF_CAPTURE_METADATA_WHITEBALANCE_GAINS + +} METADATA_PREVIEWAGGREGATION, *PMETADATA_PREVIEWAGGREGATION; + +typedef struct _METADATA_IMAGEAGGREGATION +{ + // Mandatory fields + METADATA_UINT32 FrameId; + METADATA_INT64 ExposureTime; + METADATA_UINT32 ISOSpeed; + METADATA_UINT32 LensPosition; + METADATA_UINT64 SceneMode; + METADATA_UINT32 FlashOn; + METADATA_UINT32 FlashPower; + METADATA_UINT32 WhiteBalanceMode; + METADATA_UINT32 ZoomFactor; + METADATA_UINT32 FocusLocked; + METADATA_UINT32 WhiteBalanceLocked; + METADATA_UINT32 ExposureLocked; + + // Required Exif data + METADATA_SHORT Orientation; + METADATA_TIMEFIELDS LocalTime; + METADATA_SHORTSTRING Make; + METADATA_SHORTSTRING Model; + METADATA_SHORTSTRING Software; + METADATA_SHORT ColorSpace; + METADATA_RATIONAL Gamma; + METADATA_SHORTSTRING MakerNote; + METADATA_RATIONAL FNumber; + METADATA_SHORT ExposureProgram; + METADATA_SRATIONAL ShutterSpeedValue; + METADATA_RATIONAL Aperture; + METADATA_SRATIONAL Brightness; + METADATA_SRATIONAL ExposureBias; + METADATA_RATIONAL SubjectDistance; + METADATA_SHORT MeteringMode; + METADATA_SHORT LightSource; + METADATA_SHORT Flash; + METADATA_RATIONAL FocalLength; + METADATA_RATIONAL FocalPlaneXResolution; + METADATA_RATIONAL FocalPlaneYResolution; + METADATA_RATIONAL ExposureIndex; + METADATA_SHORT ExposureMode; + METADATA_SHORT WhiteBalance; + METADATA_RATIONAL DigitalZoomRatio; + METADATA_SHORT FocalLengthIn35mmFilm; + METADATA_SHORT SceneCaptureType; + METADATA_RATIONAL GainControl; + METADATA_SHORT Contrast; + METADATA_SHORT Saturation; + METADATA_SHORT Sharpness; + METADATA_SHORT SubjectDistanceRange; + + // Additional required metadata + METADATA_EVCOMP EVCompensation; + + // Optional + METADATA_LONG FocusState; + +} METADATA_IMAGEAGGREGATION, *PMETADATA_IMAGEAGGREGATION; + +typedef enum +{ + Metadata_Orientation_TopBottomLeftRight = 1, + Metadata_Orientation_TopBottomRightLeft = 2, + Metadata_Orientation_BottomTopLeftRight = 3, + Metadata_Orientation_BottomTopRightLeft = 4, + Metadata_Orientation_LeftRightTopBottom = 5, // 90 degree rotation + Metadata_Orientation_RightLeftTopBottom = 6, + Metadata_Orientation_LeftRightBottomTop = 7, + Metadata_Orientation_RightLeftBottomTop = 8 + +} METADATA_ORIENTATION_ENUM; + +typedef struct +{ + KSCAMERA_METADATA_ITEMHEADER Header; + METADATA_PREVIEWAGGREGATION Data; +} CAMERA_METADATA_PREVIEWAGGREGATION, *PCAMERA_METADATA_PREVIEWAGGREGATION; + +typedef struct +{ + KSCAMERA_METADATA_ITEMHEADER Header; + METADATA_IMAGEAGGREGATION Data; +} CAMERA_METADATA_IMAGEAGGREGATION, *PCAMERA_METADATA_IMAGEAGGREGATION; + +typedef struct +{ + KSCAMERA_METADATA_ITEMHEADER Header; + UINT32 eFocusState; + UINT32 Reserved; +} CAMERA_METADATA_FOCUS_STATE, *PCAMERA_METADATA_FOCUS_STATE; + +typedef enum _METADATA_EXPRESSION +{ + EXPRESSION_NONE=0, + EXPRESSION_SMILE=1 +} METADATA_EXPRESSION; + +typedef struct _METADATA_FACEDATA +{ + RECT Region; // A rectangle describing the face. + ULONG confidenceLevel; // [0, 100]. + 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 Reserved; // Pad for 64-bit alignment. + BOOL FacialExpression; // Is the face smiling? + ULONG FacialExpressionScore; // [0, 100]. 0 indicates no such facial expression as identified. 100 indicates definite such facial expression as defined +} METADATA_FACEDATA, *PMETADATA_FACEDATA; + +typedef struct _CAMERA_METADATA_FACEHEADER +{ + KSCAMERA_METADATA_ITEMHEADER Header; + UINT32 Count; // Number of detected faces. + UINT64 Flags; // If KSCAMERA_EXTENDEDPROP_FACEDETECTION_BLINK or _SMILE bitflags are set, characterization metadata is valid. + UINT64 Timestamp; // Time in 100ns of actual face detection. +} CAMERA_METADATA_FACEHEADER, *PCAMERA_METADATA_FACEHEADER; + +typedef struct _METADATA_HISTOGRAM +{ + ULONG Width; + ULONG Height; + ULONG ChannelMask; + ULONG FourCC; + ULONG P0Data[256]; // first primary (R / Y ) + ULONG P1Data[256]; // second (G / Cr) + ULONG P2Data[256]; // third (B / Cb) +} METADATA_HISTOGRAM, *PMETADATA_HISTOGRAM; + +typedef struct _CAMERA_METADATA_HISTOGRAM +{ + KSCAMERA_METADATA_ITEMHEADER Header; + METADATA_HISTOGRAM Data; +} CAMERA_METADATA_HISTOGRAM, *PCAMERA_METADATA_HISTOGRAM; + |
