통계 메타데이터 특성 캡처

아래 표에는 미리 보기, 비디오 및 캡처를 위해 MFT0의 MFSampleExtension_CaptureMetaData 메타데이터 특성 모음에 사용할 수 있는 캡처 통계 IMFAttributes가 요약되어 있습니다.

에 대해 나열된 캡처 통계는 달리 표시되지 않는 한 캡처된 모든 사진에 대해 필수입니다. 미리 보기 및 비디오에 나열된 캡처 통계는 최상의 노력으로 제공되어야 하며, 드라이버는 가용성 및 성능 고려 사항에 따라 모든 프레임에서 모든 캡처 통계를 제공하거나 제공하지 않을 수 있습니다.

속성 형식 Pin Description
MF_CAPTURE_METADATA_FOCUSSTATE Uint32 미리 보기 이 특성에는 다음 값 중 하나를 사용할 수 있는 현재 포커스 상태가 포함됩니다.
MF_CAPTURE_METADATA_SENSORFRAMERATE UINT64 미리 보기 이 특성은 미리 보기 프레임이 캡처될 때 헤르츠에서 측정된 센서 판독 속도를 포함하며, 이는 상위 32비트에서의 숫자 값과 하위 32비트에서 분모 값으로 구성됩니다.
MF_CAPTURE_METADATA_FACEROIS Blob 미리 보기, 비디오 이 특성에는 드라이버에서 감지한 얼굴 사각형 정보가 포함됩니다.
MF_CAPTURE_METADATA_FACEROITIMESTAMPS Blob 미리 보기, 비디오 이 특성은 MF_CAPTURE_METADATA_FACEROIS 식별된 얼굴 ROI에 대한 타임스탬프를 포함합니다.
MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS Blob 미리 보기, 비디오 이 특성은 MF_CAPTURE_METADATA_FACEROIS 식별된 얼굴 ROI에 대한 깜박임 및\또는 얼굴 식 상태를 포함합니다. 
MF_CAPTURE_METADATA_EXPOSURE_TIME UINT64 미리 보기, 여전히 이 특성에는 100나노초에 적용된 노출 시간이 포함됩니다.
MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION Blob 미리 보기, 여전히 이 특성에는 사진을 캡처할 때 드라이버에 적용된 단계 단위의 EV 보정 단계 플래그와 EV 보정 값이 포함됩니다.
MF_CAPTURE_METADATA_ISO_SPEED Uint32 미리 보기, 여전히 이 특성에는 정수로 적용된 ISO 속도 값이 포함됩니다.
MF_CAPTURE_METADATA_LENS_POSITION Uint32 미리 보기, 여전히 이 특성은 포커스가 캡처된 사진에 적용될 때 논리적 렌즈 위치를 포함합니다. 이 값에는 특정 단위가 없습니다.
MF_CAPTURE_METADATA_SCENE_MODE UINT64 아직도 이 특성에는 UINT64KSCAMERA_EXTENDEDPROP_SCENEMODE_XXX 플래그로 적용된 장면 모드가 포함됩니다.
MF_CAPTURE_METADATA_FLASH UINT32(부울) 미리 보기, 여전히 이 특성에는 플래시 상태를 포함하는 부울 값이 포함되어 있습니다. 값 1은 플래시가 켜져 있음을 지정하고 값 0은 캡처된 사진에 대해 플래시가 꺼지게 지정합니다.
MF_CAPTURE_METADATA_FLASH_POWER Uint32 아직도 [선택 사항] 이 특성에는 0에서 100 사이의 백분율 값으로 적용된 플래시 전원이 포함됩니다.
MF_CAPTURE_METADATA_WHITEBALANCE UINT32(켈빈) 미리 보기, 여전히 이 특성에는 Kelvin의 값으로 적용된 흰색 균형이 포함됩니다.
MF_CAPTURE_METADATA_ZOOMFACTOR UINT32(Q16) 아직도 이 특성은 적용된 확대/축소 값을 포함하며 GET 호출의 KSPROPERTY_CAMERACONTROL_EXTENDED_ZOOM 쿼리할 수 있는 값과 동일합니다. 값은 Q16에 있어야 합니다.
MF_CAPTURE_METADATA_EXIF Blob 아직도 [선택 사항] 이 특성에는 Blob 정의 섹션에 지정된 EXIF 메타데이터가 포함됩니다.
MF_CAPTURE_METADATA_REQUESTED_FRAME_SETTING_ID Uint32 아직도 [선택 사항] 이 특성에는 변수 사진 시퀀스의 해당 프레임에 대한 프레임 ID가 포함됩니다. 이 특성은 가변 사진 시퀀스 캡처에 대해서만 설정됩니다.
MF_CAPTURE_METADATA_ISO_GAINS Blob 미리 보기 이 특성에는 미리 보기 프레임이 캡처될 때 감지자에 적용되는 아날로그 및 디지털 이득이 포함됩니다. 이것은 단위가 없습니다.
MF_CAPTURE_METADATA_WHITEBALANCE_GAINS Blob 미리 보기 이 특성에는 미리 보기 프레임이 캡처되었을 때 센서 및\또는 ISP에 의해 R, G, B에 적용된 화이트 밸런스 이득이 포함됩니다. 이것은 유니리스입니다.
MF_CAPTURE_METADATA_HISTOGRAM Blob 미리 보기 이 특성에는 apreview 프레임이 캡처될 때 히스토그램이 포함됩니다.
MF_CAPTURE_METADATA_FRAME_ILLUMINATION UINT64 Hello에 사용되는 IR 핀 IR 카메라의 이 특성은 프레임이 활성 IR 조명을 사용하고 FACEAUTH_MODE_ALTERNATIVE_FRAME_ILLUMINATION 함께 사용해야 하는지 여부를 지정합니다.
모든 사용자 지정 GUID 모든 변형 형식 이 특성에는 사용자 지정 GUID와 연결된 사용자 지정 데이터가 포함됩니다.

