인터페이스 및 상호 작용(카메라 프로필 V2)
기능에 따라 아래의 각 사항을 고려하고 관련이 있는지 설명합니다.
공용 API 추가 또는 변경됨(Win32)
SENSORPROFILEID
SENSORPROFILEID 구조체는 각 프로필에 대한 고유 ID를 나타냅니다. OEMCameraProfileVersion에 선언된 프로필 유형 KSCAMERAPROFILE_*( IHV 및 OEM에 대한 자세한 디자인 참조) 및 프로필 인덱스로 구성됩니다.
typedef struct
{
GUID Type;
UINT32 Index;
UINT32 Unused;
} SENSORPROFILEID;
IMFSensorProfileCollection
IMFSensorProfileCollection은 프로필 컬렉션을 나타냅니다. IHV/OEM은 MFCreateSensorProfileCollection API를 사용하여 새 프로필 컬렉션 인터페이스를 가져와야 합니다.
[
object,
uuid(C95EA55B-0187-48BE-9353-8D2507662351),
helpstring("IMFSensorProfileCollection Interface"),
local
]
interface IMFSensorProfileCollection : IUnknown
{
DWORD GetProfileCount(
);
HRESULT GetProfile(
[in, annotation("_In_")] DWORD Index,
[out, annotation("_COM_Outptr_")] IMFSensorProfile** ppProfile
);
HRESULT AddProfile(
[in, annotation("_In_")] IMFSensorProfile* pProfile
);
HRESULT FindProfile(
[in, annotation("_In_")] SENSORPROFILEID* ProfileId,
[out, annotation("_COM_Outptr_")] IMFSensorProfile** ppProfile
);
void RemoveProfileByIndex(
[in, annotation("_In_")] DWORD Index
);
void RemoveProfile(
[in, annotation("_In_")] SENSORPROFILEID* ProfileId
);
};
STDAPI
MFCreateSensorProfileCollection(
_COM_Outptr_ IMFSensorProfileCollection** ppSensorProfile
);
IMFSensorProfile
IMFSensorProfile 개체는 IMFAttributes 인터페이스도 구현합니다. 특성 저장소는 애플리케이션 개발자를 위해 읽기 전용이지만 DMFT/센서 그룹 변환 구성 요소에 대해 읽기/쓰기가 가능합니다.
[
object,
uuid(22F765D1-8DAB-4107-846D-56BAF72215E7),
helpstring("IMFSensorProfile Interface"),
local
]
interface IMFSensorProfile : IUnknown
{
HRESULT GetProfileId(
[out, annotation("_Out_")] SENSORPROFILEID* pId
);
HRESULT AddProfileFilter(
[in, annotation("_In_")] UINT32 StreamId,
[in, annotation("_In_z_")] LPCWSTR wzFilterSetString
);
HRESULT IsMediaTypeSupported(
[in, annotation("_In_")] UINT32 StreamId,
[in, annotation("_In_")] IMFMediaType* pMediaType,
[out, annotation("_Out_")] BOOL* pfSupported
);
HRESULT AddBlockedControl(
[in, annotation("_In_z_")] LPCWSTR wzBlockedControl
);
};
STDAPI
MFCreateSensorProfile(
_In_ REFGUID ProfileType,
_In_ UINT32 ProfileIndex,
_In_opt_z_ LPCWSTR Constraints,
_COM_Outptr_ IMFSensorProfile** ppProfile
);
공용 API 추가 또는 변경됨(WinRT)
[contract(Windows.Foundation.UniversalApiContract, 1)]
typedef enum KnownVideoProfile
{
VideoRecording = 0,
HighQualityPhoto,
BalancedVideoAndPhoto,
VideoConferencing,
PhotoSequence
PhotoSequence,
[contract(Windows.Foundation.UniversalApiContract, 6)]
HighFrameRate,
[contract(Windows.Foundation.UniversalApiContract, 6)]
VariablePhotoSequence
[contract(Windows.Foundation.UniversalApiContract, 6)]
HDRWithWCGVideo,
[contract(Windows.Foundation.UniversalApiContract, 6)]
HDRWithWCGPhoto,
[contract(Windows.Foundation.UniversalApiContract, 6)]
VideoHDR8
} KnownVideoProfile;
[uuid(8012AFEF-B691-49FF-83F2-C1E76EAAEA1B)]
[exclusiveto(MediaCaptureVideoProfileMediaDescription)]
[contract(Windows.Foundation.UniversalApiContract, 1)]
interface IMediaCaptureVideoProfileMediaDescription : IInspectable
{
[propget] HRESULT Width([out, retval] UINT32* value);
[propget] HRESULT Height([out, retval] UINT32* value);
[propget] HRESULT FrameRate([out, retval] double* value);
[deprecated("IsVariablePhotoSequenceSupported might not be available in future versions of Windows. Starting with Windows RS4", deprecate, Windows.Foundation.UniversalApiContract, 6)]
[propget] HRESULT IsVariablePhotoSequenceSupported([out, retval] boolean* value);
[deprecated("IsHdrVideoSupported might not be available in future versions of Windows. Starting with Windows RS4", deprecate, Windows.Foundation.UniversalApiContract, 6)]
[propget] HRESULT IsHdrVideoSupported([out, retval] boolean* value);
}
[uuid(C6A6EF13-322D-413A-B85A-68A88E02F4E9)]
[contract(Windows.Foundation.UniversalApiContract, 6)]
[exclusiveto(MediaCaptureVideoProfileMediaDescription)]
interface IMediaCaptureVideoProfileMediaDescription2 : IInspectable
{
[propget] HRESULT Subtype([out, retval] HSTRING* value);
[propget] HRESULT Properties([out, retval] Windows.Foundation.Collections.IMapView<GUID, IInspectable*>** value);
}
[uuid(97DDC95F-94CE-468F-9316-FC5BC2638F6B)]
[contract(Windows.Foundation.UniversalApiContract, 6)]
[exclusiveto(MediaCaptureVideoProfile)]
interface IMediaCaptureVideoProfile2 : IInspectable
{
[propget] HRESULT FrameSourceInfos([out, retval] IVectorView<Windows.Media.Capture.Frames.MediaFrameSourceInfo*>** value);
[propget] HRESULT Properties([out, retval] Windows.Foundation.Collections.IMapView<GUID, IInspectable*>** value);
}
[uuid(195A7855-6457-42C6-A769-19B65BD32E6E)]
[contract(Windows.Foundation.UniversalApiContract, 6)]
[exclusiveto(MediaFrameSourceInfo)]
interface IMediaFrameSourceInfo2 : IInspectable
{
[propget] HRESULT ProfileId(
[out, retval] HSTRING* value);
[propget] HRESULT VideoProfileMediaDescription(
[out, retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Capture.MediaCaptureVideoProfileMediaDescription*>** value);
}
RUNTIMECLASS_CONTRACT_WIN10_RS1
runtimeclass MediaFrameSourceInfo
{
[default] interface IMediaFrameSourceInfo;
[contract(Windows.Foundation.UniversalApiContract, 6)]
interface IMediaFrameSourceInfo2;
}