MF_CAPTURE_METADATA_FOCUSSTATE

MF_CAPTURE_METADATA_FOCUSSTATE 특성에는 다음 값 중 하나를 사용할 수 있는 현재 포커스 상태가 포함됩니다.

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 특성은 미리 보기 프레임이 캡처될 때 헤르츠에서 측정된 센서 판독 속도를 포함하며, 이는 상위 32비트 내의 숫자 값과 하위 32비트에서 분모 값으로 구성됩니다.

MF_CAPTURE_METADATA_FACEROIS

MF_CAPTURE_METADATA_FACEROIS 특성에는 드라이버에서 감지한 얼굴 사각형 정보가 포함됩니다. 기본적으로 driver\MFT0은 미리 보기 스트림에 대한 얼굴 정보를 제공해야 합니다. 드라이버가 다른 스트림에 기능을 보급하는 경우 애플리케이션이 해당 스트림에서 얼굴 감지를 사용하도록 설정하는 경우 driver\MFT는 해당 스트림에 대한 얼굴 정보를 제공해야 합니다. 드라이버에서 비디오 손떨림 보정을 사용하도록 설정하면 비디오 손떨림 보정 후 얼굴 정보를 제공해야 합니다. 아래 데이터 구조에서는 MF_CAPTURE_METADATA_FACEROIS 대한 Blob 형식을 설명합니다. 지배적 얼굴은 Blob의 첫 번째 FaceRectInfo여야 합니다.

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;

FaceRectinfoBlobHeader 및 FaceRectInfo 구조체는 MF_CAPTURE_METADATA_FACEROIS 특성에 대한 Blob 형식만 설명합니다. 얼굴 ROI에 대한 메타데이터 항목 구조(KSCAMERA_METADATA_ITEMHEADER + face ROIs 메타데이터 페이로드)는 드라이버에 달려 있으며 8 바이트 정렬되어야 합니다.

의도적으로 스트림이 얼굴 감지를 사용하도록 구성되어 있고 해당 장면에 캡처 중에 얼굴이 없는 경우 드라이버는 여전히 "더미" MF_CAPTURE_METADATA_FACEROIS 특성을 연결된 얼굴 정보가 없는 각 샘플에 연결해야 합니다. ("더미" 얼굴 ROI 특성에는 FaceRectInfoBlobHeader 구조체의 Count 필드가 0으로 설정되어 있습니다.)

MF_CAPTURE_METADATA_FACEROITIMESTAMPS

MF_CAPTURE_METADATA_FACEROITIMESTAMPS 특성에는 MF_CAPTURE_METADATA_FACEROIS 식별된 얼굴 ROI에 대한 타임스탬프 정보가 포함됩니다. 얼굴 ROI에 대한 타임스탬프를 제공할 수 없는 디바이스의 경우 이 특성을 생략해야 합니다.

아래 데이터 구조에서는 MF_CAPTURE_METADATA_FACEROITIMESTAMPS 대한 Blob 형식을 설명합니다.

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;

Flags 필드의 경우 유효한 타임스탬프를 나타내기 위해 다음 비트 플래그를 정의합니다. 드라이버가 얼굴 ROI에 대한 타임스탬프 메타데이터를 제공하는 경우 MFT0은 플래그를 MF_METADATATIEMSTAMPS_DEVICE 및 디바이스에 적절한 QPC 시간으로 설정해야 합니다.

#define MF_METADATATIMESTAMPS_DEVICE 0x00000001

#define MF_METADATATIMESTAMPS_PRESENTATION 0x00000002

MetadataTimeStamps 구조체는 MF_CAPTURE_METADATA_FACEROITIMESTAMPS 특성에 대한 Blob 형식만 설명합니다. 타임스탬프(KSCAMERA_METADATA_ITEMHEADER + 타임스탬프 메타데이터 페이로드)에 대한 메타데이터 항목 구조는 드라이버에 달려 있으며 8 바이트 정렬되어야 합니다.

MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS

MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS 특성에는 MF_CAPTURE_METADATA_FACEROIS 식별된 얼굴 ROI에 대한 깜박임 및 얼굴 식 상태가 포함됩니다.  깜박임 및 얼굴 식 감지를 지원하지 않는 디바이스의 경우 이 특성을 생략해야 합니다.

아래 데이터 구조는 MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS 대한 Blob 형식을 설명합니다.

FaceCharacterizationBlobHeader 및 FaceCharacterization 구조체는 MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS 특성에 대한 Blob 형식만 설명합니다. 얼굴 특성화에 대한 메타데이터 항목 구조(KSCAMERA_METADATA_ITEMHEADER + 얼굴 특성 메타데이터 페이로드)는 드라이버에 달려 있으며 8 바이트 정렬되어야 합니다.

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;

다음은 감지할 수 있는 가능한 얼굴 식을 정의합니다.  

#define MF_METADATAFACIALEXPRESSION_SMILE             0x00000001

MF_CAPTURE_METADATA_FACEROICHARACTERIZATIONS 특성이 표시되면 해당 Blob에 있는 FaceCharacterization 항목의 수와 순서가 MF_CAPTURE_METADATA_FACEROIS Blob의 FaceRectInfo 항목 수와 순서와 일치해야 합니다.   각 FaceCharacterization 항목은 동일한 인덱스에 있는 해당 FaceRectInfo 항목에 있는 얼굴의 깜박임 및 얼굴 식 상태를 나타냅니다.

아래 그림은 얼굴 특성화 Blob의 레이아웃과 깜박이거나 미소 짓지 않는 첫 번째 얼굴, 왼쪽 눈을 깜박이는 두 번째 얼굴, 웃는 세 번째 얼굴, 깜박임(두 눈 모두)과 웃는 네 번째 얼굴의 얼굴 ROIS Blob을 보여 줍니다.

MF_CAPTURE_METADATA_EXPOSURE_TIME

MF_CAPTURE_METADATA_EXPOSURE_TIME 특성에는 UINT64이고 100ns에 있는 미리 보기 및 사진 프레임이 캡처될 때 센서에 적용된 노출 시간이 포함됩니다.

MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION

MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION 특성에는 미리 보기 및 사진 프레임을 캡처할 때 센서에 적용된 단계 단위의 EV 보정 단계 플래그와 EV 보정 값이 포함됩니다.

아래 데이터 구조는 MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION Blob 형식에 대해 설명합니다.

typedef struct tagCapturedMetadataExposureCompensation
{
    UINT64 Flags;   // KSCAMERA_EXTENDEDPROP_EVCOMP_XXX step flag
    INT32 Value;    // EV Compensation value in units of the step
} CapturedMetadataExposureCompensation;

CapturedMetadataExposureCompensation 구조체는 MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION 특성에 대한 Blob 형식만 설명합니다. EV 보정을 위한 메타데이터 항목 구조(KSCAMERA_METADATA_ITEMHEADER + EV 보정 메타데이터 페이로드)는 드라이버에 달려 있으며 8바이트 정렬되어야 합니다.

MF_CAPTURE_METADATA_ISO_SPEED

MF_CAPTURE_METADATA_ISO_SPEED 특성에는 미리 보기 및 사진 프레임이 캡처될 때 센서에 적용된 ISO 속도 값이 포함됩니다. 이것은 단위가 없습니다.

MF_CAPTURE_METADATA_ISO_GAINS

MF_CAPTURE_METADATA_ISO_GAINS 특성에는 미리 보기 프레임이 캡처될 때 감지자에 적용된 아날로그 및 디지털 이득이 포함됩니다. 이것은 단위가 없습니다.

아래 데이터 구조에서는 MF_CAPTURE_METADATA_ISO_GAINS 대한 Blob 형식을 설명합니다.

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

CapturedMetadataISOGains 구조체는 MF_CAPTURE_METADATA_ISO_GAINS 특성에 대한 Blob 형식만 설명합니다. ISO 이득에 대한 메타데이터 항목 구조(KSCAMERA_METADATA_ITEMHEADER + ISO가 메타데이터 페이로드를 얻습니다)는 드라이버에 달려 있으며 8바이트 정렬되어야 합니다.

MF_CAPTURE_METADATA_LENS_POSITION

MF_CAPTURE_METADATA_LENS_POSITION 특성은 미리 보기 및 사진 프레임을 캡처할 때 논리 렌즈 위치를 포함하며 이는 단위가 없습니다. GET 호출의 KSPROPERTY_CAMERACONTROL_EXTENDED_FOCUS 쿼리할 수 있는 값과 동일합니다.

MF_CAPTURE_METADATA_SCENE_MODE

MF_CAPTURE_METADATA_SCENE_MODE 특성에는 64비트 KSCAMERA_EXTENDEDPROP_SCENEMODE_XXX 플래그인 캡처된 사진에 적용된 장면 모드가 포함됩니다.

MF_CAPTURE_METADATA_FLASH

MF_CAPTURE_METADATA_FLASH 특성은 미리 보기 및 사진 프레임을 캡처할 때 부울 값을 포함하며, 1은 플래시를 의미하고 0은 플래시를 의미합니다.

MF_CAPTURE_METADATA_FLASH_POWER

MF_CAPTURE_METADATA_FLASH_POWER 특성에는 캡처된 사진에 적용된 플래시 전원이 포함되며 이는 [0, 100] 범위의 값입니다. 드라이버가 플래시에 대해 조정 가능한 전원을 지원하지 않는 경우 이 특성을 생략해야 합니다.

MF_CAPTURE_METADATA_WHITEBALANCE

MF_CAPTURE_METADATA_WHITEBALANCE 특성에는 미리 보기 및 사진 프레임이 캡처될 때 센서에 적용된 흰색 균형이 포함됩니다. 이는 Kevin의 값입니다.

MF_CAPTURE_METADATA_WHITEBALANCE_GAINS

MF_CAPTURE_METADATA_WHITEBALANCE_GAINS 특성에는 미리 보기 프레임이 캡처되었을 때 센서 및\또는 ISP에 의해 R, G, B에 적용된 화이트 밸런스 이득이 포함됩니다. 이것은 유니리스입니다.

아래 데이터 구조에서는 MF_CAPTURE_METADATA_WHITEBALANCE_GAINS 대한 Blob 형식을 설명합니다.

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

CapturedMetadataWhiteBalanceGains 구조체는 MF_CAPTURE_METADATA_WHITEBALANCE_GAINS 특성에 대한 Blob 형식만 설명합니다. 화이트 밸런스 이익을 위한 메타데이터 항목 구조(KSCAMERA_METADATA_ITEMHEADER + 화이트 밸런스 게인 메타데이터 페이로드)는 드라이버에 달려 있으며 8 바이트 정렬되어야 합니다.

MF_CAPTURE_METADATA_ZOOMFACTOR

MF_CAPTURE_METADATA_ZOOMFACTOR 특성에는 GET 호출에서 KSPROPERTY_CAMERACONTROL_EXTENDED_ZOOM 쿼리할 수 있는 것과 동일한 값인 캡처된 사진에 적용된 확대/축소 값이 포함됩니다. 이는 16분기여야 합니다.

MF_CAPTURE_METADATA_EXIF

MF_CAPTURE_METADATA_EXIF 섹션 3.1(Blob 정의)에 지정된 EXIF 메타데이터를 포함합니다. MFT0은 드라이버에서 제공하는 MF_CAPTURE_METADATA_FRAME_RAWSTREAM 버퍼에서 사용자 지정 메타데이터 항목(MetadataId >= MetadataId_Custom_Start)으로 식별되는 원시 EXIF 메타데이터를 추출해야 합니다. 그런 다음 MFT0은 원시 데이터를 MF_CAPTURE_METADATA_EXIF 특성으로 변환합니다.

Blob 정의

Blob은 EXIF 2.3 및 TIFF 6.0 사양에 정의된 전체 TIFF 헤더, 0번째 IFD 및 EXIF 하위 IFD로 구성됩니다. Blob은 TIFF 헤더 앞의 데이터를 포함하지 않습니다. Blob은 0번째 IFD 종료 이후의 데이터를 포함하지 않습니다. 예를 들어 미리 보기 데이터가 포함된 IFD를 포함하는 것은 유효하지 않습니다.

TIFF 사양에서 복사된 다음 다이어그램은 예상되는 메모리 레이아웃을 보여 줍니다.

EXIF Blob 정의입니다.

다음은 EXIF 및 TIFF 사양과 일치하지만 강조하기 위해 호출되는 요구 사항입니다.

  • 바이트 순서는 little endian("II") 또는 big endian("MM")이어야 합니다.
  • 포인터(TIFF 사양의 "바이트 오프셋")는 TIFF 헤더의 시작 부분을 기준으로 합니다.

다음은 EXIF 및 TIFF 사양보다 더 제한적인 요구 사항입니다.

  • 다음 IFD에 대한 오프셋은 0이어야 합니다. 즉, 추가 IFD를 가리키지 않습니다.
  • TIFF 헤더와 0번째 IFD는 연속되어야 합니다. 즉, 바이트 4-7에 저장된 0번째 IFD에 대한 오프셋은 0x8 합니다.

필수 EXIF 메타데이터

아래 섹션에서는 MF_CAPTURE_METADATA_EXIF 포함해야 하는 EXIF 메타데이터에 대해 설명합니다.

속성 EXIF 태그 Description
방향 274 행 및 열 측면에서 볼 수 있는 이미지 방향입니다. 전체 설명은 EXIF 사양을 참조하세요.
계정을 271 녹음 장비 제조업체
모델 272 디바이스의 모델 이름 또는 모델 번호
XResolution 282 ImageWidth 방향의 해상도 단위당 픽셀 수
YResolution 283 ImageLength 방향의 해상도 단위당 픽셀 수
ResolutionUnit 296 XResolution 및 YResolution 측정 단위
소프트웨어 305 펌웨어의 이름 및 버전
ColorSpace 40961 색 공간 정보(일반적으로 sRGB)
SubsSecTimeOriginal 37521 DateTimeOriginal 태그와 연결된 초의 분수를 기록합니다.
SubSecTimeDigitized 37522 DateTimeDigitized 태그와 연결된 초의 분수를 기록합니다.
ExposureTime 33434 노출 시간(초)(0.001s로 정확)
FNumber 33437 캡처에 사용되는 F 번호
ISOSpeedRatings 34855 ISO 12322에 정의된 ISO 속도 값, 포화 기반
DateTimeOriginal 36867 원래 이미지 데이터가 생성된 날짜 및 시간
DateTimeDIgitized 36868 디지털 데이터로 저장된 이미지의 날짜 및 시간
셔터 SpeedValue 37377 APEX(사진 노출 추가 시스템) 단위의 셔터 속도
조리개 값 37378 APEX 단위의 렌즈 조리개
ExposureBias 값 37380 APEX 단위의 노출 바이어스 값
MeteringMode 37383 AE 계량 모드(EXIF 사양 참조)
LightSource 37384 광원 종류(EXIF 사양 참조)
깜박임 37385 이미지 캡처 중 플래시 상태
FocalLength 37386 렌즈의 실제 초점 길이
ExposureMode 41986 캡처 중 노출 모드
WhiteBalance 41987 캡처 중 화이트 밸런스 모드
DigitalZoomRatio 41988 이미지 캡처 중 디지털 확대/축소 비율
FocalLengthIn35mmFilm 41989 35mm 동등한 초점 길이
SceneCaptureType 41990 촬영된 장면의 유형

선택적/OEM 정의 메타데이터

카메라 드라이버는 EXIF 사양을 준수하고 0번째 TIFF IFD 또는 EXIF 하위 IFD에 저장되는 한 사용자 지정 EXIF 태그 형식의 추가 메타데이터를 포함할 수 있습니다.

MakerNote 요구 사항 및 이진 레이아웃 기대치

카메라 드라이버는 제조업체 노트(태그 37500)의 형태로 제조업체 소유 정보를 포함할 수 있습니다. 작성자 노트에는 파일의 시작 및 TIFF 헤더 위치를 포함하여 작성자 노트 자체 외부에 있는 데이터에 대한 포인터를 포함하거나 사용하지 않아야 합니다. 또한 TIFF 헤더에 지정된 대로 파일의 endianness에 대해 가정해서는 안 됩니다.

일반적으로 운영 체제는 메타데이터 Blob이 출력 JPEG 스트림에 기록될 때 메타데이터 Blob의 이진 레이아웃이 유지되도록 보장하지 않습니다. 메타데이터가 EXIF 사양에 따라 작성되도록 보장합니다. 예를 들어 작성자 노트가 연속 블록으로 복사되고 올바른 IFD 태그, 형식 및 오프셋으로 식별되도록 보장합니다.

WIC JPEG 인코더 사용량

의도한 MF_CAPTURE_METADATA_EXIF 사용은 OS 제공 WIC(Windows 이미징 구성 요소) JPEG 인코더와 함께 사용됩니다. Windows 카메라 파이프라인은 Windows WIC JPEG 인코더를 사용하여 MF_CAPTURE_METADATA_EXIF 가져온 EXIF 메타데이터를 사용하고 애플리케이션이 카메라에서 JPEG를 직접 캡처하지 않고 NV12/YUY2로 캡처하고 OS에 의해 인코딩되도록 구성된 파이프라인을 구성할 때 이미지 픽셀 데이터와 함께 이를 JPEG 파일로 mux합니다.

MF_CAPTURE_METADATA_REQUESTED_FRAME_SETTING_ID

MF_CAPTURE_METADATA_REQUESTED_FRAME_SETTING_ID 특성에는 변수 사진 시퀀스의 해당 프레임에 대한 프레임 ID가 포함됩니다. 이 특성은 가변 사진 시퀀스 캡처에 대해서만 설정됩니다.

MF_CAPTURE_METADATA_FRAME_ILLUMINATION

IR 카메라의 MF_CAPTURE_METADATA_FRAME_ILLUMINATION 특성은 프레임이 활성 IR 조명을 사용하고 FACEAUTH_MODE_ALTERNATIVE_FRAME_ILLUMINATION 함께 사용해야 하는지 여부를 지정합니다. IR 샘플에만 사용되며 카메라가 IR 및 색상 샘플을 모두 지원하는 경우 RGB 프레임에 있으면 안 됩니다.

활성 조명이 켜져 있을 때 프레임이 캡처되고 프레임을 캡처할 때 조명이 없는 경우 0xXXXXXXXXXXXXXXXXX0으로 설정된 경우 값을 0xXXXXXXXXXXXXXXXXX1로 설정해야 합니다.

MF_CAPTURE_METADATA_HISTOGRAM

MF_CAPTURE_METADATA_HISTOGRAM 특성은 apreview 프레임이 캡처될 때 히스토그램을 포함합니다.

아래 데이터 구조에서는 MF_CAPTURE_METADATA_HISTOGRAM 대한 Blob 형식을 설명합니다.

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;

ChannelMasks 필드의 경우 히스토그램에서 사용 가능한 채널을 나타내기 위해 다음 비트 마스크를 정의합니다.

#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

참고:

  1. 각 Blob은 서로 다른 영역 또는 동일한 프레임의 다른 색 공간에서 수집된 여러 히스토그램을 포함할 수 있습니다.
  2. Blob의 각 히스토그램은 자체 HistogramHeader로 식별됩니다.
  3. 각 히스토그램에는 자체 영역 및 센서 출력 크기가 연결되어 있습니다. 전체 프레임 히스토그램의 경우 영역은 HistogramGrid에 지정된 센서 출력 크기와 일치합니다.
  4. 사용 가능한 모든 채널에 대한 히스토그램 데이터는 하나의 히스토그램 아래에 그룹화됩니다. 각 채널의 히스토그램 데이터는 데이터 바로 위에 있는 HistogramDataHeader로 식별됩니다. ChannelMasks는 위에 정의된 대로 지원되는 MF_HISTOGRAM_CHANNEL_XXX 비트 마스크의 비트 OR인 히스토그램 데이터가 있는 채널의 수와 수를 나타냅니다. ChannelMask는 데이터가 어떤 채널인지를 나타내며, 위에서 정의한 MF_HISTOGRAM_CHANNEL_XXX 비트 마스크 중 하나로 식별됩니다.

아래 그림에서는 전체 프레임 Y 전용 히스토그램이 있는 히스토그램 Blob의 레이아웃을 보여 줍니다.

히스토그램 데이터는 각 항목이 bin으로 분류된 색조 값 집합 아래에 속하는 픽셀 수를 나타내는 ULONG의 배열입니다. 배열의 데이터는 bin 0에서 bin N-1로 시작해야 합니다. 여기서 N은 히스토그램의 bin 수(예: HistogramBlobHeader.Bins)입니다.

아래 그림에서는 히스토그램 데이터 섹션의 레이아웃을 보여 줍니다.

아래 그림에서는 4개의 채널이 있는 전체 프레임 YRGB 히스토그램이 있는 히스토그램 Blob의 레이아웃을 보여 줍니다.

아래 그림에서는 Y 전용 히스토그램과 세 개의 채널이 있는 RGB 히스토그램이 있는 히스토그램 Blob의 레이아웃을 보여 줍니다.

임계값의 경우 KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM 지원되는 경우 히스토그램 Blob의 첫 번째 히스토그램이어야 하는 Y 채널이 있는 전체 프레임 히스토그램을 최소한 제공해야 합니다.

HistogramBlobHeader, HistogramHeader, HistogramDataHeader 및 히스토그램 데이터는 MF_CAPTURE_METADATA_HISTOGRAM 특성에 대한 Blob 형식만 설명합니다. 히스토그램에 대한 메타데이터 항목 구조(KSCAMERA_METADATA_ITEMHEADER + 모든 히스토그램 메타데이터 페이로드)는 드라이버에 달려 있으며 8 바이트를 정렬해야 합니다.

히스토그램 메타데이터 컨트롤

KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM 드라이버에서 생성된 히스토그램 메타데이터를 제어하는 데 사용되는 속성 ID입니다. 미리 보기 핀 전용 핀 수준 컨트롤이며 다음과 같이 정의됩니다.

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

KSCAMERA_EXTENDEDPROP_HEADER 경우 드라이버에서 히스토그램 메타데이터를 제어하는 다음 비트 플래그를 정의합니다. 기본값은 OFF입니다.

#define KSCAMERA_EXTENDEDPROP_HISTOGRAM_OFF 0x0000000000000000
#define KSCAMERA_EXTENDEDPROP_HISTOGRAM_ON  0x0000000000000001

적절한 크기의 메타데이터 버퍼가 할당되도록 하려면 KSPROPERTY_CAMERACONTROL_EXTENDED_METADATA 컨트롤 앞에 이 컨트롤을 사용해야 합니다.

HISTOGRAM_OFF 설정하면 드라이버는 미리 보기 핀에 히스토그램 메타데이터를 제공하지 않습니다. 드라이버는 메타데이터 버퍼 크기 요구 사항에 히스토그램 메타데이터 크기를 포함해서는 안 됩니다.

HISTOGRAM_ON 설정하면 드라이버는 미리 보기 핀에 히스토그램 메타데이터를 전달해야 합니다. 드라이버는 메타데이터 버퍼 크기 요구 사항에 히스토그램 메타데이터 크기를 포함해야 합니다.

드라이버에 히스토그램 메타데이터를 생성할 수 있는 기능이 없는 경우 드라이버는 이 컨트롤을 구현하면 안 됩니다. 드라이버가 이 컨트롤을 지원하는 경우 KSPROPERTY_CAMERACONTROL_EXTENDED_METADATA 컨트롤도 지원해야 합니다.

미리 보기 핀이 KSSTATE_STOP 상태보다 높은 경우 이 컨트롤의 SET 호출은 영향을 주지 않습니다. 미리 보기가 중지 상태가 아니고 STATUS_INVALID_DEVICE_STATE 반환하는 경우 드라이버는 수신된 SET 호출을 거부해야 합니다. GET 호출에서 드라이버는 Flags 필드에 현재 설정을 반환해야 합니다.

동기 컨트롤입니다. 이 컨트롤에 대해 정의된 기능이 없습니다.

KSCAMERA_EXTENDEDPROP_HEADER

버전

1이어야 합니다.

PinId

미리 보기 핀과 연결된 핀 ID여야 합니다.

크기

sizeof(KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(KSCAMERA_EXTENDEDPROP_VALUE)이어야 합니다.

결과

마지막 SET 작업의 오류 결과를 나타냅니다. SET 작업이 수행되지 않은 경우 0이어야 합니다.

기능

0이어야 합니다.

플래그

읽기/쓰기 필드입니다. 위에서 정의한 플래그 중 KSCAMERA_EXTENDEDPROP_HISTOGRAM_XXX 하나일 수 있습니다.

KSCAMERA_EXTENDEDPROP_VALUE

사용되지 않음