Headers diff for evr.dll between 6.1.7601.19091-Windows_7.0 and 6.3.9600.17415-Windows_8.1 versions



 evr.h (6.1.7601.19091-Windows_7.0)   evr.h (6.3.9600.17415-Windows_8.1) 
/* this ALWAYS GENERATED file contains the definitions for the interfaces */ /* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 7.00.0555 */ /* File created by MIDL compiler version 8.00.0603 */
/* Compiler settings for evr.idl:
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING( ) */ /* @@MIDL_FILE_HEADING( ) */
#pragma warning( disable: 4049 ) /* more than 64k source lines */ #pragma warning( disable: 4049 ) /* more than 64k source lines */
/* verify that the <rpcndr.h> version is high enough to compile this file*/ /* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__ #ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500 #define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif #endif
/* verify that the <rpcsal.h> version is high enough to compile this file*/ /* verify that the <rpcsal.h> version is high enough to compile this file*/
skipping to change at line 51 skipping to change at line 43
#if defined(_MSC_VER) && (_MSC_VER >= 1020) #if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once #pragma once
#endif #endif
/* Forward Declarations */ /* Forward Declarations */
#ifndef __IMFVideoPositionMapper_FWD_DEFINED__ #ifndef __IMFVideoPositionMapper_FWD_DEFINED__
#define __IMFVideoPositionMapper_FWD_DEFINED__ #define __IMFVideoPositionMapper_FWD_DEFINED__
typedef interface IMFVideoPositionMapper IMFVideoPositionMapper; typedef interface IMFVideoPositionMapper IMFVideoPositionMapper;
#endif /* __IMFVideoPositionMapper_FWD_DEFINED__ */ #endif /* __IMFVideoPositionMapper_FWD_DEFINED__ */
#ifndef __IMFVideoDeviceID_FWD_DEFINED__ #ifndef __IMFVideoDeviceID_FWD_DEFINED__
#define __IMFVideoDeviceID_FWD_DEFINED__ #define __IMFVideoDeviceID_FWD_DEFINED__
typedef interface IMFVideoDeviceID IMFVideoDeviceID; typedef interface IMFVideoDeviceID IMFVideoDeviceID;
#endif /* __IMFVideoDeviceID_FWD_DEFINED__ */ #endif /* __IMFVideoDeviceID_FWD_DEFINED__ */
#ifndef __IMFVideoDisplayControl_FWD_DEFINED__ #ifndef __IMFVideoDisplayControl_FWD_DEFINED__
#define __IMFVideoDisplayControl_FWD_DEFINED__ #define __IMFVideoDisplayControl_FWD_DEFINED__
typedef interface IMFVideoDisplayControl IMFVideoDisplayControl; typedef interface IMFVideoDisplayControl IMFVideoDisplayControl;
#endif /* __IMFVideoDisplayControl_FWD_DEFINED__ */ #endif /* __IMFVideoDisplayControl_FWD_DEFINED__ */
#ifndef __IMFVideoPresenter_FWD_DEFINED__ #ifndef __IMFVideoPresenter_FWD_DEFINED__
#define __IMFVideoPresenter_FWD_DEFINED__ #define __IMFVideoPresenter_FWD_DEFINED__
typedef interface IMFVideoPresenter IMFVideoPresenter; typedef interface IMFVideoPresenter IMFVideoPresenter;
#endif /* __IMFVideoPresenter_FWD_DEFINED__ */ #endif /* __IMFVideoPresenter_FWD_DEFINED__ */
#ifndef __IMFDesiredSample_FWD_DEFINED__ #ifndef __IMFDesiredSample_FWD_DEFINED__
#define __IMFDesiredSample_FWD_DEFINED__ #define __IMFDesiredSample_FWD_DEFINED__
typedef interface IMFDesiredSample IMFDesiredSample; typedef interface IMFDesiredSample IMFDesiredSample;
#endif /* __IMFDesiredSample_FWD_DEFINED__ */
#ifndef __IMFTrackedSample_FWD_DEFINED__ #endif /* __IMFDesiredSample_FWD_DEFINED__ */
#define __IMFTrackedSample_FWD_DEFINED__
typedef interface IMFTrackedSample IMFTrackedSample;
#endif /* __IMFTrackedSample_FWD_DEFINED__ */
#ifndef __IMFVideoMixerControl_FWD_DEFINED__ #ifndef __IMFVideoMixerControl_FWD_DEFINED__
#define __IMFVideoMixerControl_FWD_DEFINED__ #define __IMFVideoMixerControl_FWD_DEFINED__
typedef interface IMFVideoMixerControl IMFVideoMixerControl; typedef interface IMFVideoMixerControl IMFVideoMixerControl;
#endif /* __IMFVideoMixerControl_FWD_DEFINED__ */ #endif /* __IMFVideoMixerControl_FWD_DEFINED__ */
#ifndef __IMFVideoMixerControl2_FWD_DEFINED__ #ifndef __IMFVideoMixerControl2_FWD_DEFINED__
#define __IMFVideoMixerControl2_FWD_DEFINED__ #define __IMFVideoMixerControl2_FWD_DEFINED__
typedef interface IMFVideoMixerControl2 IMFVideoMixerControl2; typedef interface IMFVideoMixerControl2 IMFVideoMixerControl2;
#endif /* __IMFVideoMixerControl2_FWD_DEFINED__ */ #endif /* __IMFVideoMixerControl2_FWD_DEFINED__ */
#ifndef __IMFVideoRenderer_FWD_DEFINED__ #ifndef __IMFVideoRenderer_FWD_DEFINED__
#define __IMFVideoRenderer_FWD_DEFINED__ #define __IMFVideoRenderer_FWD_DEFINED__
typedef interface IMFVideoRenderer IMFVideoRenderer; typedef interface IMFVideoRenderer IMFVideoRenderer;
#endif /* __IMFVideoRenderer_FWD_DEFINED__ */ #endif /* __IMFVideoRenderer_FWD_DEFINED__ */
#ifndef __IEVRFilterConfig_FWD_DEFINED__ #ifndef __IEVRFilterConfig_FWD_DEFINED__
#define __IEVRFilterConfig_FWD_DEFINED__ #define __IEVRFilterConfig_FWD_DEFINED__
typedef interface IEVRFilterConfig IEVRFilterConfig; typedef interface IEVRFilterConfig IEVRFilterConfig;
#endif /* __IEVRFilterConfig_FWD_DEFINED__ */ #endif /* __IEVRFilterConfig_FWD_DEFINED__ */
#ifndef __IEVRFilterConfigEx_FWD_DEFINED__ #ifndef __IEVRFilterConfigEx_FWD_DEFINED__
#define __IEVRFilterConfigEx_FWD_DEFINED__ #define __IEVRFilterConfigEx_FWD_DEFINED__
typedef interface IEVRFilterConfigEx IEVRFilterConfigEx; typedef interface IEVRFilterConfigEx IEVRFilterConfigEx;
#endif /* __IEVRFilterConfigEx_FWD_DEFINED__ */ #endif /* __IEVRFilterConfigEx_FWD_DEFINED__ */
#ifndef __IMFTopologyServiceLookup_FWD_DEFINED__ #ifndef __IMFTopologyServiceLookup_FWD_DEFINED__
#define __IMFTopologyServiceLookup_FWD_DEFINED__ #define __IMFTopologyServiceLookup_FWD_DEFINED__
typedef interface IMFTopologyServiceLookup IMFTopologyServiceLookup; typedef interface IMFTopologyServiceLookup IMFTopologyServiceLookup;
#endif /* __IMFTopologyServiceLookup_FWD_DEFINED__ */ #endif /* __IMFTopologyServiceLookup_FWD_DEFINED__ */
#ifndef __IMFTopologyServiceLookupClient_FWD_DEFINED__ #ifndef __IMFTopologyServiceLookupClient_FWD_DEFINED__
#define __IMFTopologyServiceLookupClient_FWD_DEFINED__ #define __IMFTopologyServiceLookupClient_FWD_DEFINED__
typedef interface IMFTopologyServiceLookupClient IMFTopologyServiceLookupClient; typedef interface IMFTopologyServiceLookupClient IMFTopologyServiceLookupClient;
#endif /* __IMFTopologyServiceLookupClient_FWD_DEFINED__ */ #endif /* __IMFTopologyServiceLookupClient_FWD_DEFINED__ */
#ifndef __IEVRTrustedVideoPlugin_FWD_DEFINED__ #ifndef __IEVRTrustedVideoPlugin_FWD_DEFINED__
#define __IEVRTrustedVideoPlugin_FWD_DEFINED__ #define __IEVRTrustedVideoPlugin_FWD_DEFINED__
typedef interface IEVRTrustedVideoPlugin IEVRTrustedVideoPlugin; typedef interface IEVRTrustedVideoPlugin IEVRTrustedVideoPlugin;
#endif /* __IEVRTrustedVideoPlugin_FWD_DEFINED__ */ #endif /* __IEVRTrustedVideoPlugin_FWD_DEFINED__ */
/* header files for imported files */ /* header files for imported files */
#include "unknwn.h" #include "unknwn.h"
#include "propidl.h" #include "propidl.h"
#include "mfidl.h" #include "mfidl.h"
#include "strmif.h" #include "strmif.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
skipping to change at line 131 skipping to change at line 131
#include "mfidl.h" #include "mfidl.h"
#include "strmif.h" #include "strmif.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
#endif #endif
/* interface __MIDL_itf_evr_0000_0000 */ /* interface __MIDL_itf_evr_0000_0000 */
/* [local] */ /* [local] */
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if defined(__midl) #if defined(__midl)
typedef typedef
enum _D3DFORMAT enum _D3DFORMAT
{ D3DFMT_UNKNOWN = 0, {
D3DFMT_R8G8B8 = 20, D3DFMT_UNKNOWN = 0,
D3DFMT_A8R8G8B8 = 21, D3DFMT_R8G8B8 = 20,
D3DFMT_X8R8G8B8 = 22, D3DFMT_A8R8G8B8 = 21,
D3DFMT_R5G6B5 = 23, D3DFMT_X8R8G8B8 = 22,
D3DFMT_X1R5G5B5 = 24, D3DFMT_R5G6B5 = 23,
D3DFMT_A1R5G5B5 = 25, D3DFMT_X1R5G5B5 = 24,
D3DFMT_A4R4G4B4 = 26, D3DFMT_A1R5G5B5 = 25,
D3DFMT_R3G3B2 = 27, D3DFMT_A4R4G4B4 = 26,
D3DFMT_A8 = 28, D3DFMT_R3G3B2 = 27,
D3DFMT_A8R3G3B2 = 29, D3DFMT_A8 = 28,
D3DFMT_X4R4G4B4 = 30, D3DFMT_A8R3G3B2 = 29,
D3DFMT_A2B10G10R10 = 31, D3DFMT_X4R4G4B4 = 30,
D3DFMT_G16R16 = 34, D3DFMT_A2B10G10R10 = 31,
D3DFMT_A8P8 = 40, D3DFMT_G16R16 = 34,
D3DFMT_P8 = 41, D3DFMT_A8P8 = 40,
D3DFMT_L8 = 50, D3DFMT_P8 = 41,
D3DFMT_A8L8 = 51, D3DFMT_L8 = 50,
D3DFMT_A4L4 = 52, D3DFMT_A8L8 = 51,
D3DFMT_V8U8 = 60, D3DFMT_A4L4 = 52,
D3DFMT_L6V5U5 = 61, D3DFMT_V8U8 = 60,
D3DFMT_X8L8V8U8 = 62, D3DFMT_L6V5U5 = 61,
D3DFMT_Q8W8V8U8 = 63, D3DFMT_X8L8V8U8 = 62,
D3DFMT_V16U16 = 64, D3DFMT_Q8W8V8U8 = 63,
D3DFMT_W11V11U10 = 65, D3DFMT_V16U16 = 64,
D3DFMT_A2W10V10U10 = 67, D3DFMT_W11V11U10 = 65,
D3DFMT_D16_LOCKABLE = 70, D3DFMT_A2W10V10U10 = 67,
D3DFMT_D32 = 71, D3DFMT_D16_LOCKABLE = 70,
D3DFMT_D15S1 = 73, D3DFMT_D32 = 71,
D3DFMT_D24S8 = 75, D3DFMT_D15S1 = 73,
D3DFMT_D16 = 80, D3DFMT_D24S8 = 75,
D3DFMT_D24X8 = 77, D3DFMT_D16 = 80,
D3DFMT_D24X4S4 = 79, D3DFMT_D24X8 = 77,
D3DFMT_VERTEXDATA = 100, D3DFMT_D24X4S4 = 79,
D3DFMT_INDEX16 = 101, D3DFMT_VERTEXDATA = 100,
D3DFMT_INDEX32 = 102, D3DFMT_INDEX16 = 101,
D3DFMT_FORCE_DWORD = 0x7fffffff D3DFMT_INDEX32 = 102,
D3DFMT_FORCE_DWORD = 0x7fffffff
} D3DFORMAT; } D3DFORMAT;
#endif // __midl #endif // __midl
DEFINE_GUID(MR_VIDEO_RENDER_SERVICE, DEFINE_GUID(MR_VIDEO_RENDER_SERVICE,
0x1092a86c, 0x1092a86c,
0xab1a, 0xab1a,
0x459a, 0x459a,
0xa3, 0x36, 0x83, 0x1f, 0xbc, 0x4d, 0x11, 0xff 0xa3, 0x36, 0x83, 0x1f, 0xbc, 0x4d, 0x11, 0xff
); );
DEFINE_GUID(MR_VIDEO_MIXER_SERVICE, DEFINE_GUID(MR_VIDEO_MIXER_SERVICE,
skipping to change at line 228 skipping to change at line 232
MIDL_INTERFACE("1F6A9F17-E70B-4e24-8AE4-0B2C3BA7A4AE") MIDL_INTERFACE("1F6A9F17-E70B-4e24-8AE4-0B2C3BA7A4AE")
IMFVideoPositionMapper : public IUnknown IMFVideoPositionMapper : public IUnknown
{ {
public: public:
virtual HRESULT STDMETHODCALLTYPE MapOutputCoordinateToInputStream( virtual HRESULT STDMETHODCALLTYPE MapOutputCoordinateToInputStream(
/* [in] */ float xOut, /* [in] */ float xOut,
/* [in] */ float yOut, /* [in] */ float yOut,
/* [in] */ DWORD dwOutputStreamIndex, /* [in] */ DWORD dwOutputStreamIndex,
/* [in] */ DWORD dwInputStreamIndex, /* [in] */ DWORD dwInputStreamIndex,
/* [annotation][out] */ /* [annotation][out] */
__out float *pxIn, _Out_ float *pxIn,
/* [annotation][out] */ /* [annotation][out] */
__out float *pyIn) = 0; _Out_ float *pyIn) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IMFVideoPositionMapperVtbl typedef struct IMFVideoPositionMapperVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMFVideoPositionMapper * This, IMFVideoPositionMapper * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IMFVideoPositionMapper * This); IMFVideoPositionMapper * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IMFVideoPositionMapper * This); IMFVideoPositionMapper * This);
HRESULT ( STDMETHODCALLTYPE *MapOutputCoordinateToInputStream )( HRESULT ( STDMETHODCALLTYPE *MapOutputCoordinateToInputStream )(
IMFVideoPositionMapper * This, IMFVideoPositionMapper * This,
/* [in] */ float xOut, /* [in] */ float xOut,
/* [in] */ float yOut, /* [in] */ float yOut,
/* [in] */ DWORD dwOutputStreamIndex, /* [in] */ DWORD dwOutputStreamIndex,
/* [in] */ DWORD dwInputStreamIndex, /* [in] */ DWORD dwInputStreamIndex,
/* [annotation][out] */ /* [annotation][out] */
__out float *pxIn, _Out_ float *pxIn,
/* [annotation][out] */ /* [annotation][out] */
__out float *pyIn); _Out_ float *pyIn);
END_INTERFACE END_INTERFACE
} IMFVideoPositionMapperVtbl; } IMFVideoPositionMapperVtbl;
interface IMFVideoPositionMapper interface IMFVideoPositionMapper
{ {
CONST_VTBL struct IMFVideoPositionMapperVtbl *lpVtbl; CONST_VTBL struct IMFVideoPositionMapperVtbl *lpVtbl;
}; };
#ifdef COBJMACROS #ifdef COBJMACROS
skipping to change at line 307 skipping to change at line 311
EXTERN_C const IID IID_IMFVideoDeviceID; EXTERN_C const IID IID_IMFVideoDeviceID;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("A38D9567-5A9C-4f3c-B293-8EB415B279BA") MIDL_INTERFACE("A38D9567-5A9C-4f3c-B293-8EB415B279BA")
IMFVideoDeviceID : public IUnknown IMFVideoDeviceID : public IUnknown
{ {
public: public:
virtual HRESULT STDMETHODCALLTYPE GetDeviceID( virtual HRESULT STDMETHODCALLTYPE GetDeviceID(
/* [annotation][out] */ /* [annotation][out] */
__out IID *pDeviceID) = 0; _Out_ IID *pDeviceID) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IMFVideoDeviceIDVtbl typedef struct IMFVideoDeviceIDVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMFVideoDeviceID * This, IMFVideoDeviceID * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IMFVideoDeviceID * This); IMFVideoDeviceID * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IMFVideoDeviceID * This); IMFVideoDeviceID * This);
HRESULT ( STDMETHODCALLTYPE *GetDeviceID )( HRESULT ( STDMETHODCALLTYPE *GetDeviceID )(
IMFVideoDeviceID * This, IMFVideoDeviceID * This,
/* [annotation][out] */ /* [annotation][out] */
__out IID *pDeviceID); _Out_ IID *pDeviceID);
END_INTERFACE END_INTERFACE
} IMFVideoDeviceIDVtbl; } IMFVideoDeviceIDVtbl;
interface IMFVideoDeviceID interface IMFVideoDeviceID
{ {
CONST_VTBL struct IMFVideoDeviceIDVtbl *lpVtbl; CONST_VTBL struct IMFVideoDeviceIDVtbl *lpVtbl;
}; };
#ifdef COBJMACROS #ifdef COBJMACROS
skipping to change at line 367 skipping to change at line 371
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IMFVideoDeviceID_INTERFACE_DEFINED__ */ #endif /* __IMFVideoDeviceID_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_evr_0000_0002 */ /* interface __MIDL_itf_evr_0000_0002 */
/* [local] */ /* [local] */
typedef typedef
enum MFVideoAspectRatioMode enum MFVideoAspectRatioMode
{ MFVideoARMode_None = 0, {
MFVideoARMode_PreservePicture = 0x1, MFVideoARMode_None = 0,
MFVideoARMode_PreservePixel = 0x2, MFVideoARMode_PreservePicture = 0x1,
MFVideoARMode_NonLinearStretch = 0x4, MFVideoARMode_PreservePixel = 0x2,
MFVideoARMode_Mask = 0x7 MFVideoARMode_NonLinearStretch = 0x4,
MFVideoARMode_Mask = 0x7
} MFVideoAspectRatioMode; } MFVideoAspectRatioMode;
typedef typedef
enum MFVideoRenderPrefs enum MFVideoRenderPrefs
{ MFVideoRenderPrefs_DoNotRenderBorder = 0x1, {
MFVideoRenderPrefs_DoNotClipToDevice = 0x2, MFVideoRenderPrefs_DoNotRenderBorder = 0x1,
MFVideoRenderPrefs_AllowOutputThrottling = 0x4, MFVideoRenderPrefs_DoNotClipToDevice = 0x2,
MFVideoRenderPrefs_ForceOutputThrottling = 0x8, MFVideoRenderPrefs_AllowOutputThrottling = 0x4,
MFVideoRenderPrefs_ForceBatching = 0x10, MFVideoRenderPrefs_ForceOutputThrottling = 0x8,
MFVideoRenderPrefs_AllowBatching = 0x20, MFVideoRenderPrefs_ForceBatching = 0x10,
MFVideoRenderPrefs_ForceScaling = 0x40, MFVideoRenderPrefs_AllowBatching = 0x20,
MFVideoRenderPrefs_AllowScaling = 0x80, MFVideoRenderPrefs_ForceScaling = 0x40,
MFVideoRenderPrefs_DoNotRepaintOnStop = 0x100, MFVideoRenderPrefs_AllowScaling = 0x80,
MFVideoRenderPrefs_Mask = 0x1ff MFVideoRenderPrefs_DoNotRepaintOnStop = 0x100,
MFVideoRenderPrefs_Mask = 0x1ff
} MFVideoRenderPrefs; } MFVideoRenderPrefs;
#ifndef _MFVideoNormalizedRect_
#define _MFVideoNormalizedRect_
typedef struct MFVideoNormalizedRect typedef struct MFVideoNormalizedRect
{ {
float left; float left;
float top; float top;
float right; float right;
float bottom; float bottom;
} MFVideoNormalizedRect; } MFVideoNormalizedRect;
#endif
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0002_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0002_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0002_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0002_v0_0_s_ifspec;
#ifndef __IMFVideoDisplayControl_INTERFACE_DEFINED__ #ifndef __IMFVideoDisplayControl_INTERFACE_DEFINED__
#define __IMFVideoDisplayControl_INTERFACE_DEFINED__ #define __IMFVideoDisplayControl_INTERFACE_DEFINED__
/* interface IMFVideoDisplayControl */ /* interface IMFVideoDisplayControl */
/* [helpstring][uuid][object] */ /* [helpstring][uuid][object] */
EXTERN_C const IID IID_IMFVideoDisplayControl; EXTERN_C const IID IID_IMFVideoDisplayControl;
skipping to change at line 479 skipping to change at line 489
#else /* C style interface */ #else /* C style interface */
typedef struct IMFVideoDisplayControlVtbl typedef struct IMFVideoDisplayControlVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IMFVideoDisplayControl * This, __RPC__in IMFVideoDisplayControl * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IMFVideoDisplayControl * This); __RPC__in IMFVideoDisplayControl * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IMFVideoDisplayControl * This); __RPC__in IMFVideoDisplayControl * This);
HRESULT ( STDMETHODCALLTYPE *GetNativeVideoSize )( HRESULT ( STDMETHODCALLTYPE *GetNativeVideoSize )(
__RPC__in IMFVideoDisplayControl * This, __RPC__in IMFVideoDisplayControl * This,
/* [unique][out][in] */ __RPC__inout_opt SIZE *pszVideo, /* [unique][out][in] */ __RPC__inout_opt SIZE *pszVideo,
skipping to change at line 635 skipping to change at line 645
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IMFVideoDisplayControl_INTERFACE_DEFINED__ */ #endif /* __IMFVideoDisplayControl_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_evr_0000_0003 */ /* interface __MIDL_itf_evr_0000_0003 */
/* [local] */ /* [local] */
typedef typedef
enum MFVP_MESSAGE_TYPE enum MFVP_MESSAGE_TYPE
{ MFVP_MESSAGE_FLUSH = 0, {
MFVP_MESSAGE_INVALIDATEMEDIATYPE = 0x1, MFVP_MESSAGE_FLUSH = 0,
MFVP_MESSAGE_PROCESSINPUTNOTIFY = 0x2, MFVP_MESSAGE_INVALIDATEMEDIATYPE = 0x1,
MFVP_MESSAGE_BEGINSTREAMING = 0x3, MFVP_MESSAGE_PROCESSINPUTNOTIFY = 0x2,
MFVP_MESSAGE_ENDSTREAMING = 0x4, MFVP_MESSAGE_BEGINSTREAMING = 0x3,
MFVP_MESSAGE_ENDOFSTREAM = 0x5, MFVP_MESSAGE_ENDSTREAMING = 0x4,
MFVP_MESSAGE_STEP = 0x6, MFVP_MESSAGE_ENDOFSTREAM = 0x5,
MFVP_MESSAGE_CANCELSTEP = 0x7 MFVP_MESSAGE_STEP = 0x6,
MFVP_MESSAGE_CANCELSTEP = 0x7
} MFVP_MESSAGE_TYPE; } MFVP_MESSAGE_TYPE;
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0003_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0003_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0003_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0003_v0_0_s_ifspec;
#ifndef __IMFVideoPresenter_INTERFACE_DEFINED__ #ifndef __IMFVideoPresenter_INTERFACE_DEFINED__
#define __IMFVideoPresenter_INTERFACE_DEFINED__ #define __IMFVideoPresenter_INTERFACE_DEFINED__
/* interface IMFVideoPresenter */ /* interface IMFVideoPresenter */
/* [local][helpstring][uuid][object] */ /* [local][helpstring][uuid][object] */
skipping to change at line 668 skipping to change at line 679
MIDL_INTERFACE("29AFF080-182A-4a5d-AF3B-448F3A6346CB") MIDL_INTERFACE("29AFF080-182A-4a5d-AF3B-448F3A6346CB")
IMFVideoPresenter : public IMFClockStateSink IMFVideoPresenter : public IMFClockStateSink
{ {
public: public:
virtual HRESULT STDMETHODCALLTYPE ProcessMessage( virtual HRESULT STDMETHODCALLTYPE ProcessMessage(
MFVP_MESSAGE_TYPE eMessage, MFVP_MESSAGE_TYPE eMessage,
ULONG_PTR ulParam) = 0; ULONG_PTR ulParam) = 0;
virtual HRESULT STDMETHODCALLTYPE GetCurrentMediaType( virtual HRESULT STDMETHODCALLTYPE GetCurrentMediaType(
/* [annotation][out] */ /* [annotation][out] */
__deref_out IMFVideoMediaType **ppMediaType) = 0; _Outptr_ IMFVideoMediaType **ppMediaType) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IMFVideoPresenterVtbl typedef struct IMFVideoPresenterVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMFVideoPresenter * This, IMFVideoPresenter * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IMFVideoPresenter * This); IMFVideoPresenter * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IMFVideoPresenter * This); IMFVideoPresenter * This);
HRESULT ( STDMETHODCALLTYPE *OnClockStart )( HRESULT ( STDMETHODCALLTYPE *OnClockStart )(
IMFVideoPresenter * This, IMFVideoPresenter * This,
/* [in] */ MFTIME hnsSystemTime, /* [in] */ MFTIME hnsSystemTime,
skipping to change at line 720 skipping to change at line 731
/* [in] */ float flRate); /* [in] */ float flRate);
HRESULT ( STDMETHODCALLTYPE *ProcessMessage )( HRESULT ( STDMETHODCALLTYPE *ProcessMessage )(
IMFVideoPresenter * This, IMFVideoPresenter * This,
MFVP_MESSAGE_TYPE eMessage, MFVP_MESSAGE_TYPE eMessage,
ULONG_PTR ulParam); ULONG_PTR ulParam);
HRESULT ( STDMETHODCALLTYPE *GetCurrentMediaType )( HRESULT ( STDMETHODCALLTYPE *GetCurrentMediaType )(
IMFVideoPresenter * This, IMFVideoPresenter * This,
/* [annotation][out] */ /* [annotation][out] */
__deref_out IMFVideoMediaType **ppMediaType); _Outptr_ IMFVideoMediaType **ppMediaType);
END_INTERFACE END_INTERFACE
} IMFVideoPresenterVtbl; } IMFVideoPresenterVtbl;
interface IMFVideoPresenter interface IMFVideoPresenter
{ {
CONST_VTBL struct IMFVideoPresenterVtbl *lpVtbl; CONST_VTBL struct IMFVideoPresenterVtbl *lpVtbl;
}; };
#ifdef COBJMACROS #ifdef COBJMACROS
skipping to change at line 784 skipping to change at line 795
EXTERN_C const IID IID_IMFDesiredSample; EXTERN_C const IID IID_IMFDesiredSample;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56C294D0-753E-4260-8D61-A3D8820B1D54") MIDL_INTERFACE("56C294D0-753E-4260-8D61-A3D8820B1D54")
IMFDesiredSample : public IUnknown IMFDesiredSample : public IUnknown
{ {
public: public:
virtual HRESULT STDMETHODCALLTYPE GetDesiredSampleTimeAndDuration( virtual HRESULT STDMETHODCALLTYPE GetDesiredSampleTimeAndDuration(
/* [annotation][out] */ /* [annotation][out] */
__out LONGLONG *phnsSampleTime, _Out_ LONGLONG *phnsSampleTime,
/* [annotation][out] */ /* [annotation][out] */
__out LONGLONG *phnsSampleDuration) = 0; _Out_ LONGLONG *phnsSampleDuration) = 0;
virtual void STDMETHODCALLTYPE SetDesiredSampleTimeAndDuration( virtual void STDMETHODCALLTYPE SetDesiredSampleTimeAndDuration(
/* [in] */ LONGLONG hnsSampleTime, /* [in] */ LONGLONG hnsSampleTime,
/* [in] */ LONGLONG hnsSampleDuration) = 0; /* [in] */ LONGLONG hnsSampleDuration) = 0;
virtual void STDMETHODCALLTYPE Clear( void) = 0; virtual void STDMETHODCALLTYPE Clear( void) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IMFDesiredSampleVtbl typedef struct IMFDesiredSampleVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMFDesiredSample * This, IMFDesiredSample * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IMFDesiredSample * This); IMFDesiredSample * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IMFDesiredSample * This); IMFDesiredSample * This);
HRESULT ( STDMETHODCALLTYPE *GetDesiredSampleTimeAndDuration )( HRESULT ( STDMETHODCALLTYPE *GetDesiredSampleTimeAndDuration )(
IMFDesiredSample * This, IMFDesiredSample * This,
/* [annotation][out] */ /* [annotation][out] */
__out LONGLONG *phnsSampleTime, _Out_ LONGLONG *phnsSampleTime,
/* [annotation][out] */ /* [annotation][out] */
__out LONGLONG *phnsSampleDuration); _Out_ LONGLONG *phnsSampleDuration);
void ( STDMETHODCALLTYPE *SetDesiredSampleTimeAndDuration )( void ( STDMETHODCALLTYPE *SetDesiredSampleTimeAndDuration )(
IMFDesiredSample * This, IMFDesiredSample * This,
/* [in] */ LONGLONG hnsSampleTime, /* [in] */ LONGLONG hnsSampleTime,
/* [in] */ LONGLONG hnsSampleDuration); /* [in] */ LONGLONG hnsSampleDuration);
void ( STDMETHODCALLTYPE *Clear )( void ( STDMETHODCALLTYPE *Clear )(
IMFDesiredSample * This); IMFDesiredSample * This);
END_INTERFACE END_INTERFACE
skipping to change at line 863 skipping to change at line 874
#define IMFDesiredSample_Clear(This) \ #define IMFDesiredSample_Clear(This) \
( (This)->lpVtbl -> Clear(This) ) ( (This)->lpVtbl -> Clear(This) )
#endif /* COBJMACROS */ #endif /* COBJMACROS */
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IMFDesiredSample_INTERFACE_DEFINED__ */ #endif /* __IMFDesiredSample_INTERFACE_DEFINED__ */
#ifndef __IMFTrackedSample_INTERFACE_DEFINED__
#define __IMFTrackedSample_INTERFACE_DEFINED__
/* interface IMFTrackedSample */
/* [local][helpstring][uuid][object] */
EXTERN_C const IID IID_IMFTrackedSample;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("245BF8E9-0755-40f7-88A5-AE0F18D55E17")
IMFTrackedSample : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE SetAllocator(
/* [annotation][in] */
__in IMFAsyncCallback *pSampleAllocator,
/* [unique][in] */ IUnknown *pUnkState) = 0;
};
#else /* C style interface */
typedef struct IMFTrackedSampleVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMFTrackedSample * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IMFTrackedSample * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IMFTrackedSample * This);
HRESULT ( STDMETHODCALLTYPE *SetAllocator )(
IMFTrackedSample * This,
/* [annotation][in] */
__in IMFAsyncCallback *pSampleAllocator,
/* [unique][in] */ IUnknown *pUnkState);
END_INTERFACE
} IMFTrackedSampleVtbl;
interface IMFTrackedSample
{
CONST_VTBL struct IMFTrackedSampleVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IMFTrackedSample_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IMFTrackedSample_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IMFTrackedSample_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IMFTrackedSample_SetAllocator(This,pSampleAllocator,pUnkState) \
( (This)->lpVtbl -> SetAllocator(This,pSampleAllocator,pUnkState) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IMFTrackedSample_INTERFACE_DEFINED__ */
#ifndef __IMFVideoMixerControl_INTERFACE_DEFINED__ #ifndef __IMFVideoMixerControl_INTERFACE_DEFINED__
#define __IMFVideoMixerControl_INTERFACE_DEFINED__ #define __IMFVideoMixerControl_INTERFACE_DEFINED__
/* interface IMFVideoMixerControl */ /* interface IMFVideoMixerControl */
/* [helpstring][uuid][object] */ /* [helpstring][uuid][object] */
EXTERN_C const IID IID_IMFVideoMixerControl; EXTERN_C const IID IID_IMFVideoMixerControl;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
skipping to change at line 978 skipping to change at line 916
#else /* C style interface */ #else /* C style interface */
typedef struct IMFVideoMixerControlVtbl typedef struct IMFVideoMixerControlVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IMFVideoMixerControl * This, __RPC__in IMFVideoMixerControl * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IMFVideoMixerControl * This); __RPC__in IMFVideoMixerControl * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IMFVideoMixerControl * This); __RPC__in IMFVideoMixerControl * This);
HRESULT ( STDMETHODCALLTYPE *SetStreamZOrder )( HRESULT ( STDMETHODCALLTYPE *SetStreamZOrder )(
__RPC__in IMFVideoMixerControl * This, __RPC__in IMFVideoMixerControl * This,
/* [in] */ DWORD dwStreamID, /* [in] */ DWORD dwStreamID,
skipping to change at line 1043 skipping to change at line 981
#define IMFVideoMixerControl_GetStreamOutputRect(This,dwStreamID,pnrcOutput) \ #define IMFVideoMixerControl_GetStreamOutputRect(This,dwStreamID,pnrcOutput) \
( (This)->lpVtbl -> GetStreamOutputRect(This,dwStreamID,pnrcOutput) ) ( (This)->lpVtbl -> GetStreamOutputRect(This,dwStreamID,pnrcOutput) )
#endif /* COBJMACROS */ #endif /* COBJMACROS */
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IMFVideoMixerControl_INTERFACE_DEFINED__ */ #endif /* __IMFVideoMixerControl_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_evr_0000_0007 */ /* interface __MIDL_itf_evr_0000_0006 */
/* [local] */ /* [local] */
typedef typedef
enum _MFVideoMixPrefs enum _MFVideoMixPrefs
{ MFVideoMixPrefs_ForceHalfInterlace = 0x1, {
MFVideoMixPrefs_AllowDropToHalfInterlace = 0x2, MFVideoMixPrefs_ForceHalfInterlace = 0x1,
MFVideoMixPrefs_AllowDropToBob = 0x4, MFVideoMixPrefs_AllowDropToHalfInterlace = 0x2,
MFVideoMixPrefs_ForceBob = 0x8, MFVideoMixPrefs_AllowDropToBob = 0x4,
MFVideoMixPrefs_Mask = 0xf MFVideoMixPrefs_ForceBob = 0x8,
MFVideoMixPrefs_EnableRotation = 0x10,
MFVideoMixPrefs_Mask = 0x1f
} MFVideoMixPrefs; } MFVideoMixPrefs;
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0007_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0006_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0007_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0006_v0_0_s_ifspec;
#ifndef __IMFVideoMixerControl2_INTERFACE_DEFINED__ #ifndef __IMFVideoMixerControl2_INTERFACE_DEFINED__
#define __IMFVideoMixerControl2_INTERFACE_DEFINED__ #define __IMFVideoMixerControl2_INTERFACE_DEFINED__
/* interface IMFVideoMixerControl2 */ /* interface IMFVideoMixerControl2 */
/* [helpstring][uuid][object] */ /* [helpstring][uuid][object] */
EXTERN_C const IID IID_IMFVideoMixerControl2; EXTERN_C const IID IID_IMFVideoMixerControl2;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
skipping to change at line 1090 skipping to change at line 1030
#else /* C style interface */ #else /* C style interface */
typedef struct IMFVideoMixerControl2Vtbl typedef struct IMFVideoMixerControl2Vtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IMFVideoMixerControl2 * This, __RPC__in IMFVideoMixerControl2 * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IMFVideoMixerControl2 * This); __RPC__in IMFVideoMixerControl2 * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IMFVideoMixerControl2 * This); __RPC__in IMFVideoMixerControl2 * This);
HRESULT ( STDMETHODCALLTYPE *SetStreamZOrder )( HRESULT ( STDMETHODCALLTYPE *SetStreamZOrder )(
__RPC__in IMFVideoMixerControl2 * This, __RPC__in IMFVideoMixerControl2 * This,
/* [in] */ DWORD dwStreamID, /* [in] */ DWORD dwStreamID,
skipping to change at line 1185 skipping to change at line 1125
EXTERN_C const IID IID_IMFVideoRenderer; EXTERN_C const IID IID_IMFVideoRenderer;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("DFDFD197-A9CA-43d8-B341-6AF3503792CD") MIDL_INTERFACE("DFDFD197-A9CA-43d8-B341-6AF3503792CD")
IMFVideoRenderer : public IUnknown IMFVideoRenderer : public IUnknown
{ {
public: public:
virtual HRESULT STDMETHODCALLTYPE InitializeRenderer( virtual HRESULT STDMETHODCALLTYPE InitializeRenderer(
/* [annotation][unique][in] */ /* [annotation][unique][in] */
__in_opt IMFTransform *pVideoMixer, _In_opt_ IMFTransform *pVideoMixer,
/* [annotation][unique][in] */ /* [annotation][unique][in] */
__in_opt IMFVideoPresenter *pVideoPresenter) = 0; _In_opt_ IMFVideoPresenter *pVideoPresenter) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IMFVideoRendererVtbl typedef struct IMFVideoRendererVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMFVideoRenderer * This, IMFVideoRenderer * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IMFVideoRenderer * This); IMFVideoRenderer * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IMFVideoRenderer * This); IMFVideoRenderer * This);
HRESULT ( STDMETHODCALLTYPE *InitializeRenderer )( HRESULT ( STDMETHODCALLTYPE *InitializeRenderer )(
IMFVideoRenderer * This, IMFVideoRenderer * This,
/* [annotation][unique][in] */ /* [annotation][unique][in] */
__in_opt IMFTransform *pVideoMixer, _In_opt_ IMFTransform *pVideoMixer,
/* [annotation][unique][in] */ /* [annotation][unique][in] */
__in_opt IMFVideoPresenter *pVideoPresenter); _In_opt_ IMFVideoPresenter *pVideoPresenter);
END_INTERFACE END_INTERFACE
} IMFVideoRendererVtbl; } IMFVideoRendererVtbl;
interface IMFVideoRenderer interface IMFVideoRenderer
{ {
CONST_VTBL struct IMFVideoRendererVtbl *lpVtbl; CONST_VTBL struct IMFVideoRendererVtbl *lpVtbl;
}; };
#ifdef COBJMACROS #ifdef COBJMACROS
skipping to change at line 1263 skipping to change at line 1203
MIDL_INTERFACE("83E91E85-82C1-4ea7-801D-85DC50B75086") MIDL_INTERFACE("83E91E85-82C1-4ea7-801D-85DC50B75086")
IEVRFilterConfig : public IUnknown IEVRFilterConfig : public IUnknown
{ {
public: public:
virtual HRESULT STDMETHODCALLTYPE SetNumberOfStreams( virtual HRESULT STDMETHODCALLTYPE SetNumberOfStreams(
/* [in] */ DWORD dwMaxStreams) = 0; /* [in] */ DWORD dwMaxStreams) = 0;
virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams( virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams(
/* [annotation][out] */ /* [annotation][out] */
__out DWORD *pdwMaxStreams) = 0; _Out_ DWORD *pdwMaxStreams) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IEVRFilterConfigVtbl typedef struct IEVRFilterConfigVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IEVRFilterConfig * This, IEVRFilterConfig * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IEVRFilterConfig * This); IEVRFilterConfig * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IEVRFilterConfig * This); IEVRFilterConfig * This);
HRESULT ( STDMETHODCALLTYPE *SetNumberOfStreams )( HRESULT ( STDMETHODCALLTYPE *SetNumberOfStreams )(
IEVRFilterConfig * This, IEVRFilterConfig * This,
/* [in] */ DWORD dwMaxStreams); /* [in] */ DWORD dwMaxStreams);
HRESULT ( STDMETHODCALLTYPE *GetNumberOfStreams )( HRESULT ( STDMETHODCALLTYPE *GetNumberOfStreams )(
IEVRFilterConfig * This, IEVRFilterConfig * This,
/* [annotation][out] */ /* [annotation][out] */
__out DWORD *pdwMaxStreams); _Out_ DWORD *pdwMaxStreams);
END_INTERFACE END_INTERFACE
} IEVRFilterConfigVtbl; } IEVRFilterConfigVtbl;
interface IEVRFilterConfig interface IEVRFilterConfig
{ {
CONST_VTBL struct IEVRFilterConfigVtbl *lpVtbl; CONST_VTBL struct IEVRFilterConfigVtbl *lpVtbl;
}; };
#ifdef COBJMACROS #ifdef COBJMACROS
skipping to change at line 1325 skipping to change at line 1265
#define IEVRFilterConfig_GetNumberOfStreams(This,pdwMaxStreams) \ #define IEVRFilterConfig_GetNumberOfStreams(This,pdwMaxStreams) \
( (This)->lpVtbl -> GetNumberOfStreams(This,pdwMaxStreams) ) ( (This)->lpVtbl -> GetNumberOfStreams(This,pdwMaxStreams) )
#endif /* COBJMACROS */ #endif /* COBJMACROS */
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IEVRFilterConfig_INTERFACE_DEFINED__ */ #endif /* __IEVRFilterConfig_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_evr_0000_0010 */ /* interface __MIDL_itf_evr_0000_0009 */
/* [local] */ /* [local] */
typedef typedef
enum _EVRFilterConfig_Prefs enum _EVRFilterConfig_Prefs
{ EVRFilterConfigPrefs_EnableQoS = 0x1, {
EVRFilterConfigPrefs_Mask = 0x1 EVRFilterConfigPrefs_EnableQoS = 0x1,
EVRFilterConfigPrefs_Mask = 0x1
} EVRFilterConfigPrefs; } EVRFilterConfigPrefs;
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0010_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0009_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0010_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0009_v0_0_s_ifspec;
#ifndef __IEVRFilterConfigEx_INTERFACE_DEFINED__ #ifndef __IEVRFilterConfigEx_INTERFACE_DEFINED__
#define __IEVRFilterConfigEx_INTERFACE_DEFINED__ #define __IEVRFilterConfigEx_INTERFACE_DEFINED__
/* interface IEVRFilterConfigEx */ /* interface IEVRFilterConfigEx */
/* [helpstring][uuid][object] */ /* [helpstring][uuid][object] */
EXTERN_C const IID IID_IEVRFilterConfigEx; EXTERN_C const IID IID_IEVRFilterConfigEx;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
skipping to change at line 1369 skipping to change at line 1310
#else /* C style interface */ #else /* C style interface */
typedef struct IEVRFilterConfigExVtbl typedef struct IEVRFilterConfigExVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IEVRFilterConfigEx * This, __RPC__in IEVRFilterConfigEx * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IEVRFilterConfigEx * This); __RPC__in IEVRFilterConfigEx * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IEVRFilterConfigEx * This); __RPC__in IEVRFilterConfigEx * This);
HRESULT ( STDMETHODCALLTYPE *SetNumberOfStreams )( HRESULT ( STDMETHODCALLTYPE *SetNumberOfStreams )(
__RPC__in IEVRFilterConfigEx * This, __RPC__in IEVRFilterConfigEx * This,
/* [in] */ DWORD dwMaxStreams); /* [in] */ DWORD dwMaxStreams);
HRESULT ( STDMETHODCALLTYPE *GetNumberOfStreams )( HRESULT ( STDMETHODCALLTYPE *GetNumberOfStreams )(
__RPC__in IEVRFilterConfigEx * This, __RPC__in IEVRFilterConfigEx * This,
/* [annotation][out] */ /* [annotation][out] */
__out DWORD *pdwMaxStreams); _Out_ DWORD *pdwMaxStreams);
HRESULT ( STDMETHODCALLTYPE *SetConfigPrefs )( HRESULT ( STDMETHODCALLTYPE *SetConfigPrefs )(
__RPC__in IEVRFilterConfigEx * This, __RPC__in IEVRFilterConfigEx * This,
/* [in] */ DWORD dwConfigFlags); /* [in] */ DWORD dwConfigFlags);
HRESULT ( STDMETHODCALLTYPE *GetConfigPrefs )( HRESULT ( STDMETHODCALLTYPE *GetConfigPrefs )(
__RPC__in IEVRFilterConfigEx * This, __RPC__in IEVRFilterConfigEx * This,
/* [out] */ __RPC__out DWORD *pdwConfigFlags); /* [out] */ __RPC__out DWORD *pdwConfigFlags);
END_INTERFACE END_INTERFACE
skipping to change at line 1431 skipping to change at line 1372
#define IEVRFilterConfigEx_GetConfigPrefs(This,pdwConfigFlags) \ #define IEVRFilterConfigEx_GetConfigPrefs(This,pdwConfigFlags) \
( (This)->lpVtbl -> GetConfigPrefs(This,pdwConfigFlags) ) ( (This)->lpVtbl -> GetConfigPrefs(This,pdwConfigFlags) )
#endif /* COBJMACROS */ #endif /* COBJMACROS */
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IEVRFilterConfigEx_INTERFACE_DEFINED__ */ #endif /* __IEVRFilterConfigEx_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_evr_0000_0011 */ /* interface __MIDL_itf_evr_0000_0010 */
/* [local] */ /* [local] */
typedef typedef
enum _MF_SERVICE_LOOKUP_TYPE enum _MF_SERVICE_LOOKUP_TYPE
{ MF_SERVICE_LOOKUP_UPSTREAM = 0, {
MF_SERVICE_LOOKUP_UPSTREAM_DIRECT = ( MF_SERVICE_LOOKUP_UPSTREAM + MF_SERVICE_LOOKUP_UPSTREAM = 0,
1 ) , MF_SERVICE_LOOKUP_UPSTREAM_DIRECT = ( MF_SERVICE_LOOKUP_UPSTREAM +
MF_SERVICE_LOOKUP_DOWNSTREAM = ( MF_SERVICE_LOOKUP_UPSTREAM_DIRECT + 1 1 ) ,
) , MF_SERVICE_LOOKUP_DOWNSTREAM = ( MF_SERVICE_LOOKUP_UPSTREAM_DIRECT + 1
MF_SERVICE_LOOKUP_DOWNSTREAM_DIRECT = ( MF_SERVICE_LOOKUP_DOWNSTREAM ) ,
+ 1 ) , MF_SERVICE_LOOKUP_DOWNSTREAM_DIRECT = ( MF_SERVICE_LOOKUP_DOWNSTREAM
MF_SERVICE_LOOKUP_ALL = ( MF_SERVICE_LOOKUP_DOWNSTREAM_DIRECT + 1 ) , + 1 ) ,
MF_SERVICE_LOOKUP_GLOBAL = ( MF_SERVICE_LOOKUP_ALL + 1 ) MF_SERVICE_LOOKUP_ALL = ( MF_SERVICE_LOOKUP_DOWNSTREAM_DIRECT + 1 ) ,
MF_SERVICE_LOOKUP_GLOBAL = ( MF_SERVICE_LOOKUP_ALL + 1 )
} MF_SERVICE_LOOKUP_TYPE; } MF_SERVICE_LOOKUP_TYPE;
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0011_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0010_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0011_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0010_v0_0_s_ifspec;
#ifndef __IMFTopologyServiceLookup_INTERFACE_DEFINED__ #ifndef __IMFTopologyServiceLookup_INTERFACE_DEFINED__
#define __IMFTopologyServiceLookup_INTERFACE_DEFINED__ #define __IMFTopologyServiceLookup_INTERFACE_DEFINED__
/* interface IMFTopologyServiceLookup */ /* interface IMFTopologyServiceLookup */
/* [local][helpstring][uuid][object] */ /* [local][helpstring][uuid][object] */
EXTERN_C const IID IID_IMFTopologyServiceLookup; EXTERN_C const IID IID_IMFTopologyServiceLookup;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
skipping to change at line 1467 skipping to change at line 1409
MIDL_INTERFACE("fa993889-4383-415a-a930-dd472a8cf6f7") MIDL_INTERFACE("fa993889-4383-415a-a930-dd472a8cf6f7")
IMFTopologyServiceLookup : public IUnknown IMFTopologyServiceLookup : public IUnknown
{ {
public: public:
virtual HRESULT STDMETHODCALLTYPE LookupService( virtual HRESULT STDMETHODCALLTYPE LookupService(
/* [in] */ MF_SERVICE_LOOKUP_TYPE Type, /* [in] */ MF_SERVICE_LOOKUP_TYPE Type,
/* [in] */ DWORD dwIndex, /* [in] */ DWORD dwIndex,
/* [in] */ REFGUID guidService, /* [in] */ REFGUID guidService,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__out_ecount_full(*pnObjects) LPVOID *ppvObjects, _Out_writes_all_(*pnObjects) LPVOID *ppvObjects,
/* [annotation][out][in] */ /* [annotation][out][in] */
__inout DWORD *pnObjects) = 0; _Inout_ DWORD *pnObjects) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IMFTopologyServiceLookupVtbl typedef struct IMFTopologyServiceLookupVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMFTopologyServiceLookup * This, IMFTopologyServiceLookup * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IMFTopologyServiceLookup * This); IMFTopologyServiceLookup * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IMFTopologyServiceLookup * This); IMFTopologyServiceLookup * This);
HRESULT ( STDMETHODCALLTYPE *LookupService )( HRESULT ( STDMETHODCALLTYPE *LookupService )(
IMFTopologyServiceLookup * This, IMFTopologyServiceLookup * This,
/* [in] */ MF_SERVICE_LOOKUP_TYPE Type, /* [in] */ MF_SERVICE_LOOKUP_TYPE Type,
/* [in] */ DWORD dwIndex, /* [in] */ DWORD dwIndex,
/* [in] */ REFGUID guidService, /* [in] */ REFGUID guidService,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__out_ecount_full(*pnObjects) LPVOID *ppvObjects, _Out_writes_all_(*pnObjects) LPVOID *ppvObjects,
/* [annotation][out][in] */ /* [annotation][out][in] */
__inout DWORD *pnObjects); _Inout_ DWORD *pnObjects);
END_INTERFACE END_INTERFACE
} IMFTopologyServiceLookupVtbl; } IMFTopologyServiceLookupVtbl;
interface IMFTopologyServiceLookup interface IMFTopologyServiceLookup
{ {
CONST_VTBL struct IMFTopologyServiceLookupVtbl *lpVtbl; CONST_VTBL struct IMFTopologyServiceLookupVtbl *lpVtbl;
}; };
#ifdef COBJMACROS #ifdef COBJMACROS
skipping to change at line 1546 skipping to change at line 1488
EXTERN_C const IID IID_IMFTopologyServiceLookupClient; EXTERN_C const IID IID_IMFTopologyServiceLookupClient;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fa99388a-4383-415a-a930-dd472a8cf6f7") MIDL_INTERFACE("fa99388a-4383-415a-a930-dd472a8cf6f7")
IMFTopologyServiceLookupClient : public IUnknown IMFTopologyServiceLookupClient : public IUnknown
{ {
public: public:
virtual HRESULT STDMETHODCALLTYPE InitServicePointers( virtual HRESULT STDMETHODCALLTYPE InitServicePointers(
/* [annotation][in] */ /* [annotation][in] */
__in IMFTopologyServiceLookup *pLookup) = 0; _In_ IMFTopologyServiceLookup *pLookup) = 0;
virtual HRESULT STDMETHODCALLTYPE ReleaseServicePointers( void) = 0; virtual HRESULT STDMETHODCALLTYPE ReleaseServicePointers( void) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IMFTopologyServiceLookupClientVtbl typedef struct IMFTopologyServiceLookupClientVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMFTopologyServiceLookupClient * This, IMFTopologyServiceLookupClient * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IMFTopologyServiceLookupClient * This); IMFTopologyServiceLookupClient * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IMFTopologyServiceLookupClient * This); IMFTopologyServiceLookupClient * This);
HRESULT ( STDMETHODCALLTYPE *InitServicePointers )( HRESULT ( STDMETHODCALLTYPE *InitServicePointers )(
IMFTopologyServiceLookupClient * This, IMFTopologyServiceLookupClient * This,
/* [annotation][in] */ /* [annotation][in] */
__in IMFTopologyServiceLookup *pLookup); _In_ IMFTopologyServiceLookup *pLookup);
HRESULT ( STDMETHODCALLTYPE *ReleaseServicePointers )( HRESULT ( STDMETHODCALLTYPE *ReleaseServicePointers )(
IMFTopologyServiceLookupClient * This); IMFTopologyServiceLookupClient * This);
END_INTERFACE END_INTERFACE
} IMFTopologyServiceLookupClientVtbl; } IMFTopologyServiceLookupClientVtbl;
interface IMFTopologyServiceLookupClient interface IMFTopologyServiceLookupClient
{ {
CONST_VTBL struct IMFTopologyServiceLookupClientVtbl *lpVtbl; CONST_VTBL struct IMFTopologyServiceLookupClientVtbl *lpVtbl;
skipping to change at line 1647 skipping to change at line 1589
#else /* C style interface */ #else /* C style interface */
typedef struct IEVRTrustedVideoPluginVtbl typedef struct IEVRTrustedVideoPluginVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IEVRTrustedVideoPlugin * This, IEVRTrustedVideoPlugin * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IEVRTrustedVideoPlugin * This); IEVRTrustedVideoPlugin * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IEVRTrustedVideoPlugin * This); IEVRTrustedVideoPlugin * This);
HRESULT ( STDMETHODCALLTYPE *IsInTrustedVideoMode )( HRESULT ( STDMETHODCALLTYPE *IsInTrustedVideoMode )(
IEVRTrustedVideoPlugin * This, IEVRTrustedVideoPlugin * This,
/* [out] */ BOOL *pYes); /* [out] */ BOOL *pYes);
skipping to change at line 1708 skipping to change at line 1650
#define IEVRTrustedVideoPlugin_DisableImageExport(This,bDisable) \ #define IEVRTrustedVideoPlugin_DisableImageExport(This,bDisable) \
( (This)->lpVtbl -> DisableImageExport(This,bDisable) ) ( (This)->lpVtbl -> DisableImageExport(This,bDisable) )
#endif /* COBJMACROS */ #endif /* COBJMACROS */
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IEVRTrustedVideoPlugin_INTERFACE_DEFINED__ */ #endif /* __IEVRTrustedVideoPlugin_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_evr_0000_0014 */ /* interface __MIDL_itf_evr_0000_0013 */
/* [local] */ /* [local] */
#ifndef MFEVRDLL
#define MFEVRDLL 0
#endif
#if MFEVRDLL #if MFEVRDLL
#define EVRPUBLIC(func) STDAPI _##func #define EVRPUBLIC(func) STDAPI _##func
#else #else
#define EVRPUBLIC(func) STDAPI func #define EVRPUBLIC(func) STDAPI func
#endif #endif
EVRPUBLIC(MFCreateVideoPresenter)( EVRPUBLIC(MFCreateVideoPresenter)(
__in_opt IUnknown * pOwner, _In_opt_ IUnknown * pOwner,
REFIID riidDevice, REFIID riidDevice,
REFIID riid, REFIID riid,
__deref_out_opt void ** ppVideoPresenter _Outptr_result_maybenull_ void ** ppVideoPresenter
); );
EVRPUBLIC(MFCreateVideoMixer)( EVRPUBLIC(MFCreateVideoMixer)(
__in_opt IUnknown * pOwner, _In_opt_ IUnknown * pOwner,
REFIID riidDevice, REFIID riidDevice,
REFIID riid, REFIID riid,
__deref_out_opt void ** ppVideoMixer _Outptr_ void ** ppv
); );
EVRPUBLIC(MFCreateVideoMixerAndPresenter)( EVRPUBLIC(MFCreateVideoMixerAndPresenter)(
__in_opt IUnknown * pMixerOwner, _In_opt_ IUnknown * pMixerOwner,
__in_opt IUnknown * pPresenterOwner, _In_opt_ IUnknown * pPresenterOwner,
REFIID riidMixer, REFIID riidMixer,
__deref_out void ** ppvVideoMixer, _Outptr_ void ** ppvVideoMixer,
REFIID riidPresenter, REFIID riidPresenter,
__deref_out void ** ppvVideoPresenter _Outptr_ void ** ppvVideoPresenter
); );
EVRPUBLIC(MFCreateVideoRenderer)( EVRPUBLIC(MFCreateVideoRenderer)(
REFIID riidRenderer, REFIID riidRenderer,
__deref_out_opt void ** ppVideoRenderer _Outptr_result_maybenull_ void ** ppVideoRenderer
); );
EVRPUBLIC(MFCreateVideoSampleFromSurface)( EVRPUBLIC(MFCreateVideoSampleFromSurface)(
__in_opt IUnknown* pUnkSurface, _In_ IUnknown* pUnkSurface,
__deref_out_opt IMFSample** ppSample _Out_ IMFSample** ppSample
);
EVRPUBLIC(MFCreateVideoSampleAllocator)(
_In_ REFIID riid,
_Outptr_ void** ppSampleAllocator
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0014_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0013_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0014_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_evr_0000_0013_v0_0_s_ifspec;
/* Additional Prototypes for ALL interfaces */ /* Additional Prototypes for ALL interfaces */
unsigned long __RPC_USER HWND_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in HWND * ); unsigned long __RPC_USER HWND_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserMarshal( __RPC__in unsigned long *, __RPC_ _inout_xcount(0) unsigned char *, __RPC__in HWND * ); unsigned char * __RPC_USER HWND_UserMarshal( __RPC__in unsigned long *, __RPC_ _inout_xcount(0) unsigned char *, __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserUnmarshal(__RPC__in unsigned long *, __RPC_ _in_xcount(0) unsigned char *, __RPC__out HWND * ); unsigned char * __RPC_USER HWND_UserUnmarshal(__RPC__in unsigned long *, __RPC_ _in_xcount(0) unsigned char *, __RPC__out HWND * );
void __RPC_USER HWND_UserFree( __RPC__in unsigned long *, __RPC__in HWND * ); void __RPC_USER HWND_UserFree( __RPC__in unsigned long *, __RPC__in HWND * );
unsigned long __RPC_USER HWND_UserSize64( __RPC__in unsigned lo ng *, unsigned long , __RPC__in HWND * ); unsigned long __RPC_USER HWND_UserSize64( __RPC__in unsigned lo ng *, unsigned long , __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserMarshal64( __RPC__in unsigned long *, __RP C__inout_xcount(0) unsigned char *, __RPC__in HWND * ); unsigned char * __RPC_USER HWND_UserMarshal64( __RPC__in unsigned long *, __RP C__inout_xcount(0) unsigned char *, __RPC__in HWND * );
 End of changes. 83 change blocks. 
224 lines changed or deleted 175 lines changed or added


 mfapi.h (6.1.7601.19091-Windows_7.0)   mfapi.h (6.3.9600.17415-Windows_8.1) 
#include <winapifamily.h>
//*@@@+++@@@@****************************************************************** //*@@@+++@@@@******************************************************************
// //
// Microsoft Windows Media Foundation // Microsoft Windows Media Foundation
// Copyright (C) Microsoft Corporation. All rights reserved. // Copyright (C) Microsoft Corporation. All rights reserved.
// //
//*@@@---@@@@****************************************************************** //*@@@---@@@@******************************************************************
// //
// //
// MFAPI.h is the header containing the APIs for using the MF platform. // MFAPI.h is the header containing the APIs for using the MF platform.
skipping to change at line 69 skipping to change at line 71
// //
// Initializes the platform object. // Initializes the platform object.
// Must be called before using Media Foundation. // Must be called before using Media Foundation.
// A matching MFShutdown call must be made when the application is done using // A matching MFShutdown call must be made when the application is done using
// Media Foundation. // Media Foundation.
// The "Version" parameter should be set to MF_API_VERSION. // The "Version" parameter should be set to MF_API_VERSION.
// Application should not call MFStartup / MFShutdown from workqueue threads // Application should not call MFStartup / MFShutdown from workqueue threads
// //
#if defined(__cplusplus) #if defined(__cplusplus)
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFStartup( ULONG Version, DWORD dwFlags = MFSTARTUP_FULL ); STDAPI MFStartup( ULONG Version, DWORD dwFlags = MFSTARTUP_FULL );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#else #else
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFStartup( ULONG Version, DWORD dwFlags ); STDAPI MFStartup( ULONG Version, DWORD dwFlags );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#endif #endif
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
// //
// Shuts down the platform object. // Shuts down the platform object.
// Releases all resources including threads. // Releases all resources including threads.
// Application should call MFShutdown the same number of times as MFStartup // Application should call MFShutdown the same number of times as MFStartup
// Application should not call MFStartup / MFShutdown from workqueue threads // Application should not call MFStartup / MFShutdown from workqueue threads
// //
STDAPI MFShutdown(); STDAPI MFShutdown();
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
///////////////////////////////// Platform /////////////////////////////// ///////////////////////////////// Platform ///////////////////////////////
skipping to change at line 100 skipping to change at line 121
STDAPI MFLockPlatform(); STDAPI MFLockPlatform();
STDAPI MFUnlockPlatform(); STDAPI MFUnlockPlatform();
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// //
// MF workitem functions // MF workitem functions
// //
typedef unsigned __int64 MFWORKITEM_KEY; typedef unsigned __int64 MFWORKITEM_KEY;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI MFPutWorkItem( STDAPI MFPutWorkItem(
DWORD dwQueue, DWORD dwQueue,
IMFAsyncCallback * pCallback, IMFAsyncCallback * pCallback,
IUnknown * pState); IUnknown * pState);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFPutWorkItem2(
DWORD dwQueue,
LONG Priority,
_In_ IMFAsyncCallback * pCallback,
_In_opt_ IUnknown * pState);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI MFPutWorkItemEx( STDAPI MFPutWorkItemEx(
DWORD dwQueue, DWORD dwQueue,
IMFAsyncResult * pResult); IMFAsyncResult * pResult);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFPutWorkItemEx2(
DWORD dwQueue,
LONG Priority,
_In_ IMFAsyncResult * pResult);
STDAPI MFPutWaitingWorkItem (
HANDLE hEvent,
LONG Priority,
_In_ IMFAsyncResult * pResult,
_Out_opt_ MFWORKITEM_KEY * pKey
);
STDAPI MFAllocateSerialWorkQueue (
_In_ DWORD dwWorkQueue,
_Out_ OUT DWORD * pdwWorkQueue);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI MFScheduleWorkItem( STDAPI MFScheduleWorkItem(
IMFAsyncCallback * pCallback, IMFAsyncCallback * pCallback,
IUnknown * pState, IUnknown * pState,
INT64 Timeout, INT64 Timeout,
__out_opt MFWORKITEM_KEY * pKey); _Out_opt_ MFWORKITEM_KEY * pKey);
STDAPI MFScheduleWorkItemEx( STDAPI MFScheduleWorkItemEx(
IMFAsyncResult * pResult, IMFAsyncResult * pResult,
INT64 Timeout, INT64 Timeout,
__out_opt MFWORKITEM_KEY * pKey); _Out_opt_ MFWORKITEM_KEY * pKey);
// //
// The CancelWorkItem method is used by objects to cancel scheduled operation // The CancelWorkItem method is used by objects to cancel scheduled operation
// Due to asynchronous nature of timers, application might still get a // Due to asynchronous nature of timers, application might still get a
// timer callback after MFCancelWorkItem has returned. // timer callback after MFCancelWorkItem has returned.
// //
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFCancelWorkItem( STDAPI MFCancelWorkItem(
MFWORKITEM_KEY Key); MFWORKITEM_KEY Key);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// //
// MF periodic callbacks // MF periodic callbacks
// //
STDAPI MFGetTimerPeriodicity( STDAPI MFGetTimerPeriodicity(
__out DWORD * Periodicity); _Out_ DWORD * Periodicity);
typedef void (*MFPERIODICCALLBACK)(IUnknown* pContext); typedef void (*MFPERIODICCALLBACK)(IUnknown* pContext);
STDAPI MFAddPeriodicCallback( STDAPI MFAddPeriodicCallback(
MFPERIODICCALLBACK Callback, MFPERIODICCALLBACK Callback,
IUnknown * pContext, IUnknown * pContext,
__out_opt DWORD * pdwKey); _Out_opt_ DWORD * pdwKey);
STDAPI MFRemovePeriodicCallback( STDAPI MFRemovePeriodicCallback(
DWORD dwKey); DWORD dwKey);
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// //
// MF work queues // MF work queues
// //
skipping to change at line 165 skipping to change at line 250
// //
typedef enum typedef enum
{ {
// MF_STANDARD_WORKQUEUE: Work queue in a thread without Window // MF_STANDARD_WORKQUEUE: Work queue in a thread without Window
// message loop. // message loop.
MF_STANDARD_WORKQUEUE = 0, MF_STANDARD_WORKQUEUE = 0,
// MF_WINDOW_WORKQUEUE: Work queue in a thread running Window // MF_WINDOW_WORKQUEUE: Work queue in a thread running Window
// Message loop that calls PeekMessage() / DispatchMessage().. // Message loop that calls PeekMessage() / DispatchMessage()..
MF_WINDOW_WORKQUEUE = 1, MF_WINDOW_WORKQUEUE = 1,
//
//
MF_MULTITHREADED_WORKQUEUE = 2, // common MT threadpool
} MFASYNC_WORKQUEUE_TYPE; } MFASYNC_WORKQUEUE_TYPE;
STDAPI MFAllocateWorkQueueEx( STDAPI MFAllocateWorkQueueEx(
__in MFASYNC_WORKQUEUE_TYPE WorkQueueType, _In_ MFASYNC_WORKQUEUE_TYPE WorkQueueType,
__out OUT DWORD * pdwWorkQueue); _Out_ OUT DWORD * pdwWorkQueue);
#endif // (WINVER >= _WIN32_WINNT_WIN7) #endif // (WINVER >= _WIN32_WINNT_WIN7)
// //
// Allocate a standard work queue. the behaviour is the same with: // Allocate a standard work queue. the behaviour is the same with:
// MFAllocateWorkQueueEx( MF_STANDARD_WORKQUEUE, pdwWorkQueue ) // MFAllocateWorkQueueEx( MF_STANDARD_WORKQUEUE, pdwWorkQueue )
// //
STDAPI MFAllocateWorkQueue( STDAPI MFAllocateWorkQueue(
__out OUT DWORD * pdwWorkQueue); _Out_ OUT DWORD * pdwWorkQueue);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFLockWorkQueue( STDAPI MFLockWorkQueue(
__in DWORD dwWorkQueue); _In_ DWORD dwWorkQueue);
STDAPI MFUnlockWorkQueue( STDAPI MFUnlockWorkQueue(
__in DWORD dwWorkQueue); _In_ DWORD dwWorkQueue);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI MFBeginRegisterWorkQueueWithMMCSS( STDAPI MFBeginRegisterWorkQueueWithMMCSS(
DWORD dwWorkQueueId, DWORD dwWorkQueueId,
__in LPCWSTR wszClass, _In_ LPCWSTR wszClass,
DWORD dwTaskId, DWORD dwTaskId,
__in IMFAsyncCallback * pDoneCallback, _In_ IMFAsyncCallback * pDoneCallback,
__in IUnknown * pDoneState ); _In_ IUnknown * pDoneState );
STDAPI MFBeginRegisterWorkQueueWithMMCSSEx(
DWORD dwWorkQueueId,
_In_ LPCWSTR wszClass,
DWORD dwTaskId,
LONG lPriority,
_In_ IMFAsyncCallback * pDoneCallback,
_In_ IUnknown * pDoneState );
STDAPI MFEndRegisterWorkQueueWithMMCSS( STDAPI MFEndRegisterWorkQueueWithMMCSS(
__in IMFAsyncResult * pResult, _In_ IMFAsyncResult * pResult,
__out DWORD * pdwTaskId ); _Out_ DWORD * pdwTaskId );
STDAPI MFBeginUnregisterWorkQueueWithMMCSS( STDAPI MFBeginUnregisterWorkQueueWithMMCSS(
DWORD dwWorkQueueId, DWORD dwWorkQueueId,
__in IMFAsyncCallback * pDoneCallback, _In_ IMFAsyncCallback * pDoneCallback,
__in IUnknown * pDoneState ); _In_ IUnknown * pDoneState );
STDAPI MFEndUnregisterWorkQueueWithMMCSS( STDAPI MFEndUnregisterWorkQueueWithMMCSS(
__in IMFAsyncResult * pResult ); _In_ IMFAsyncResult * pResult );
STDAPI MFGetWorkQueueMMCSSClass( STDAPI MFGetWorkQueueMMCSSClass(
DWORD dwWorkQueueId, DWORD dwWorkQueueId,
__out_ecount_part_opt(*pcchClass,*pcchClass) LPWSTR pwszClass, _Out_writes_to_opt_(*pcchClass,*pcchClass) LPWSTR pwszClass,
__inout DWORD *pcchClass ); _Inout_ DWORD *pcchClass );
STDAPI MFGetWorkQueueMMCSSTaskId( STDAPI MFGetWorkQueueMMCSSTaskId(
DWORD dwWorkQueueId, DWORD dwWorkQueueId,
__out LPDWORD pdwTaskId ); _Out_ LPDWORD pdwTaskId );
STDAPI MFRegisterPlatformWithMMCSS(
_In_ PCWSTR wszClass,
_Inout_ DWORD* pdwTaskId,
_In_ LONG lPriority );
STDAPI MFUnregisterPlatformFromMMCSS();
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFLockSharedWorkQueue(
_In_ PCWSTR wszClass,
_In_ LONG BasePriority,
_Inout_ DWORD* pdwTaskId,
_Out_ DWORD* pID );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI MFGetWorkQueueMMCSSPriority(
DWORD dwWorkQueueId,
_Out_ LONG* lPriority );
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
///////////////////////////////// Async Model ////////////////////////////// ///////////////////////////////// Async Model //////////////////////////////
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// //
// Instantiates the MF-provided Async Result implementation // Instantiates the MF-provided Async Result implementation
// //
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFCreateAsyncResult( STDAPI MFCreateAsyncResult(
IUnknown * punkObject, IUnknown * punkObject,
IMFAsyncCallback * pCallback, IMFAsyncCallback * pCallback,
IUnknown * punkState, IUnknown * punkState,
__out IMFAsyncResult ** ppAsyncResult ); _Out_ IMFAsyncResult ** ppAsyncResult );
// //
// Helper for calling IMFAsyncCallback::Invoke // Helper for calling IMFAsyncCallback::Invoke
// //
STDAPI MFInvokeCallback( STDAPI MFInvokeCallback(
IMFAsyncResult * pAsyncResult ); IMFAsyncResult * pAsyncResult );
// //
// MFASYNCRESULT struct. // MFASYNCRESULT struct.
// Any implementation of IMFAsyncResult must inherit from this struct; // Any implementation of IMFAsyncResult must inherit from this struct;
skipping to change at line 258 skipping to change at line 402
{ {
IMFAsyncResult AsyncResult; IMFAsyncResult AsyncResult;
OVERLAPPED overlapped; OVERLAPPED overlapped;
IMFAsyncCallback * pCallback; IMFAsyncCallback * pCallback;
HRESULT hrStatusResult; HRESULT hrStatusResult;
DWORD dwBytesTransferred; DWORD dwBytesTransferred;
HANDLE hEvent; HANDLE hEvent;
} MFASYNCRESULT; } MFASYNCRESULT;
#endif /* C style interface */ #endif /* C style interface */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
///////////////////////////////// Files ////////////////////////////// ///////////////////////////////// Files //////////////////////////////
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// //
// Regardless of the access mode with which the file is opened, the sharing // Regardless of the access mode with which the file is opened, the sharing
// permissions will allow shared reading and deleting. // permissions will allow shared reading and deleting.
// //
STDAPI MFCreateFile( STDAPI MFCreateFile(
MF_FILE_ACCESSMODE AccessMode, MF_FILE_ACCESSMODE AccessMode,
MF_FILE_OPENMODE OpenMode, MF_FILE_OPENMODE OpenMode,
MF_FILE_FLAGS fFlags, MF_FILE_FLAGS fFlags,
LPCWSTR pwszFileURL, LPCWSTR pwszFileURL,
__out IMFByteStream **ppIByteStream ); _Out_ IMFByteStream **ppIByteStream );
STDAPI MFCreateTempFile( STDAPI MFCreateTempFile(
MF_FILE_ACCESSMODE AccessMode, MF_FILE_ACCESSMODE AccessMode,
MF_FILE_OPENMODE OpenMode, MF_FILE_OPENMODE OpenMode,
MF_FILE_FLAGS fFlags, MF_FILE_FLAGS fFlags,
__out IMFByteStream **ppIByteStream ); _Out_ IMFByteStream **ppIByteStream );
STDAPI MFBeginCreateFile( STDAPI MFBeginCreateFile(
MF_FILE_ACCESSMODE AccessMode, MF_FILE_ACCESSMODE AccessMode,
MF_FILE_OPENMODE OpenMode, MF_FILE_OPENMODE OpenMode,
MF_FILE_FLAGS fFlags, MF_FILE_FLAGS fFlags,
LPCWSTR pwszFilePath, LPCWSTR pwszFilePath,
IMFAsyncCallback * pCallback, IMFAsyncCallback * pCallback,
IUnknown * pState, IUnknown * pState,
__out IUnknown ** ppCancelCookie); _Out_ IUnknown ** ppCancelCookie);
STDAPI MFEndCreateFile( STDAPI MFEndCreateFile(
IMFAsyncResult * pResult, IMFAsyncResult * pResult,
__out IMFByteStream **ppFile ); _Out_ IMFByteStream **ppFile );
STDAPI MFCancelCreateFile( STDAPI MFCancelCreateFile(
IUnknown * pCancelCookie); IUnknown * pCancelCookie);
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
///////////////////////////////// Buffers ////////////////////////////// ///////////////////////////////// Buffers //////////////////////////////
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// //
// Creates an IMFMediaBuffer in memory // Creates an IMFMediaBuffer in memory
// //
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFCreateMemoryBuffer( STDAPI MFCreateMemoryBuffer(
__in DWORD cbMaxLength, _In_ DWORD cbMaxLength,
__out IMFMediaBuffer ** ppBuffer ); _Out_ IMFMediaBuffer ** ppBuffer );
// //
// Creates an IMFMediaBuffer wrapper at the given offset and length // Creates an IMFMediaBuffer wrapper at the given offset and length
// within an existing IMFMediaBuffer // within an existing IMFMediaBuffer
// //
STDAPI MFCreateMediaBufferWrapper( STDAPI MFCreateMediaBufferWrapper(
__in IMFMediaBuffer * pBuffer, _In_ IMFMediaBuffer * pBuffer,
__in DWORD cbOffset, _In_ DWORD cbOffset,
__in DWORD dwLength, _In_ DWORD dwLength,
__out IMFMediaBuffer ** ppBuffer ); _Out_ IMFMediaBuffer ** ppBuffer );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// Creates a legacy buffer (IMediaBuffer) wrapper at the given offset within // Creates a legacy buffer (IMediaBuffer) wrapper at the given offset within
// an existing IMFMediaBuffer. // an existing IMFMediaBuffer.
// pSample is optional. It can point to the original IMFSample from which this // pSample is optional. It can point to the original IMFSample from which this
// IMFMediaBuffer came. If provided, then *ppMediaBuffer will succeed // IMFMediaBuffer came. If provided, then *ppMediaBuffer will succeed
// QueryInterface for IID_IMFSample, from which the original sample's attributes // QueryInterface for IID_IMFSample, from which the original sample's attributes
// can be obtained // can be obtained
// //
STDAPI MFCreateLegacyMediaBufferOnMFMediaBuffer( STDAPI MFCreateLegacyMediaBufferOnMFMediaBuffer(
__in_opt IMFSample * pSample, _In_opt_ IMFSample * pSample,
__in IMFMediaBuffer * pMFMediaBuffer, _In_ IMFMediaBuffer * pMFMediaBuffer,
__in DWORD cbOffset, _In_ DWORD cbOffset,
__deref_out IMediaBuffer ** ppMediaBuffer ); _Outptr_ IMediaBuffer ** ppMediaBuffer );
// //
// Create a DirectX surface buffer // Create a DirectX surface buffer
// //
#include <dxgiformat.h>
STDAPI_(DXGI_FORMAT) MFMapDX9FormatToDXGIFormat( _In_ DWORD dx9 );
STDAPI_(DWORD) MFMapDXGIFormatToDX9Format( _In_ DXGI_FORMAT dx11 );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFLockDXGIDeviceManager(
_Out_opt_ UINT* pResetToken,
_Outptr_ IMFDXGIDeviceManager** ppManager
);
STDAPI MFUnlockDXGIDeviceManager();
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI MFCreateDXSurfaceBuffer( STDAPI MFCreateDXSurfaceBuffer(
__in REFIID riid, _In_ REFIID riid,
__in IUnknown * punkSurface, _In_ IUnknown * punkSurface,
__in BOOL fBottomUpWhenLinear, _In_ BOOL fBottomUpWhenLinear,
__deref_out IMFMediaBuffer ** ppBuffer ); _Outptr_ IMFMediaBuffer ** ppBuffer );
STDAPI MFCreateWICBitmapBuffer(
_In_ REFIID riid,
_In_ IUnknown * punkSurface,
_Outptr_ IMFMediaBuffer ** ppBuffer
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI
MFCreateDXGISurfaceBuffer(
_In_ REFIID riid,
_In_ IUnknown* punkSurface,
_In_ UINT uSubresourceIndex,
_In_ BOOL fBottomUpWhenLinear,
_Outptr_ IMFMediaBuffer** ppBuffer
);
STDAPI MFCreateVideoSampleAllocatorEx(
_In_ REFIID riid,
_Outptr_ void** ppSampleAllocator
);
STDAPI
MFCreateDXGIDeviceManager(
_Out_ UINT* resetToken,
_Outptr_ IMFDXGIDeviceManager** ppDeviceManager
);
#define MF_E_DXGI_DEVICE_NOT_INITIALIZED ((HRESULT)0x80041000L) // DXVA2_E_NOT_
INITIALIZED
#define MF_E_DXGI_NEW_VIDEO_DEVICE ((HRESULT)0x80041001L) // DXVA2_E_NEW_
VIDEO_DEVICE
#define MF_E_DXGI_VIDEO_DEVICE_LOCKED ((HRESULT)0x80041002L) // DXVA2_E_VIDE
O_DEVICE_LOCKED
// //
// Create an aligned memory buffer. // Create an aligned memory buffer.
// The following constants were chosen for parity with the alignment constants // The following constants were chosen for parity with the alignment constants
// in ntioapi.h // in ntioapi.h
// //
#define MF_1_BYTE_ALIGNMENT 0x00000000 #define MF_1_BYTE_ALIGNMENT 0x00000000
#define MF_2_BYTE_ALIGNMENT 0x00000001 #define MF_2_BYTE_ALIGNMENT 0x00000001
#define MF_4_BYTE_ALIGNMENT 0x00000003 #define MF_4_BYTE_ALIGNMENT 0x00000003
#define MF_8_BYTE_ALIGNMENT 0x00000007 #define MF_8_BYTE_ALIGNMENT 0x00000007
#define MF_16_BYTE_ALIGNMENT 0x0000000f #define MF_16_BYTE_ALIGNMENT 0x0000000f
#define MF_32_BYTE_ALIGNMENT 0x0000001f #define MF_32_BYTE_ALIGNMENT 0x0000001f
#define MF_64_BYTE_ALIGNMENT 0x0000003f #define MF_64_BYTE_ALIGNMENT 0x0000003f
#define MF_128_BYTE_ALIGNMENT 0x0000007f #define MF_128_BYTE_ALIGNMENT 0x0000007f
#define MF_256_BYTE_ALIGNMENT 0x000000ff #define MF_256_BYTE_ALIGNMENT 0x000000ff
#define MF_512_BYTE_ALIGNMENT 0x000001ff #define MF_512_BYTE_ALIGNMENT 0x000001ff
STDAPI MFCreateAlignedMemoryBuffer( STDAPI MFCreateAlignedMemoryBuffer(
__in DWORD cbMaxLength, _In_ DWORD cbMaxLength,
__in DWORD cbAligment, _In_ DWORD cbAligment,
__out IMFMediaBuffer ** ppBuffer ); _Out_ IMFMediaBuffer ** ppBuffer );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// This GUID is used in IMFGetService::GetService calls to retrieve // This GUID is used in IMFGetService::GetService calls to retrieve
// interfaces from the buffer. Its value is defined in evr.h // interfaces from the buffer. Its value is defined in evr.h
// //
EXTERN_C const GUID MR_BUFFER_SERVICE; EXTERN_C const GUID MR_BUFFER_SERVICE;
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
///////////////////////////////// Events ////////////////////////////// ///////////////////////////////// Events //////////////////////////////
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// //
// Instantiates the MF-provided Media Event implementation. // Instantiates the MF-provided Media Event implementation.
// //
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFCreateMediaEvent( STDAPI MFCreateMediaEvent(
__in MediaEventType met, _In_ MediaEventType met,
__in REFGUID guidExtendedType, _In_ REFGUID guidExtendedType,
__in HRESULT hrStatus, _In_ HRESULT hrStatus,
__in_opt const PROPVARIANT * pvValue, _In_opt_ const PROPVARIANT * pvValue,
__out IMFMediaEvent ** ppEvent ); _Out_ IMFMediaEvent ** ppEvent );
// //
// Instantiates an object that implements IMFMediaEventQueue. // Instantiates an object that implements IMFMediaEventQueue.
// Components that provide an IMFMediaEventGenerator can use this object // Components that provide an IMFMediaEventGenerator can use this object
// internally to do their Media Event Generator work for them. // internally to do their Media Event Generator work for them.
// IMFMediaEventGenerator calls should be forwarded to the similar call // IMFMediaEventGenerator calls should be forwarded to the similar call
// on this object's IMFMediaEventQueue interface (e.g. BeginGetEvent, // on this object's IMFMediaEventQueue interface (e.g. BeginGetEvent,
// EndGetEvent), and the various IMFMediaEventQueue::QueueEventXXX methods // EndGetEvent), and the various IMFMediaEventQueue::QueueEventXXX methods
// can be used to queue events that the caller will consume. // can be used to queue events that the caller will consume.
// //
STDAPI MFCreateEventQueue( STDAPI MFCreateEventQueue(
__out IMFMediaEventQueue **ppMediaEventQueue ); _Out_ IMFMediaEventQueue **ppMediaEventQueue );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// Event attributes // Event attributes
// Some of the common Media Foundation events have associated attributes // Some of the common Media Foundation events have associated attributes
// that go in their IMFAttributes stores // that go in their IMFAttributes stores
// //
// //
// MESessionCapabilitiesChanged attributes // MESessionCapabilitiesChanged attributes
// //
skipping to change at line 413 skipping to change at line 652
// Type: UINT32 // Type: UINT32
DEFINE_GUID(MF_EVENT_SESSIONCAPS, DEFINE_GUID(MF_EVENT_SESSIONCAPS,
0x7e5ebcd0, 0x11b8, 0x4abe, 0xaf, 0xad, 0x10, 0xf6, 0x59, 0x9a, 0x7f, 0x42); 0x7e5ebcd0, 0x11b8, 0x4abe, 0xaf, 0xad, 0x10, 0xf6, 0x59, 0x9a, 0x7f, 0x42);
// MF_EVENT_SESSIONCAPS_DELTA {7E5EBCD1-11B8-4abe-AFAD-10F6599A7F42} // MF_EVENT_SESSIONCAPS_DELTA {7E5EBCD1-11B8-4abe-AFAD-10F6599A7F42}
// Type: UINT32 // Type: UINT32
DEFINE_GUID(MF_EVENT_SESSIONCAPS_DELTA, DEFINE_GUID(MF_EVENT_SESSIONCAPS_DELTA,
0x7e5ebcd1, 0x11b8, 0x4abe, 0xaf, 0xad, 0x10, 0xf6, 0x59, 0x9a, 0x7f, 0x42); 0x7e5ebcd1, 0x11b8, 0x4abe, 0xaf, 0xad, 0x10, 0xf6, 0x59, 0x9a, 0x7f, 0x42);
// Session capabilities bitflags // Session capabilities bitflags
#define MFSESSIONCAP_START 0x00000001 #define MFSESSIONCAP_START 0x00000001
#define MFSESSIONCAP_SEEK 0x00000002 #define MFSESSIONCAP_SEEK 0x00000002
#define MFSESSIONCAP_PAUSE 0x00000004 #define MFSESSIONCAP_PAUSE 0x00000004
#define MFSESSIONCAP_RATE_FORWARD 0x00000010 #define MFSESSIONCAP_RATE_FORWARD 0x00000010
#define MFSESSIONCAP_RATE_REVERSE 0x00000020 #define MFSESSIONCAP_RATE_REVERSE 0x00000020
#define MFSESSIONCAP_DOES_NOT_USE_NETWORK 0x00000040
// //
// MESessionTopologyStatus attributes // MESessionTopologyStatus attributes
// //
// Possible values for MF_EVENT_TOPOLOGY_STATUS attribute. // Possible values for MF_EVENT_TOPOLOGY_STATUS attribute.
// //
// For a given topology, these status values will arrive via // For a given topology, these status values will arrive via
// MESessionTopologyStatus in the order below. // MESessionTopologyStatus in the order below.
// //
skipping to change at line 568 skipping to change at line 808
// //
// MESinkInvalidated and MESessionStreamSinkFormatChanged attributes // MESinkInvalidated and MESessionStreamSinkFormatChanged attributes
// //
// MF_EVENT_OUTPUT_NODE {830f1a8b-c060-46dd-a801-1c95dec9b107} // MF_EVENT_OUTPUT_NODE {830f1a8b-c060-46dd-a801-1c95dec9b107}
// Type: UINT64 // Type: UINT64
DEFINE_GUID(MF_EVENT_OUTPUT_NODE, DEFINE_GUID(MF_EVENT_OUTPUT_NODE,
0x830f1a8b, 0xc060, 0x46dd, 0xa8, 0x01, 0x1c, 0x95, 0xde, 0xc9, 0xb1, 0x07); 0x830f1a8b, 0xc060, 0x46dd, 0xa8, 0x01, 0x1c, 0x95, 0xde, 0xc9, 0xb1, 0x07);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
// //
// METransformNeedInput attributes // METransformNeedInput attributes
// //
// MF_EVENT_MFT_INPUT_STREAM_ID {F29C2CCA-7AE6-42d2-B284-BF837CC874E2} // MF_EVENT_MFT_INPUT_STREAM_ID {F29C2CCA-7AE6-42d2-B284-BF837CC874E2}
// Type: UINT32 // Type: UINT32
DEFINE_GUID(MF_EVENT_MFT_INPUT_STREAM_ID, DEFINE_GUID(MF_EVENT_MFT_INPUT_STREAM_ID,
0xf29c2cca, 0x7ae6, 0x42d2, 0xb2, 0x84, 0xbf, 0x83, 0x7c, 0xc8, 0x74, 0xe2); 0xf29c2cca, 0x7ae6, 0x42d2, 0xb2, 0x84, 0xbf, 0x83, 0x7c, 0xc8, 0x74, 0xe2);
skipping to change at line 589 skipping to change at line 835
// METransformDrainComplete and METransformMarker attributes // METransformDrainComplete and METransformMarker attributes
// //
// MF_EVENT_MFT_CONTEXT {B7CD31F1-899E-4b41-80C9-26A896D32977} // MF_EVENT_MFT_CONTEXT {B7CD31F1-899E-4b41-80C9-26A896D32977}
// Type: UINT64 // Type: UINT64
DEFINE_GUID(MF_EVENT_MFT_CONTEXT, DEFINE_GUID(MF_EVENT_MFT_CONTEXT,
0xb7cd31f1, 0x899e, 0x4b41, 0x80, 0xc9, 0x26, 0xa8, 0x96, 0xd3, 0x29, 0x77); 0xb7cd31f1, 0x899e, 0x4b41, 0x80, 0xc9, 0x26, 0xa8, 0x96, 0xd3, 0x29, 0x77);
#endif // (WINVER >= _WIN32_WINNT_WIN7) #endif // (WINVER >= _WIN32_WINNT_WIN7)
#if (WINVER >= _WIN32_WINNT_WINBLUE)
//
// MEContentProtectionMetadata attributes
//
// MF_EVENT_STREAM_METADATA_KEYDATA {CD59A4A1-4A3B-4BBD-8665-72A40FBEA776}
// Type: BLOB
DEFINE_GUID(MF_EVENT_STREAM_METADATA_KEYDATA,
0xcd59a4a1, 0x4a3b, 0x4bbd, 0x86, 0x65, 0x72, 0xa4, 0xf, 0xbe, 0xa7, 0x76);
// MF_EVENT_STREAM_METADATA_CONTENT_KEYIDS {5063449D-CC29-4FC6-A75A-D247B35AF85C
}
// Type: BLOB
DEFINE_GUID(MF_EVENT_STREAM_METADATA_CONTENT_KEYIDS,
0x5063449d, 0xcc29, 0x4fc6, 0xa7, 0x5a, 0xd2, 0x47, 0xb3, 0x5a, 0xf8, 0x5c);
// MF_EVENT_STREAM_METADATA_SYSTEMID {1EA2EF64-BA16-4A36-8719-FE7560BA32AD}
// Type: BLOB
DEFINE_GUID(MF_EVENT_STREAM_METADATA_SYSTEMID,
0x1ea2ef64, 0xba16, 0x4a36, 0x87, 0x19, 0xfe, 0x75, 0x60, 0xba, 0x32, 0xad);
#endif // (WINVER >= _WIN32_WINNT_WINBLUE)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// Samples ////////////////////////////////////// /////////////////////////////// Samples //////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// Creates an instance of the Media Foundation implementation of IMFSample // Creates an instance of the Media Foundation implementation of IMFSample
// //
STDAPI MFCreateSample( __out IMFSample **ppIMFSample );
STDAPI MFCreateSample( _Out_ IMFSample **ppIMFSample );
// //
// Sample attributes // Sample attributes
// These are the well-known attributes that can be present on an MF Sample's // These are the well-known attributes that can be present on an MF Sample's
// IMFAttributes store // IMFAttributes store
// //
// MFSampleExtension_CleanPoint {9cdf01d8-a0f0-43ba-b077-eaa06cbd728a} // MFSampleExtension_CleanPoint {9cdf01d8-a0f0-43ba-b077-eaa06cbd728a}
// Type: UINT32 // Type: UINT32
// If present and nonzero, indicates that the sample is a clean point (key // If present and nonzero, indicates that the sample is a clean point (key
skipping to change at line 628 skipping to change at line 897
0x9cdf01d9, 0xa0f0, 0x43ba, 0xb0, 0x77, 0xea, 0xa0, 0x6c, 0xbd, 0x72, 0x8a); 0x9cdf01d9, 0xa0f0, 0x43ba, 0xb0, 0x77, 0xea, 0xa0, 0x6c, 0xbd, 0x72, 0x8a);
// MFSampleExtension_Token {8294da66-f328-4805-b551-00deb4c57a61} // MFSampleExtension_Token {8294da66-f328-4805-b551-00deb4c57a61}
// Type: IUNKNOWN // Type: IUNKNOWN
// When an IMFMediaStream delivers a sample via MEMediaStream, this attribute // When an IMFMediaStream delivers a sample via MEMediaStream, this attribute
// should be set to the IUnknown *pToken argument that was passed with the // should be set to the IUnknown *pToken argument that was passed with the
// IMFMediaStream::RequestSample call to which this sample corresponds. // IMFMediaStream::RequestSample call to which this sample corresponds.
DEFINE_GUID(MFSampleExtension_Token, DEFINE_GUID(MFSampleExtension_Token,
0x8294da66, 0xf328, 0x4805, 0xb5, 0x51, 0x00, 0xde, 0xb4, 0xc5, 0x7a, 0x61); 0x8294da66, 0xf328, 0x4805, 0xb5, 0x51, 0x00, 0xde, 0xb4, 0xc5, 0x7a, 0x61);
// MFSampleExtension_DecodeTimestamp {73A954D4-09E2-4861-BEFC-94BD97C08E6E}
// Type : UINT64
// If present, contains the DTS (Decoding Time Stamp) of the sample.
DEFINE_GUID(MFSampleExtension_DecodeTimestamp,
0x73a954d4, 0x9e2, 0x4861, 0xbe, 0xfc, 0x94, 0xbd, 0x97, 0xc0, 0x8e, 0x6e);
// MFSampleExtension_VideoEncodeQP {B2EFE478-F979-4C66-B95E-EE2B82C82F36}
// Type: UINT64
// Used by video encoders to specify the QP used to encode the output sample.
DEFINE_GUID(MFSampleExtension_VideoEncodeQP,
0xb2efe478, 0xf979, 0x4c66, 0xb9, 0x5e, 0xee, 0x2b, 0x82, 0xc8, 0x2f, 0x36);
// MFSampleExtension_VideoEncPictureType {973704E6-CD14-483C-8F20-C9FC0928BAD5}
// Type: UINT32
// Used by video encoders to specify the output sample's picture type.
DEFINE_GUID(MFSampleExtension_VideoEncodePictureType,
0x973704e6, 0xcd14, 0x483c, 0x8f, 0x20, 0xc9, 0xfc, 0x9, 0x28, 0xba, 0xd5);
// MFSampleExtension_FrameCorruption {B4DD4A8C-0BEB-44C4-8B75-B02B913B04F0}
// Type: UINT32
// Indicates whether the frame in the sample has corruption or not
// value 0 indicates that there is no corruption, or it is unknown
// Value 1 indicates that some corruption was detected e.g, during decoding
DEFINE_GUID(MFSampleExtension_FrameCorruption,
0xb4dd4a8c, 0xbeb, 0x44c4, 0x8b, 0x75, 0xb0, 0x2b, 0x91, 0x3b, 0x4, 0xf0);
/////////////////////////////////////////////////////////////////////////////
// //
// The following four sample attributes are used for encrypted samples // The following sample attributes are used for encrypted samples
// //
DEFINE_GUID(MFSampleExtension_DescrambleData, // UINT64 /////////////////////////////////////////////////////////////////////////////
// MFSampleExtension_DescrambleData {43483BE6-4903-4314-B032-2951365936FC}
// Type: UINT64
DEFINE_GUID(MFSampleExtension_DescrambleData,
0x43483be6, 0x4903, 0x4314, 0xb0, 0x32, 0x29, 0x51, 0x36, 0x59, 0x36, 0xfc); 0x43483be6, 0x4903, 0x4314, 0xb0, 0x32, 0x29, 0x51, 0x36, 0x59, 0x36, 0xfc);
DEFINE_GUID(MFSampleExtension_SampleKeyID, // UINT32
// MFSampleExtension_SampleKeyID {9ED713C8-9B87-4B26-8297-A93B0C5A8ACC}
// Type: UINT32
DEFINE_GUID(MFSampleExtension_SampleKeyID,
0x9ed713c8, 0x9b87, 0x4b26, 0x82, 0x97, 0xa9, 0x3b, 0x0c, 0x5a, 0x8a, 0xcc); 0x9ed713c8, 0x9b87, 0x4b26, 0x82, 0x97, 0xa9, 0x3b, 0x0c, 0x5a, 0x8a, 0xcc);
DEFINE_GUID(MFSampleExtension_GenKeyFunc, // UINT64
// MFSampleExtension_GenKeyFunc {441CA1EE-6B1F-4501-903A-DE87DF42F6ED}
// Type: UINT64
DEFINE_GUID(MFSampleExtension_GenKeyFunc,
0x441ca1ee, 0x6b1f, 0x4501, 0x90, 0x3a, 0xde, 0x87, 0xdf, 0x42, 0xf6, 0xed); 0x441ca1ee, 0x6b1f, 0x4501, 0x90, 0x3a, 0xde, 0x87, 0xdf, 0x42, 0xf6, 0xed);
DEFINE_GUID(MFSampleExtension_GenKeyCtx, // UINT64
// MFSampleExtension_GenKeyCtx {188120CB-D7DA-4B59-9B3E-9252FD37301C}
// Type: UINT64
DEFINE_GUID(MFSampleExtension_GenKeyCtx,
0x188120cb, 0xd7da, 0x4b59, 0x9b, 0x3e, 0x92, 0x52, 0xfd, 0x37, 0x30, 0x1c); 0x188120cb, 0xd7da, 0x4b59, 0x9b, 0x3e, 0x92, 0x52, 0xfd, 0x37, 0x30, 0x1c);
DEFINE_GUID(MFSampleExtension_PacketCrossOffsets, // BLOB
// MFSampleExtension_PacketCrossOffsets {2789671D-389F-40BB-90D9-C282F77F9ABD}
// Type: BLOB
DEFINE_GUID(MFSampleExtension_PacketCrossOffsets,
0x2789671d, 0x389f, 0x40bb, 0x90, 0xd9, 0xc2, 0x82, 0xf7, 0x7f, 0x9a, 0xbd); 0x2789671d, 0x389f, 0x40bb, 0x90, 0xd9, 0xc2, 0x82, 0xf7, 0x7f, 0x9a, 0xbd);
// MFSampleExtension_Encryption_SampleID {6698B84E-0AFA-4330-AEB2-1C0A98D7A44D}
// Type: UINT64
DEFINE_GUID(MFSampleExtension_Encryption_SampleID,
0x6698b84e, 0x0afa, 0x4330, 0xae, 0xb2, 0x1c, 0x0a, 0x98, 0xd7, 0xa4, 0x4d);
// MFSampleExtension_Encryption_KeyID {76376591-795F-4DA1-86ED-9D46ECA109A9}
// Type: BLOB
DEFINE_GUID(MFSampleExtension_Encryption_KeyID,
0x76376591, 0x795f, 0x4da1, 0x86, 0xed, 0x9d, 0x46, 0xec, 0xa1, 0x09, 0xa9);
// MFSampleExtension_Content_KeyID {C6C7F5B0-ACCA-415B-87D9-10441469EFC6}
// Type: GUID
DEFINE_GUID(MFSampleExtension_Content_KeyID,
0xc6c7f5b0, 0xacca, 0x415b, 0x87, 0xd9, 0x10, 0x44, 0x14, 0x69, 0xef, 0xc6);
// MFSampleExtension_Encryption_SubSampleMappingSplit {FE0254B9-2AA5-4EDC-99F7-1
7E89DBF9174}
// Type: BLOB
DEFINE_GUID(MFSampleExtension_Encryption_SubSampleMappingSplit,
0xfe0254b9, 0x2aa5, 0x4edc, 0x99, 0xf7, 0x17, 0xe8, 0x9d, 0xbf, 0x91, 0x74);
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// MFSample STANDARD EXTENSION ATTRIBUTE GUIDs // MFSample STANDARD EXTENSION ATTRIBUTE GUIDs
// //
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// {b1d5830a-deb8-40e3-90fa-389943716461} MFSampleExtension_Interlaced {UINT32 (BOOL)} // {b1d5830a-deb8-40e3-90fa-389943716461} MFSampleExtension_Interlaced {UINT32 (BOOL)}
DEFINE_GUID(MFSampleExtension_Interlaced, DEFINE_GUID(MFSampleExtension_Interlaced,
0xb1d5830a, 0xdeb8, 0x40e3, 0x90, 0xfa, 0x38, 0x99, 0x43, 0x71, 0x64, 0x61); 0xb1d5830a, 0xdeb8, 0x40e3, 0x90, 0xfa, 0x38, 0x99, 0x43, 0x71, 0x64, 0x61);
skipping to change at line 668 skipping to change at line 1000
0x304d257c, 0x7493, 0x4fbd, 0xb1, 0x49, 0x92, 0x28, 0xde, 0x8d, 0x9a, 0x99); 0x304d257c, 0x7493, 0x4fbd, 0xb1, 0x49, 0x92, 0x28, 0xde, 0x8d, 0x9a, 0x99);
// {9d85f816-658b-455a-bde0-9fa7e15ab8f9} MFSampleExtension_SingleField {UINT32 (BOOL)} // {9d85f816-658b-455a-bde0-9fa7e15ab8f9} MFSampleExtension_SingleField {UINT32 (BOOL)}
DEFINE_GUID(MFSampleExtension_SingleField, DEFINE_GUID(MFSampleExtension_SingleField,
0x9d85f816, 0x658b, 0x455a, 0xbd, 0xe0, 0x9f, 0xa7, 0xe1, 0x5a, 0xb8, 0xf9); 0x9d85f816, 0x658b, 0x455a, 0xbd, 0xe0, 0x9f, 0xa7, 0xe1, 0x5a, 0xb8, 0xf9);
// {6852465a-ae1c-4553-8e9b-c3420fcb1637} MFSampleExtension_DerivedFromTopFiel d {UINT32 (BOOL)} // {6852465a-ae1c-4553-8e9b-c3420fcb1637} MFSampleExtension_DerivedFromTopFiel d {UINT32 (BOOL)}
DEFINE_GUID(MFSampleExtension_DerivedFromTopField, DEFINE_GUID(MFSampleExtension_DerivedFromTopField,
0x6852465a, 0xae1c, 0x4553, 0x8e, 0x9b, 0xc3, 0x42, 0x0f, 0xcb, 0x16, 0x37); 0x6852465a, 0xae1c, 0x4553, 0x8e, 0x9b, 0xc3, 0x42, 0x0f, 0xcb, 0x16, 0x37);
// MFSampleExtension_MeanAbsoluteDifference {1cdbde11-08b4-4311-a6dd-0f9f371907a
a}
// Type: UINT32
DEFINE_GUID(MFSampleExtension_MeanAbsoluteDifference,
0x1cdbde11, 0x08b4, 0x4311, 0xa6, 0xdd, 0x0f, 0x9f, 0x37, 0x19, 0x07, 0xaa);
// MFSampleExtension_LongTermReferenceFrameInfo {9154733f-e1bd-41bf-81d3-fcd918f
71332}
// Type: UINT32
DEFINE_GUID(MFSampleExtension_LongTermReferenceFrameInfo,
0x9154733f, 0xe1bd, 0x41bf, 0x81, 0xd3, 0xfc, 0xd9, 0x18, 0xf7, 0x13, 0x32);
// MFSampleExtension_ROIRectangle {3414a438-4998-4d2c-be82-be3ca0b24d43}
// Type: BLOB
DEFINE_GUID(MFSampleExtension_ROIRectangle,
0x3414a438, 0x4998, 0x4d2c, 0xbe, 0x82, 0xbe, 0x3c, 0xa0, 0xb2, 0x4d, 0x43);
typedef struct _ROI_AREA {
RECT rect;
INT32 QPDelta;
} ROI_AREA, *PROI_AREA;
///////////////////////////////////////////////////////////////////////////////
/// These are the attribute GUIDs that need to be used by MFT0 to provide
/// thumbnail support. We are declaring these in our internal idl first and
/// once we pass API spec review, we can move it to the public header.
///////////////////////////////////////////////////////////////////////////////
// MFSampleExtension_PhotoThumbnail
// {74BBC85C-C8BB-42DC-B586DA17FFD35DCC}
// Type: IUnknown
// If this attribute is set on the IMFSample provided by the MFT0, this will con
tain the IMFMediaBuffer which contains
// the Photo Thumbnail as configured using the KSPROPERTYSETID_ExtendedCameraCon
trol.
DEFINE_GUID(MFSampleExtension_PhotoThumbnail,
0x74BBC85C, 0xC8BB, 0x42DC, 0xB5, 0x86, 0xDA, 0x17, 0xFF, 0xD3, 0x5D, 0xCC);
// MFSampleExtension_PhotoThumbnailMediaType
// {61AD5420-EBF8-4143-89AF6BF25F672DEF}
// Type: IUnknown
// This attribute will contain the IMFMediaType which describes the image format
type contained in the
// MFSampleExtension_PhotoThumbnail attribute. If the MFSampleExtension_PhotoTh
umbnail attribute
// is present on the photo sample, the MFSampleExtension_PhotoThumbnailMediaType
is required.
DEFINE_GUID(MFSampleExtension_PhotoThumbnailMediaType,
0x61AD5420, 0xEBF8, 0x4143, 0x89, 0xAF, 0x6B, 0xF2, 0x5F, 0x67, 0x2D, 0xEF);
// MFSampleExtension_CaptureMetadata
// Type: IUnknown (IMFAttributes)
// This is the IMFAttributes store for all the metadata related to the capture
// pipeline. It can be potentially present on any IMFSample.
DEFINE_GUID(MFSampleExtension_CaptureMetadata,
0x2EBE23A8, 0xFAF5, 0x444A, 0xA6, 0xA2, 0xEB, 0x81, 0x08, 0x80, 0xAB, 0x5D);
// Put all MF_CAPTURE_METADATA_* here.
// {0F9DD6C6-6003-45D8-BD59-F1F53E3D04E8} MF_CAPTURE_METADATA_PHOTO_FRAME_FLAS
H {UINT32}
// 0 - No flash triggered on this frame.
// non-0 - Flash triggered on this frame.
// Do not explicitly check for a value of 1 here, we may overload this to
// indicate special types of flash going forward (applications should only
// check for != 0 to indicate flash took place).
DEFINE_GUID(MF_CAPTURE_METADATA_PHOTO_FRAME_FLASH,
0x0F9DD6C6, 0x6003, 0x45D8, 0xBD, 0x59, 0xF1, 0xF5, 0x3E, 0x3D, 0x04, 0xE8);
//////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Attributes //////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Attributes ////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
STDAPI STDAPI
MFCreateAttributes( MFCreateAttributes(
__out IMFAttributes** ppMFAttributes, _Out_ IMFAttributes** ppMFAttributes,
__in UINT32 cInitialSize _In_ UINT32 cInitialSize
); );
STDAPI STDAPI
MFInitAttributesFromBlob( MFInitAttributesFromBlob(
__in IMFAttributes* pAttributes, _In_ IMFAttributes* pAttributes,
__in_bcount(cbBufSize) const UINT8* pBuf, _In_reads_bytes_(cbBufSize) const UINT8* pBuf,
__in UINT cbBufSize _In_ UINT cbBufSize
); );
STDAPI STDAPI
MFGetAttributesAsBlobSize( MFGetAttributesAsBlobSize(
__in IMFAttributes* pAttributes, _In_ IMFAttributes* pAttributes,
__out UINT32* pcbBufSize _Out_ UINT32* pcbBufSize
); );
STDAPI STDAPI
MFGetAttributesAsBlob( MFGetAttributesAsBlob(
__in IMFAttributes* pAttributes, _In_ IMFAttributes* pAttributes,
__out_bcount(cbBufSize) UINT8* pBuf, _Out_writes_bytes_(cbBufSize) UINT8* pBuf,
__in UINT cbBufSize _In_ UINT cbBufSize
); );
//////////////////////////////////////////////////////////////////////////////// /////////////////////////////// MFT Register & Enum /////////////////////////// / //////////////////////////////////////////////////////////////////////////////// /////////////////////////////// MFT Register & Enum /////////////////////////// /
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// MFT Registry categories // MFT Registry categories
// //
#ifdef MF_INIT_GUIDS #ifdef MF_INIT_GUIDS
skipping to change at line 750 skipping to change at line 1141
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
// {302EA3FC-AA5F-47f9-9F7A-C2188BB163021}...MFT_CATEGORY_VIDEO_PROCESSOR // {302EA3FC-AA5F-47f9-9F7A-C2188BB163021}...MFT_CATEGORY_VIDEO_PROCESSOR
DEFINE_GUID(MFT_CATEGORY_VIDEO_PROCESSOR, DEFINE_GUID(MFT_CATEGORY_VIDEO_PROCESSOR,
0x302ea3fc, 0xaa5f, 0x47f9, 0x9f, 0x7a, 0xc2, 0x18, 0x8b, 0xb1, 0x63, 0x2); 0x302ea3fc, 0xaa5f, 0x47f9, 0x9f, 0x7a, 0xc2, 0x18, 0x8b, 0xb1, 0x63, 0x2);
#endif // (WINVER >= _WIN32_WINNT_WIN7) #endif // (WINVER >= _WIN32_WINNT_WIN7)
// {90175d57-b7ea-4901-aeb3-933a8747756f} MFT_CATEGORY_OTHER // {90175d57-b7ea-4901-aeb3-933a8747756f} MFT_CATEGORY_OTHER
DEFINE_GUID(MFT_CATEGORY_OTHER, DEFINE_GUID(MFT_CATEGORY_OTHER,
0x90175d57, 0xb7ea, 0x4901, 0xae, 0xb3, 0x93, 0x3a, 0x87, 0x47, 0x75, 0x6f); 0x90175d57, 0xb7ea, 0x4901, 0xae, 0xb3, 0x93, 0x3a, 0x87, 0x47, 0x75, 0x6f);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// "Flags" is for future expansion - for now must be 0 // "Flags" is for future expansion - for now must be 0
// //
STDAPI STDAPI
MFTRegister( MFTRegister(
__in CLSID clsidMFT, _In_ CLSID clsidMFT,
__in GUID guidCategory, _In_ GUID guidCategory,
__in LPWSTR pszName, _In_ LPWSTR pszName,
__in UINT32 Flags, _In_ UINT32 Flags,
__in UINT32 cInputTypes, _In_ UINT32 cInputTypes,
__in_ecount_opt(cInputTypes) MFT_REGISTER_TYPE_INFO* pInputTypes, _In_reads_opt_(cInputTypes) MFT_REGISTER_TYPE_INFO* pInputTypes,
__in UINT32 cOutputTypes, _In_ UINT32 cOutputTypes,
__in_ecount_opt(cOutputTypes) MFT_REGISTER_TYPE_INFO* pOutputTypes, _In_reads_opt_(cOutputTypes) MFT_REGISTER_TYPE_INFO* pOutputTypes,
__in_opt IMFAttributes* pAttributes _In_opt_ IMFAttributes* pAttributes
); );
STDAPI STDAPI
MFTUnregister( MFTUnregister(
__in CLSID clsidMFT _In_ CLSID clsidMFT
); );
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
// Register an MFT class in-process // Register an MFT class in-process
STDAPI STDAPI
MFTRegisterLocal( MFTRegisterLocal(
__in IClassFactory* pClassFactory, _In_ IClassFactory* pClassFactory,
__in REFGUID guidCategory, _In_ REFGUID guidCategory,
__in LPCWSTR pszName, _In_ LPCWSTR pszName,
__in UINT32 Flags, _In_ UINT32 Flags,
__in UINT32 cInputTypes, _In_ UINT32 cInputTypes,
__in_ecount_opt(cInputTypes)const MFT_REGISTER_TYPE_INFO* pInputTypes, _In_reads_opt_(cInputTypes)const MFT_REGISTER_TYPE_INFO* pInputTypes,
__in UINT32 cOutputTypes, _In_ UINT32 cOutputTypes,
__in_ecount_opt(cOutputTypes)const MFT_REGISTER_TYPE_INFO* pOutputTypes _In_reads_opt_(cOutputTypes)const MFT_REGISTER_TYPE_INFO* pOutputTypes
); );
// Unregister locally registered MFT // Unregister locally registered MFT
// If pClassFactory is NULL all local MFTs are unregistered // If pClassFactory is NULL all local MFTs are unregistered
STDAPI STDAPI
MFTUnregisterLocal( MFTUnregisterLocal(
__in_opt IClassFactory * pClassFactory _In_opt_ IClassFactory * pClassFactory
); );
// Register an MFT class in-process, by CLSID // Register an MFT class in-process, by CLSID
STDAPI STDAPI
MFTRegisterLocalByCLSID( MFTRegisterLocalByCLSID(
__in REFCLSID clisdMFT, _In_ REFCLSID clisdMFT,
__in REFGUID guidCategory, _In_ REFGUID guidCategory,
__in LPCWSTR pszName, _In_ LPCWSTR pszName,
__in UINT32 Flags, _In_ UINT32 Flags,
__in UINT32 cInputTypes, _In_ UINT32 cInputTypes,
__in_ecount_opt(cInputTypes)const MFT_REGISTER_TYPE_INFO* pInputTypes, _In_reads_opt_(cInputTypes)const MFT_REGISTER_TYPE_INFO* pInputTypes,
__in UINT32 cOutputTypes, _In_ UINT32 cOutputTypes,
__in_ecount_opt(cOutputTypes)const MFT_REGISTER_TYPE_INFO* pOutputTypes _In_reads_opt_(cOutputTypes)const MFT_REGISTER_TYPE_INFO* pOutputTypes
); );
// Unregister locally registered MFT by CLSID // Unregister locally registered MFT by CLSID
STDAPI STDAPI
MFTUnregisterLocalByCLSID( MFTUnregisterLocalByCLSID(
__in CLSID clsidMFT _In_ CLSID clsidMFT
); );
#endif // (WINVER >= _WIN32_WINNT_WIN7) #endif // (WINVER >= _WIN32_WINNT_WIN7)
// //
// result *ppclsidMFT must be freed with CoTaskMemFree. // result *ppclsidMFT must be freed with CoTaskMemFree.
// //
STDAPI STDAPI
MFTEnum( MFTEnum(
__in GUID guidCategory, _In_ GUID guidCategory,
__in UINT32 Flags, _In_ UINT32 Flags,
__in_opt MFT_REGISTER_TYPE_INFO* pInputType, _In_opt_ MFT_REGISTER_TYPE_INFO* pInputType,
__in_opt MFT_REGISTER_TYPE_INFO* pOutputType, _In_opt_ MFT_REGISTER_TYPE_INFO* pOutputType,
__in_opt IMFAttributes* pAttributes, _In_opt_ IMFAttributes* pAttributes,
__deref_out_ecount(*pcMFTs) CLSID** ppclsidMFT, // must be freed _Outptr_result_buffer_(*pcMFTs) CLSID** ppclsidMFT, // must be f
with CoTaskMemFree reed with CoTaskMemFree
__out UINT32* pcMFTs _Out_ UINT32* pcMFTs
); );
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
enum _MFT_ENUM_FLAG enum _MFT_ENUM_FLAG
{ {
MFT_ENUM_FLAG_SYNCMFT = 0x00000001, // Enumerates V1 MFTs. This is MFT_ENUM_FLAG_SYNCMFT = 0x00000001, // Enumerates V1
default. MFTs. This is default.
MFT_ENUM_FLAG_ASYNCMFT = 0x00000002, // Enumerates only software asy MFT_ENUM_FLAG_ASYNCMFT = 0x00000002, // Enumerates on
nc MFTs also known as V2 MFTs ly software async MFTs also known as V2 MFTs
MFT_ENUM_FLAG_HARDWARE = 0x00000004, // Enumerates V2 hardware async MFT_ENUM_FLAG_HARDWARE = 0x00000004, // Enumerates V2
MFTs hardware async MFTs
MFT_ENUM_FLAG_FIELDOFUSE = 0x00000008, // Enumerates MFTs that require MFT_ENUM_FLAG_FIELDOFUSE = 0x00000008, // Enumerates MF
unlocking Ts that require unlocking
MFT_ENUM_FLAG_LOCALMFT = 0x00000010, // Enumerates Locally (in-proce MFT_ENUM_FLAG_LOCALMFT = 0x00000010, // Enumerates Lo
ss) registered MFTs cally (in-process) registered MFTs
MFT_ENUM_FLAG_TRANSCODE_ONLY = 0x00000020, // Enumerates decoder MFTs used MFT_ENUM_FLAG_TRANSCODE_ONLY = 0x00000020, // Enumerates de
by transcode only coder MFTs used by transcode only
MFT_ENUM_FLAG_SORTANDFILTER = 0x00000040, // Apply system local, do not u MFT_ENUM_FLAG_SORTANDFILTER = 0x00000040, // Apply system
se and preferred sorting and filtering local, do not use and preferred sorting and filtering
MFT_ENUM_FLAG_ALL = 0x0000003F // Enumerates all MFTs includin MFT_ENUM_FLAG_SORTANDFILTER_APPROVED_ONLY = 0x000000C0, // Similar to MF
g SW and HW MFTs and applies filtering T_ENUM_FLAG_SORTANDFILTER, but apply a local policy of: MF_PLUGIN_CONTROL_POLICY
_USE_APPROVED_PLUGINS
MFT_ENUM_FLAG_SORTANDFILTER_WEB_ONLY = 0x00000140, // Similar to MF
T_ENUM_FLAG_SORTANDFILTER, but apply a local policy of: MF_PLUGIN_CONTROL_POLICY
_USE_WEB_PLUGINS
MFT_ENUM_FLAG_ALL = 0x0000003F // Enumerates al
l MFTs including SW and HW MFTs and applies filtering
}; };
// //
// result *pppMFTActivate must be freed with CoTaskMemFree. Each IMFActivate poi nter inside this // result *pppMFTActivate must be freed with CoTaskMemFree. Each IMFActivate poi nter inside this
// buffer should be released. // buffer should be released.
// //
STDAPI STDAPI
MFTEnumEx( MFTEnumEx(
__in GUID guidCate _In_ GUID guidCate
gory, gory,
__in UINT32 Flags, _In_ UINT32 Flags,
__in_opt const MFT_REGISTER_TYPE_INFO* pInputTy _In_opt_ const MFT_REGISTER_TYPE_INFO* pInputTy
pe, pe,
__in_opt const MFT_REGISTER_TYPE_INFO* pOutputT _In_opt_ const MFT_REGISTER_TYPE_INFO* pOutputT
ype, ype,
__deref_out_ecount(*pnumMFTActivate) IMFActivate*** pppMFTAc _Outptr_result_buffer_(*pnumMFTActivate) IMFActivate*** pppM
tivate, FTActivate,
__out UINT32* pnumMFTA _Out_ UINT32* pnumMFTA
ctivate ctivate
); );
#endif // (WINVER >= _WIN32_WINNT_WIN7) #endif // (WINVER >= _WIN32_WINNT_WIN7)
// //
// results *pszName, *ppInputTypes, and *ppOutputTypes must be freed with CoTask MemFree. // results *pszName, *ppInputTypes, and *ppOutputTypes must be freed with CoTask MemFree.
// *ppAttributes must be released. // *ppAttributes must be released.
// //
STDAPI STDAPI
MFTGetInfo( MFTGetInfo(
__in CLSID clsidMFT, _In_ CLSID clsidMFT,
__out_opt LPWSTR* pszName, _Out_opt_ LPWSTR* pszName,
__deref_opt_out_ecount(*pcInputTypes) MFT_REGISTER_TYPE_INFO** ppInputTy _Outptr_opt_result_buffer_(*pcInputTypes) MFT_REGISTER_TYPE_INFO** ppInp
pes, utTypes,
__out_opt UINT32* pcInputTy _Out_opt_ UINT32* pcInputTy
pes, pes,
__deref_opt_out_ecount(*pcOutputTypes) MFT_REGISTER_TYPE_INFO** ppOutputT _Outptr_opt_result_buffer_(*pcOutputTypes) MFT_REGISTER_TYPE_INFO** ppOut
ypes, putTypes,
__out_opt UINT32* pcOutputT _Out_opt_ UINT32* pcOutputT
ypes, ypes,
__deref_opt_out_opt IMFAttributes** ppAttribu _Outptr_opt_result_maybenull_ IMFAttributes**
tes ppAttributes
); );
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
// //
// Get the plugin control API // Get the plugin control API
// //
STDAPI STDAPI
MFGetPluginControl( MFGetPluginControl(
__out IMFPluginControl **ppPluginControl _Out_ IMFPluginControl **ppPluginControl
); );
// //
// Get MFT's merit - checking that is has a valid certificate // Get MFT's merit - checking that is has a valid certificate
// //
STDAPI STDAPI
MFGetMFTMerit( MFGetMFTMerit(
__inout IUnknown *pMFT, _Inout_ IUnknown *pMFT,
__in UINT32 cbVerifier, _In_ UINT32 cbVerifier,
__in_bcount(cbVerifier) const BYTE * verifier, _In_reads_bytes_(cbVerifier) const BYTE * verifier,
__out DWORD *merit _Out_ DWORD *merit
); );
#endif // (WINVER >= _WIN32_WINNT_WIN7) #endif // (WINVER >= _WIN32_WINNT_WIN7)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#if (WINVER >= _WIN32_WINNT_WIN8)
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI
MFRegisterLocalSchemeHandler(
_In_ PCWSTR szScheme,
_In_ IMFActivate* pActivate
);
STDAPI
MFRegisterLocalByteStreamHandler(
_In_ PCWSTR szFileExtension,
_In_ PCWSTR szMimeType,
_In_ IMFActivate* pActivate
);
//
// Wrap a bytestream so that calling Close() on the wrapper
// closes the wrapper but not the original bytestream. The
// original bytestream can then be passed to another
// media source for instance.
//
STDAPI
MFCreateMFByteStreamWrapper(
_In_ IMFByteStream* pStream,
_Out_ IMFByteStream** ppStreamWrapper
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
//
// Create a MF activate object that can instantiate media extension objects.
// The activate object supports both IMFActivate and IClassFactory.
//
STDAPI
MFCreateMediaExtensionActivate(
_In_ PCWSTR szActivatableClassId,
_In_opt_ IUnknown* pConfiguration,
_In_ REFIID riid,
_Outptr_ LPVOID* ppvObject
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#endif // (WINVER >= _WIN32_WINNT_WIN8)
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
//////////////////////////////////////////////////////////////////////////////// /////////////////////////////// MFT Attributes GUIDs ///////////////////////// /// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////// MFT Attributes GUIDs ///////////////////////// ///
// {53476A11-3F13-49fb-AC42-EE2733C96741} MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE {UIN T32 (BOOL)} // {53476A11-3F13-49fb-AC42-EE2733C96741} MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE {UIN T32 (BOOL)}
DEFINE_GUID(MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE, DEFINE_GUID(MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE,
0x53476a11, 0x3f13, 0x49fb, 0xac, 0x42, 0xee, 0x27, 0x33, 0xc9, 0x67, 0x41); 0x53476a11, 0x3f13, 0x49fb, 0xac, 0x42, 0xee, 0x27, 0x33, 0xc9, 0x67, 0x41);
//////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Media Type GUIDs //////////////////////////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Media Type GUIDs ////////////////////////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// GUIDs for media types // GUIDs for media types
// //
// //
// In MF, media types for uncompressed video formats MUST be composed from a Fou rCC or D3DFORMAT combined with // In MF, media types for uncompressed video formats MUST be composed from a Fou rCC or D3DFORMAT combined with
// the "base GUID" {00000000-0000-0010-8000-00AA00389B71} by replacing the initi al 32 bits with the FourCC/D3DFORMAT // the "base GUID" {00000000-0000-0010-8000-00AA00389B71} by replacing the initi al 32 bits with the FourCC/D3DFORMAT
skipping to change at line 918 skipping to change at line 1375
// the "base GUID" {00000000-0000-0010-8000-00AA00389B71} by replacing the initi al 32 bits with the FourCC/D3DFORMAT // the "base GUID" {00000000-0000-0010-8000-00AA00389B71} by replacing the initi al 32 bits with the FourCC/D3DFORMAT
// //
// Audio media types for types which already have a defined wFormatTag value can be constructed similarly, by // Audio media types for types which already have a defined wFormatTag value can be constructed similarly, by
// putting the wFormatTag (zero-extended to 32 bits) into the first 32 bits of t he base GUID. // putting the wFormatTag (zero-extended to 32 bits) into the first 32 bits of t he base GUID.
// //
// Compressed video or audio can also use any well-known GUID that exists, or ca n create a new GUID. // Compressed video or audio can also use any well-known GUID that exists, or ca n create a new GUID.
// //
// GUIDs for common media types are defined below. // GUIDs for common media types are defined below.
// //
// needed for the GUID definition macros below
#ifndef FCC #ifndef FCC
#define FCC(ch4) ((((DWORD)(ch4) & 0xFF) << 24) | \ #define FCC(ch4) ((((DWORD)(ch4) & 0xFF) << 24) | \
(((DWORD)(ch4) & 0xFF00) << 8) | \ (((DWORD)(ch4) & 0xFF00) << 8) | \
(((DWORD)(ch4) & 0xFF0000) >> 8) | \ (((DWORD)(ch4) & 0xFF0000) >> 8) | \
(((DWORD)(ch4) & 0xFF000000) >> 24)) (((DWORD)(ch4) & 0xFF000000) >> 24))
#endif #endif
// //
// this macro creates a media type GUID from a FourCC, D3DFMT, or WAVE_FORMAT // this macro creates a media type GUID from a FourCC, D3DFMT, or WAVE_FORMAT
// //
skipping to change at line 1003 skipping to change at line 1461
DEFINE_MEDIATYPE_GUID( MFVideoFormat_MSS1, FCC('MSS1') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_MSS1, FCC('MSS1') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_MSS2, FCC('MSS2') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_MSS2, FCC('MSS2') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_MPG1, FCC('MPG1') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_MPG1, FCC('MPG1') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVSL, FCC('dvsl') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVSL, FCC('dvsl') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVSD, FCC('dvsd') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVSD, FCC('dvsd') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVHD, FCC('dvhd') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVHD, FCC('dvhd') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DV25, FCC('dv25') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DV25, FCC('dv25') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DV50, FCC('dv50') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DV50, FCC('dv50') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVH1, FCC('dvh1') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVH1, FCC('dvh1') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVC, FCC('dvc ') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_DVC, FCC('dvc ') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_H264, FCC('H264') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_H264, FCC('H264') ); // assume MFVide oFormat_H264 is frame aligned. that is, each input sample has one complete compr essed frame (one frame picture, two field pictures or a single unpaired field pi cture)
DEFINE_MEDIATYPE_GUID( MFVideoFormat_MJPG, FCC('MJPG') ); DEFINE_MEDIATYPE_GUID( MFVideoFormat_MJPG, FCC('MJPG') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_420O, FCC('420O') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_HEVC, FCC('HEVC') );
DEFINE_MEDIATYPE_GUID( MFVideoFormat_HEVC_ES, FCC('HEVS') );
#if (WINVER >= _WIN32_WINNT_WIN8)
DEFINE_MEDIATYPE_GUID( MFVideoFormat_H263, FCC('H263') );
#endif // (WINVER >= _WIN32_WINNT_WIN8)
// //
// undef the local D3DFMT definitions to avoid later clashes with D3D headers // undef the local D3DFMT definitions to avoid later clashes with D3D headers
// //
#ifdef LOCAL_D3DFMT_DEFINES #ifdef LOCAL_D3DFMT_DEFINES
#undef D3DFMT_R8G8B8 #undef D3DFMT_R8G8B8
#undef D3DFMT_A8R8G8B8 #undef D3DFMT_A8R8G8B8
#undef D3DFMT_X8R8G8B8 #undef D3DFMT_X8R8G8B8
#undef D3DFMT_R5G6B5 #undef D3DFMT_R5G6B5
#undef D3DFMT_X1R5G5B5 #undef D3DFMT_X1R5G5B5
#undef D3DFMT_P8 #undef D3DFMT_P8
#undef LOCAL_D3DFMT_DEFINES #undef LOCAL_D3DFMT_DEFINES
#endif #endif
// assume MFVideoFormat_H264_ES may not be frame aligned. that is, each input sa
mple may have one partial frame,
// multiple frames, some frames plus some partial frame
// or more general, N.M frames, N is the integer part and M is the fractional pa
rt.
//
// {3F40F4F0-5622-4FF8-B6D8-A17A584BEE5E} MFVideoFormat_H264_ES
DEFINE_GUID(MFVideoFormat_H264_ES,
0x3f40f4f0, 0x5622, 0x4ff8, 0xb6, 0xd8, 0xa1, 0x7a, 0x58, 0x4b, 0xee, 0x5e);
// //
// some legacy formats that don't fit the common pattern // some legacy formats that don't fit the common pattern
// //
// {e06d8026-db46-11cf-b4d1-00805f6cbbea} MFVideoFormat_MPEG2 // {e06d8026-db46-11cf-b4d1-00805f6cbbea} MFVideoFormat_MPEG2
DEFINE_GUID(MFVideoFormat_MPEG2, DEFINE_GUID(MFVideoFormat_MPEG2,
0xe06d8026, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea); 0xe06d8026, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea);
#define MFVideoFormat_MPG2 MFVideoFormat_MPEG2 #define MFVideoFormat_MPG2 MFVideoFormat_MPEG2
skipping to change at line 1047 skipping to change at line 1520
DEFINE_MEDIATYPE_GUID( MFAudioFormat_DRM, WAVE_FORMAT_DRM ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_DRM, WAVE_FORMAT_DRM );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMAudioV8, WAVE_FORMAT_WMAUDIO2 ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMAudioV8, WAVE_FORMAT_WMAUDIO2 );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMAudioV9, WAVE_FORMAT_WMAUDIO3 ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMAudioV9, WAVE_FORMAT_WMAUDIO3 );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMAudio_Lossless, WAVE_FORMAT_WMAUDIO_LOSS LESS ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMAudio_Lossless, WAVE_FORMAT_WMAUDIO_LOSS LESS );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMASPDIF, WAVE_FORMAT_WMASPDIF ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_WMASPDIF, WAVE_FORMAT_WMASPDIF );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_MSP1, WAVE_FORMAT_WMAVOICE9 ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_MSP1, WAVE_FORMAT_WMAVOICE9 );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_MP3, WAVE_FORMAT_MPEGLAYER3 ) ; DEFINE_MEDIATYPE_GUID( MFAudioFormat_MP3, WAVE_FORMAT_MPEGLAYER3 ) ;
DEFINE_MEDIATYPE_GUID( MFAudioFormat_MPEG, WAVE_FORMAT_MPEG ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_MPEG, WAVE_FORMAT_MPEG );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_AAC, WAVE_FORMAT_MPEG_HEAAC ) ; DEFINE_MEDIATYPE_GUID( MFAudioFormat_AAC, WAVE_FORMAT_MPEG_HEAAC ) ;
DEFINE_MEDIATYPE_GUID( MFAudioFormat_ADTS, WAVE_FORMAT_MPEG_ADTS_AA C ); DEFINE_MEDIATYPE_GUID( MFAudioFormat_ADTS, WAVE_FORMAT_MPEG_ADTS_AA C );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_AMR_NB, WAVE_FORMAT_AMR_NB );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_AMR_WB, WAVE_FORMAT_AMR_WB );
DEFINE_MEDIATYPE_GUID( MFAudioFormat_AMR_WP, WAVE_FORMAT_AMR_WP );
// These audio types are not derived from an existing wFormatTag
DEFINE_GUID(MFAudioFormat_Dolby_AC3, // == MEDIASUBTYPE_DOLBY_AC3 defined in ksu
uids.h
0xe06d802c, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea);
DEFINE_GUID(MFAudioFormat_Dolby_DDPlus, // == MEDIASUBTYPE_DOLBY_DDPLUS defined
in wmcodecdsp.h
0xa7fb87af, 0x2d02, 0x42fb, 0xa4, 0xd4, 0x5, 0xcd, 0x93, 0x84, 0x3b, 0xdd);
// //
// MPEG-4 media types // MPEG-4 media types
// //
// {00000000-767a-494d-b478-f29d25dc9037} MFMPEG4Format_Base // {00000000-767a-494d-b478-f29d25dc9037} MFMPEG4Format_Base
DEFINE_GUID(MFMPEG4Format_Base, DEFINE_GUID(MFMPEG4Format_Base,
0x00000000, 0x767a, 0x494d, 0xb4, 0x78, 0xf2, 0x9d, 0x25, 0xdc, 0x90, 0x37); 0x00000000, 0x767a, 0x494d, 0xb4, 0x78, 0xf2, 0x9d, 0x25, 0xdc, 0x90, 0x37);
//////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Media Type Attributes GUIDs /////////////////// ///////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Media Type Attributes GUIDs /////////////////// /////////
skipping to change at line 1098 skipping to change at line 1580
// MF_MT_SAMPLE_SIZE is only valid if MF_MT_FIXED_SIZED_SAMPLES is TRUE // MF_MT_SAMPLE_SIZE is only valid if MF_MT_FIXED_SIZED_SAMPLES is TRUE
// //
// {dad3ab78-1990-408b-bce2-eba673dacc10} MF_MT_SAMPLE_SIZE {UIN T32} // {dad3ab78-1990-408b-bce2-eba673dacc10} MF_MT_SAMPLE_SIZE {UIN T32}
DEFINE_GUID(MF_MT_SAMPLE_SIZE, DEFINE_GUID(MF_MT_SAMPLE_SIZE,
0xdad3ab78, 0x1990, 0x408b, 0xbc, 0xe2, 0xeb, 0xa6, 0x73, 0xda, 0xcc, 0x10); 0xdad3ab78, 0x1990, 0x408b, 0xbc, 0xe2, 0xeb, 0xa6, 0x73, 0xda, 0xcc, 0x10);
// 4d3f7b23-d02f-4e6c-9bee-e4bf2c6c695d MF_MT_WRAPPED_TYPE {Blo b} // 4d3f7b23-d02f-4e6c-9bee-e4bf2c6c695d MF_MT_WRAPPED_TYPE {Blo b}
DEFINE_GUID(MF_MT_WRAPPED_TYPE, DEFINE_GUID(MF_MT_WRAPPED_TYPE,
0x4d3f7b23, 0xd02f, 0x4e6c, 0x9b, 0xee, 0xe4, 0xbf, 0x2c, 0x6c, 0x69, 0x5d); 0x4d3f7b23, 0xd02f, 0x4e6c, 0x9b, 0xee, 0xe4, 0xbf, 0x2c, 0x6c, 0x69, 0x5d);
#if (WINVER >= _WIN32_WINNT_WIN8)
//
// Media Type & Sample attributes for 3D Video
//
// {CB5E88CF-7B5B-476b-85AA-1CA5AE187555} MF_MT_VIDEO_3D
{UINT32 (BOOL)}
DEFINE_GUID( MF_MT_VIDEO_3D,
0xcb5e88cf, 0x7b5b, 0x476b, 0x85, 0xaa, 0x1c, 0xa5, 0xae, 0x18, 0x75, 0x55);
// Enum describing the packing for 3D video frames
typedef enum _MFVideo3DFormat {
MFVideo3DSampleFormat_BaseView = 0,
MFVideo3DSampleFormat_MultiView = 1,
MFVideo3DSampleFormat_Packed_LeftRight = 2,
MFVideo3DSampleFormat_Packed_TopBottom = 3,
} MFVideo3DFormat;
// {5315d8a0-87c5-4697-b793-666c67c49b} MF_MT_VIDEO_3D_FORMAT
{UINT32 (anyof MFVideo3DFormat)}
DEFINE_GUID(MF_MT_VIDEO_3D_FORMAT,
0x5315d8a0, 0x87c5, 0x4697, 0xb7, 0x93, 0x66, 0x6, 0xc6, 0x7c, 0x4, 0x9b);
// {BB077E8A-DCBF-42eb-AF60-418DF98AA495} MF_MT_VIDEO_3D_NUM_VIEW
{UINT32}
DEFINE_GUID( MF_MT_VIDEO_3D_NUM_VIEWS,
0xbb077e8a, 0xdcbf, 0x42eb, 0xaf, 0x60, 0x41, 0x8d, 0xf9, 0x8a, 0xa4, 0x95);
// {6D4B7BFF-5629-4404-948C-C634F4CE26D4} MF_MT_VIDEO_3D_LEFT_IS_BASE
{UINT32}
DEFINE_GUID( MF_MT_VIDEO_3D_LEFT_IS_BASE,
0x6d4b7bff, 0x5629, 0x4404, 0x94, 0x8c, 0xc6, 0x34, 0xf4, 0xce, 0x26, 0xd4);
// {EC298493-0ADA-4ea1-A4FE-CBBD36CE9331} MF_MT_VIDEO_3D_FIRST_IS_LEFT
{UINT32 (BOOL)}
DEFINE_GUID( MF_MT_VIDEO_3D_FIRST_IS_LEFT,
0xec298493, 0xada, 0x4ea1, 0xa4, 0xfe, 0xcb, 0xbd, 0x36, 0xce, 0x93, 0x31);
// MFSampleExtension_3DVideo {F86F97A4-DD54-4e2e-9A5E-55FC2D7
4A005}
// Type: UINT32
// If present and nonzero, indicates that the sample contains 3D Video data
DEFINE_GUID( MFSampleExtension_3DVideo,
0xf86f97a4, 0xdd54, 0x4e2e, 0x9a, 0x5e, 0x55, 0xfc, 0x2d, 0x74, 0xa0, 0x05);
// Enum describing the packing for 3D video frames in a sample
typedef enum _MFVideo3DSampleFormat {
MFSampleExtension_3DVideo_MultiView = 1,
MFSampleExtension_3DVideo_Packed = 0,
} MFVideo3DSampleFormat;
// MFSampleExtension_3DVideo_SampleFormat {08671772-E36F-4cff-97B3-D72E209
87A48}
// Type: UINT32
// The value of this attribute is a member of the MFVideo3DSampleFormat enumerat
ion.
// MFVideo3DSampleFormat enumeration identifies how 3D views are stored in the s
ample
// - in a packed representation, all views are stored in a single buffer
// - in a multiview representation, each view is stored in its own buffer
DEFINE_GUID( MFSampleExtension_3DVideo_SampleFormat,
0x8671772, 0xe36f, 0x4cff, 0x97, 0xb3, 0xd7, 0x2e, 0x20, 0x98, 0x7a, 0x48);
// Enum describing the video rotation formats
// Only the values of 0, 90, 180, and 270 are valid.
typedef enum _MFVideoRotationFormat {
MFVideoRotationFormat_0 = 0,
MFVideoRotationFormat_90 = 90,
MFVideoRotationFormat_180 = 180,
MFVideoRotationFormat_270 = 270,
} MFVideoRotationFormat;
// MF_MT_VIDEO_ROTATION {C380465D-2271-428C-9B83-ECEA3B4A85C1}
// Type: UINT32
// Description: MF_MT_VIDEO_ROTATION attribute means the degree that the content
// has already been rotated in the counter clockwise direction.
// Currently, only the values of 0, 90, 180, and 270 are valid for MF_MT_VIDEO_R
OTATION.
// For convenience, these currently supported values are enumerated in MFVideoRo
tationFormat.
// Example: if the media type has MF_MT_VIDEO_ROTATION set as MFVideoRotationFor
mat_90,
// it means the content has been rotated 90 degree in the counter clockwise dire
ction.
// If the content was actually rotated 90 degree in the clockwise direction, 90
degree in
// clockwise should be converted into 270 degree in the counter clockwise direct
ion and set
// the attribute MF_MT_VIDEO_ROTATION as MFVideoRotationFormat_270 accordingly.
DEFINE_GUID(MF_MT_VIDEO_ROTATION,
0xc380465d, 0x2271, 0x428c, 0x9b, 0x83, 0xec, 0xea, 0x3b, 0x4a, 0x85, 0xc1);
#endif // (WINVER >= _WIN32_WINNT_WIN8)
// //
// AUDIO data // AUDIO data
// //
// {37e48bf5-645e-4c5b-89de-ada9e29b696a} MF_MT_AUDIO_NUM_CHANNELS {UINT32} // {37e48bf5-645e-4c5b-89de-ada9e29b696a} MF_MT_AUDIO_NUM_CHANNELS {UINT32}
DEFINE_GUID(MF_MT_AUDIO_NUM_CHANNELS, DEFINE_GUID(MF_MT_AUDIO_NUM_CHANNELS,
0x37e48bf5, 0x645e, 0x4c5b, 0x89, 0xde, 0xad, 0xa9, 0xe2, 0x9b, 0x69, 0x6a); 0x37e48bf5, 0x645e, 0x4c5b, 0x89, 0xde, 0xad, 0xa9, 0xe2, 0x9b, 0x69, 0x6a);
// {5faeeae7-0290-4c31-9e8a-c534f68d9dba} MF_MT_AUDIO_SAMPLES_PER_SECOND {UINT32} // {5faeeae7-0290-4c31-9e8a-c534f68d9dba} MF_MT_AUDIO_SAMPLES_PER_SECOND {UINT32}
DEFINE_GUID(MF_MT_AUDIO_SAMPLES_PER_SECOND, DEFINE_GUID(MF_MT_AUDIO_SAMPLES_PER_SECOND,
skipping to change at line 1217 skipping to change at line 1779
0xc459a2e8, 0x3d2c, 0x4e44, 0xb1, 0x32, 0xfe, 0xe5, 0x15, 0x6c, 0x7b, 0xb0); 0xc459a2e8, 0x3d2c, 0x4e44, 0xb1, 0x32, 0xfe, 0xe5, 0x15, 0x6c, 0x7b, 0xb0);
// {c6376a1e-8d0a-4027-be45-6d9a0ad39bb6} MF_MT_PIXEL_ASPECT_RATIO {UIN T64 (HI32(Numerator),LO32(Denominator))} // {c6376a1e-8d0a-4027-be45-6d9a0ad39bb6} MF_MT_PIXEL_ASPECT_RATIO {UIN T64 (HI32(Numerator),LO32(Denominator))}
DEFINE_GUID(MF_MT_PIXEL_ASPECT_RATIO, DEFINE_GUID(MF_MT_PIXEL_ASPECT_RATIO,
0xc6376a1e, 0x8d0a, 0x4027, 0xbe, 0x45, 0x6d, 0x9a, 0x0a, 0xd3, 0x9b, 0xb6); 0xc6376a1e, 0x8d0a, 0x4027, 0xbe, 0x45, 0x6d, 0x9a, 0x0a, 0xd3, 0x9b, 0xb6);
// {8772f323-355a-4cc7-bb78-6d61a048ae82} MF_MT_DRM_FLAGS {UIN T32 (anyof MFVideoDRMFlags)} // {8772f323-355a-4cc7-bb78-6d61a048ae82} MF_MT_DRM_FLAGS {UIN T32 (anyof MFVideoDRMFlags)}
DEFINE_GUID(MF_MT_DRM_FLAGS, DEFINE_GUID(MF_MT_DRM_FLAGS,
0x8772f323, 0x355a, 0x4cc7, 0xbb, 0x78, 0x6d, 0x61, 0xa0, 0x48, 0xae, 0x82); 0x8772f323, 0x355a, 0x4cc7, 0xbb, 0x78, 0x6d, 0x61, 0xa0, 0x48, 0xae, 0x82);
#if (WINVER >= _WIN32_WINNT_WIN8)
// {24974215-1B7B-41e4-8625-AC469F2DEDAA} MF_MT_TIMESTAMP_CAN_BE_DTS {UIN
T32 (BOOL)}
DEFINE_GUID(MF_MT_TIMESTAMP_CAN_BE_DTS,
0x24974215, 0x1b7b, 0x41e4, 0x86, 0x25, 0xac, 0x46, 0x9f, 0x2d, 0xed, 0xaa);
#endif // (WINVER >= _WIN32_WINNT_WIN8)
typedef enum _MFVideoDRMFlags { typedef enum _MFVideoDRMFlags {
MFVideoDRMFlag_None = 0, MFVideoDRMFlag_None = 0,
MFVideoDRMFlag_AnalogProtected = 1, MFVideoDRMFlag_AnalogProtected = 1,
MFVideoDRMFlag_DigitallyProtected = 2, MFVideoDRMFlag_DigitallyProtected = 2,
} MFVideoDRMFlags; } MFVideoDRMFlags;
// {4d0e73e5-80ea-4354-a9d0-1176ceb028ea} MF_MT_PAD_CONTROL_FLAGS {UIN T32 (oneof MFVideoPadFlags)} // {4d0e73e5-80ea-4354-a9d0-1176ceb028ea} MF_MT_PAD_CONTROL_FLAGS {UIN T32 (oneof MFVideoPadFlags)}
DEFINE_GUID(MF_MT_PAD_CONTROL_FLAGS, DEFINE_GUID(MF_MT_PAD_CONTROL_FLAGS,
0x4d0e73e5, 0x80ea, 0x4354, 0xa9, 0xd0, 0x11, 0x76, 0xce, 0xb0, 0x28, 0xea); 0x4d0e73e5, 0x80ea, 0x4354, 0xa9, 0xd0, 0x11, 0x76, 0xce, 0xb0, 0x28, 0xea);
skipping to change at line 1259 skipping to change at line 1829
0xe2724bb8, 0xe676, 0x4806, 0xb4, 0xb2, 0xa8, 0xd6, 0xef, 0xb4, 0x4c, 0xcd); 0xe2724bb8, 0xe676, 0x4806, 0xb4, 0xb2, 0xa8, 0xd6, 0xef, 0xb4, 0x4c, 0xcd);
// {5fb0fce9-be5c-4935-a811-ec838f8eed93} MF_MT_TRANSFER_FUNCTION {UIN T32 (oneof MFVideoTransferFunction)} // {5fb0fce9-be5c-4935-a811-ec838f8eed93} MF_MT_TRANSFER_FUNCTION {UIN T32 (oneof MFVideoTransferFunction)}
DEFINE_GUID(MF_MT_TRANSFER_FUNCTION, DEFINE_GUID(MF_MT_TRANSFER_FUNCTION,
0x5fb0fce9, 0xbe5c, 0x4935, 0xa8, 0x11, 0xec, 0x83, 0x8f, 0x8e, 0xed, 0x93); 0x5fb0fce9, 0xbe5c, 0x4935, 0xa8, 0x11, 0xec, 0x83, 0x8f, 0x8e, 0xed, 0x93);
// {dbfbe4d7-0740-4ee0-8192-850ab0e21935} MF_MT_VIDEO_PRIMARIES {UIN T32 (oneof MFVideoPrimaries)} // {dbfbe4d7-0740-4ee0-8192-850ab0e21935} MF_MT_VIDEO_PRIMARIES {UIN T32 (oneof MFVideoPrimaries)}
DEFINE_GUID(MF_MT_VIDEO_PRIMARIES, DEFINE_GUID(MF_MT_VIDEO_PRIMARIES,
0xdbfbe4d7, 0x0740, 0x4ee0, 0x81, 0x92, 0x85, 0x0a, 0xb0, 0xe2, 0x19, 0x35); 0xdbfbe4d7, 0x0740, 0x4ee0, 0x81, 0x92, 0x85, 0x0a, 0xb0, 0xe2, 0x19, 0x35);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// {47537213-8cfb-4722-aa34-fbc9e24d77b8} MF_MT_CUSTOM_VIDEO_PRIMARIES {BLO B (MT_CUSTOM_VIDEO_PRIMARIES)} // {47537213-8cfb-4722-aa34-fbc9e24d77b8} MF_MT_CUSTOM_VIDEO_PRIMARIES {BLO B (MT_CUSTOM_VIDEO_PRIMARIES)}
DEFINE_GUID(MF_MT_CUSTOM_VIDEO_PRIMARIES, DEFINE_GUID(MF_MT_CUSTOM_VIDEO_PRIMARIES,
0x47537213, 0x8cfb, 0x4722, 0xaa, 0x34, 0xfb, 0xc9, 0xe2, 0x4d, 0x77, 0xb8); 0x47537213, 0x8cfb, 0x4722, 0xaa, 0x34, 0xfb, 0xc9, 0xe2, 0x4d, 0x77, 0xb8);
typedef struct _MT_CUSTOM_VIDEO_PRIMARIES { typedef struct _MT_CUSTOM_VIDEO_PRIMARIES {
float fRx; float fRx;
float fRy; float fRy;
float fGx; float fGx;
float fGy; float fGy;
float fBx; float fBx;
float fBy; float fBy;
float fWx; float fWx;
float fWy; float fWy;
} MT_CUSTOM_VIDEO_PRIMARIES; } MT_CUSTOM_VIDEO_PRIMARIES;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
// {3e23d450-2c75-4d25-a00e-b91670d12327} MF_MT_YUV_MATRIX {UIN T32 (oneof MFVideoTransferMatrix)} // {3e23d450-2c75-4d25-a00e-b91670d12327} MF_MT_YUV_MATRIX {UIN T32 (oneof MFVideoTransferMatrix)}
DEFINE_GUID(MF_MT_YUV_MATRIX, DEFINE_GUID(MF_MT_YUV_MATRIX,
0x3e23d450, 0x2c75, 0x4d25, 0xa0, 0x0e, 0xb9, 0x16, 0x70, 0xd1, 0x23, 0x27); 0x3e23d450, 0x2c75, 0x4d25, 0xa0, 0x0e, 0xb9, 0x16, 0x70, 0xd1, 0x23, 0x27);
// {53a0529c-890b-4216-8bf9-599367ad6d20} MF_MT_VIDEO_LIGHTING {UIN T32 (oneof MFVideoLighting)} // {53a0529c-890b-4216-8bf9-599367ad6d20} MF_MT_VIDEO_LIGHTING {UIN T32 (oneof MFVideoLighting)}
DEFINE_GUID(MF_MT_VIDEO_LIGHTING, DEFINE_GUID(MF_MT_VIDEO_LIGHTING,
0x53a0529c, 0x890b, 0x4216, 0x8b, 0xf9, 0x59, 0x93, 0x67, 0xad, 0x6d, 0x20); 0x53a0529c, 0x890b, 0x4216, 0x8b, 0xf9, 0x59, 0x93, 0x67, 0xad, 0x6d, 0x20);
// {c21b8ee5-b956-4071-8daf-325edf5cab11} MF_MT_VIDEO_NOMINAL_RANGE {UIN T32 (oneof MFNominalRange)} // {c21b8ee5-b956-4071-8daf-325edf5cab11} MF_MT_VIDEO_NOMINAL_RANGE {UIN T32 (oneof MFNominalRange)}
DEFINE_GUID(MF_MT_VIDEO_NOMINAL_RANGE, DEFINE_GUID(MF_MT_VIDEO_NOMINAL_RANGE,
skipping to change at line 1314 skipping to change at line 1896
0x20332624, 0xfb0d, 0x4d9e, 0xbd, 0x0d, 0xcb, 0xf6, 0x78, 0x6c, 0x10, 0x2e); 0x20332624, 0xfb0d, 0x4d9e, 0xbd, 0x0d, 0xcb, 0xf6, 0x78, 0x6c, 0x10, 0x2e);
// {799cabd6-3508-4db4-a3c7-569cd533deb1} MF_MT_AVG_BIT_ERROR_RATE {UIN T32} // {799cabd6-3508-4db4-a3c7-569cd533deb1} MF_MT_AVG_BIT_ERROR_RATE {UIN T32}
DEFINE_GUID(MF_MT_AVG_BIT_ERROR_RATE, DEFINE_GUID(MF_MT_AVG_BIT_ERROR_RATE,
0x799cabd6, 0x3508, 0x4db4, 0xa3, 0xc7, 0x56, 0x9c, 0xd5, 0x33, 0xde, 0xb1); 0x799cabd6, 0x3508, 0x4db4, 0xa3, 0xc7, 0x56, 0x9c, 0xd5, 0x33, 0xde, 0xb1);
// {c16eb52b-73a1-476f-8d62-839d6a020652} MF_MT_MAX_KEYFRAME_SPACING {UIN T32} // {c16eb52b-73a1-476f-8d62-839d6a020652} MF_MT_MAX_KEYFRAME_SPACING {UIN T32}
DEFINE_GUID(MF_MT_MAX_KEYFRAME_SPACING, DEFINE_GUID(MF_MT_MAX_KEYFRAME_SPACING,
0xc16eb52b, 0x73a1, 0x476f, 0x8d, 0x62, 0x83, 0x9d, 0x6a, 0x02, 0x06, 0x52); 0xc16eb52b, 0x73a1, 0x476f, 0x8d, 0x62, 0x83, 0x9d, 0x6a, 0x02, 0x06, 0x52);
// {b6bc765f-4c3b-40a4-bd51-2535b66fe09d} MF_MT_USER_DATA {BLO
B}
DEFINE_GUID(MF_MT_USER_DATA,
0xb6bc765f, 0x4c3b, 0x40a4, 0xbd, 0x51, 0x25, 0x35, 0xb6, 0x6f, 0xe0, 0x9d);
// //
// VIDEO - uncompressed format data // VIDEO - uncompressed format data
// //
// {644b4e48-1e02-4516-b0eb-c01ca9d49ac6} MF_MT_DEFAULT_STRIDE {UIN T32 (INT32)} // in bytes // {644b4e48-1e02-4516-b0eb-c01ca9d49ac6} MF_MT_DEFAULT_STRIDE {UIN T32 (INT32)} // in bytes
DEFINE_GUID(MF_MT_DEFAULT_STRIDE, DEFINE_GUID(MF_MT_DEFAULT_STRIDE,
0x644b4e48, 0x1e02, 0x4516, 0xb0, 0xeb, 0xc0, 0x1c, 0xa9, 0xd4, 0x9a, 0xc6); 0x644b4e48, 0x1e02, 0x4516, 0xb0, 0xeb, 0xc0, 0x1c, 0xa9, 0xd4, 0x9a, 0xc6);
// {6d283f42-9846-4410-afd9-654d503b1a54} MF_MT_PALETTE {BLO B (array of MFPaletteEntry - usually 256)} // {6d283f42-9846-4410-afd9-654d503b1a54} MF_MT_PALETTE {BLO B (array of MFPaletteEntry - usually 256)}
DEFINE_GUID(MF_MT_PALETTE, DEFINE_GUID(MF_MT_PALETTE,
0x6d283f42, 0x9846, 0x4410, 0xaf, 0xd9, 0x65, 0x4d, 0x50, 0x3b, 0x1a, 0x54); 0x6d283f42, 0x9846, 0x4410, 0xaf, 0xd9, 0x65, 0x4d, 0x50, 0x3b, 0x1a, 0x54);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// the following is only used for legacy data that was stuck at the end of the f ormat block when the type // the following is only used for legacy data that was stuck at the end of the f ormat block when the type
// was converted from a VIDEOINFOHEADER or VIDEOINFOHEADER2 block in an AM_MEDIA _TYPE. // was converted from a VIDEOINFOHEADER or VIDEOINFOHEADER2 block in an AM_MEDIA _TYPE.
// //
// {b6bc765f-4c3b-40a4-bd51-2535b66fe09d} MF_MT_USER_DATA {BLO
B}
DEFINE_GUID(MF_MT_USER_DATA,
0xb6bc765f, 0x4c3b, 0x40a4, 0xbd, 0x51, 0x25, 0x35, 0xb6, 0x6f, 0xe0, 0x9d);
// {73d1072d-1870-4174-a063-29ff4ff6c11e} // {73d1072d-1870-4174-a063-29ff4ff6c11e}
DEFINE_GUID(MF_MT_AM_FORMAT_TYPE, DEFINE_GUID(MF_MT_AM_FORMAT_TYPE,
0x73d1072d, 0x1870, 0x4174, 0xa0, 0x63, 0x29, 0xff, 0x4f, 0xf6, 0xc1, 0x1e); 0x73d1072d, 0x1870, 0x4174, 0xa0, 0x63, 0x29, 0xff, 0x4f, 0xf6, 0xc1, 0x1e);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
//
// VIDEO - Generic compressed video extra data
//
// {ad76a80b-2d5c-4e0b-b375-64e520137036} MF_MT_VIDEO_PROFILE {UIN
T32} This is an alias of MF_MT_MPEG2_PROFILE
DEFINE_GUID(MF_MT_VIDEO_PROFILE,
0xad76a80b, 0x2d5c, 0x4e0b, 0xb3, 0x75, 0x64, 0xe5, 0x20, 0x13, 0x70, 0x36);
// {96f66574-11c5-4015-8666-bff516436da7} MF_MT_VIDEO_LEVEL {UIN
T32} This is an alias of MF_MT_MPEG2_LEVEL
DEFINE_GUID(MF_MT_VIDEO_LEVEL,
0x96f66574, 0x11c5, 0x4015, 0x86, 0x66, 0xbf, 0xf5, 0x16, 0x43, 0x6d, 0xa7);
// //
// VIDEO - MPEG1/2 extra data // VIDEO - MPEG1/2 extra data
// //
// {91f67885-4333-4280-97cd-bd5a6c03a06e} MF_MT_MPEG_START_TIME_CODE {UIN T32} // {91f67885-4333-4280-97cd-bd5a6c03a06e} MF_MT_MPEG_START_TIME_CODE {UIN T32}
DEFINE_GUID(MF_MT_MPEG_START_TIME_CODE, DEFINE_GUID(MF_MT_MPEG_START_TIME_CODE,
0x91f67885, 0x4333, 0x4280, 0x97, 0xcd, 0xbd, 0x5a, 0x6c, 0x03, 0xa0, 0x6e); 0x91f67885, 0x4333, 0x4280, 0x97, 0xcd, 0xbd, 0x5a, 0x6c, 0x03, 0xa0, 0x6e);
// {ad76a80b-2d5c-4e0b-b375-64e520137036} MF_MT_MPEG2_PROFILE {UIN T32 (oneof AM_MPEG2Profile)} // {ad76a80b-2d5c-4e0b-b375-64e520137036} MF_MT_MPEG2_PROFILE {UIN T32 (oneof AM_MPEG2Profile)}
DEFINE_GUID(MF_MT_MPEG2_PROFILE, DEFINE_GUID(MF_MT_MPEG2_PROFILE,
skipping to change at line 1362 skipping to change at line 1969
0x96f66574, 0x11c5, 0x4015, 0x86, 0x66, 0xbf, 0xf5, 0x16, 0x43, 0x6d, 0xa7); 0x96f66574, 0x11c5, 0x4015, 0x86, 0x66, 0xbf, 0xf5, 0x16, 0x43, 0x6d, 0xa7);
// {31e3991d-f701-4b2f-b426-8ae3bda9e04b} MF_MT_MPEG2_FLAGS {UIN T32 (anyof AMMPEG2_xxx flags)} // {31e3991d-f701-4b2f-b426-8ae3bda9e04b} MF_MT_MPEG2_FLAGS {UIN T32 (anyof AMMPEG2_xxx flags)}
DEFINE_GUID(MF_MT_MPEG2_FLAGS, DEFINE_GUID(MF_MT_MPEG2_FLAGS,
0x31e3991d, 0xf701, 0x4b2f, 0xb4, 0x26, 0x8a, 0xe3, 0xbd, 0xa9, 0xe0, 0x4b); 0x31e3991d, 0xf701, 0x4b2f, 0xb4, 0x26, 0x8a, 0xe3, 0xbd, 0xa9, 0xe0, 0x4b);
// {3c036de7-3ad0-4c9e-9216-ee6d6ac21cb3} MF_MT_MPEG_SEQUENCE_HEADER {BLO B} // {3c036de7-3ad0-4c9e-9216-ee6d6ac21cb3} MF_MT_MPEG_SEQUENCE_HEADER {BLO B}
DEFINE_GUID(MF_MT_MPEG_SEQUENCE_HEADER, DEFINE_GUID(MF_MT_MPEG_SEQUENCE_HEADER,
0x3c036de7, 0x3ad0, 0x4c9e, 0x92, 0x16, 0xee, 0x6d, 0x6a, 0xc2, 0x1c, 0xb3); 0x3c036de7, 0x3ad0, 0x4c9e, 0x92, 0x16, 0xee, 0x6d, 0x6a, 0xc2, 0x1c, 0xb3);
// {A20AF9E8-928A-4B26-AAA9-F05C74CAC47C} MF_MT_MPEG2_STANDARD {UIN
T32 (0 for default MPEG2, 1 to use ATSC standard, 2 to use DVB standard, 3 to u
se ARIB standard)}
DEFINE_GUID(MF_MT_MPEG2_STANDARD,
0xa20af9e8, 0x928a, 0x4b26, 0xaa, 0xa9, 0xf0, 0x5c, 0x74, 0xca, 0xc4, 0x7c);
// {5229BA10-E29D-4F80-A59C-DF4F180207D2} MF_MT_MPEG2_TIMECODE {UIN
T32 (0 for no timecode, 1 to append an 4 byte timecode to the front of each tran
sport packet)}
DEFINE_GUID(MF_MT_MPEG2_TIMECODE,
0x5229ba10, 0xe29d, 0x4f80, 0xa5, 0x9c, 0xdf, 0x4f, 0x18, 0x2, 0x7, 0xd2);
// {825D55E4-4F12-4197-9EB3-59B6E4710F06} MF_MT_MPEG2_CONTENT_PACKET {UIN
T32 (0 for no content packet, 1 to append a 14 byte Content Packet header accord
ing to the ARIB specification to the beginning a transport packet at 200-1000 ms
intervals.)}
DEFINE_GUID(MF_MT_MPEG2_CONTENT_PACKET,
0x825d55e4, 0x4f12, 0x4197, 0x9e, 0xb3, 0x59, 0xb6, 0xe4, 0x71, 0xf, 0x6);
//
// VIDEO - H264 extra data
//
// {F5929986-4C45-4FBB-BB49-6CC534D05B9B} {UINT32, UVC 1.5 H.264 format descrip
tor: bMaxCodecConfigDelay}
DEFINE_GUID(MF_MT_H264_MAX_CODEC_CONFIG_DELAY,
0xf5929986, 0x4c45, 0x4fbb, 0xbb, 0x49, 0x6c, 0xc5, 0x34, 0xd0, 0x5b, 0x9b);
// {C8BE1937-4D64-4549-8343-A8086C0BFDA5} {UINT32, UVC 1.5 H.264 format descript
or: bmSupportedSliceModes}
DEFINE_GUID(MF_MT_H264_SUPPORTED_SLICE_MODES,
0xc8be1937, 0x4d64, 0x4549, 0x83, 0x43, 0xa8, 0x8, 0x6c, 0xb, 0xfd, 0xa5);
// {89A52C01-F282-48D2-B522-22E6AE633199} {UINT32, UVC 1.5 H.264 format descript
or: bmSupportedSyncFrameTypes}
DEFINE_GUID(MF_MT_H264_SUPPORTED_SYNC_FRAME_TYPES,
0x89a52c01, 0xf282, 0x48d2, 0xb5, 0x22, 0x22, 0xe6, 0xae, 0x63, 0x31, 0x99);
// {E3854272-F715-4757-BA90-1B696C773457} {UINT32, UVC 1.5 H.264 format descript
or: bResolutionScaling}
DEFINE_GUID(MF_MT_H264_RESOLUTION_SCALING,
0xe3854272, 0xf715, 0x4757, 0xba, 0x90, 0x1b, 0x69, 0x6c, 0x77, 0x34, 0x57);
// {9EA2D63D-53F0-4A34-B94E-9DE49A078CB3} {UINT32, UVC 1.5 H.264 format descript
or: bSimulcastSupport}
DEFINE_GUID(MF_MT_H264_SIMULCAST_SUPPORT,
0x9ea2d63d, 0x53f0, 0x4a34, 0xb9, 0x4e, 0x9d, 0xe4, 0x9a, 0x7, 0x8c, 0xb3);
// {6A8AC47E-519C-4F18-9BB3-7EEAAEA5594D} {UINT32, UVC 1.5 H.264 format descript
or: bmSupportedRateControlModes}
DEFINE_GUID(MF_MT_H264_SUPPORTED_RATE_CONTROL_MODES,
0x6a8ac47e, 0x519c, 0x4f18, 0x9b, 0xb3, 0x7e, 0xea, 0xae, 0xa5, 0x59, 0x4d);
// {45256D30-7215-4576-9336-B0F1BCD59BB2} {Blob of size 20 * sizeof(WORD), UVC
1.5 H.264 format descriptor: wMaxMBperSec*}
DEFINE_GUID(MF_MT_H264_MAX_MB_PER_SEC,
0x45256d30, 0x7215, 0x4576, 0x93, 0x36, 0xb0, 0xf1, 0xbc, 0xd5, 0x9b, 0xb2);
// {60B1A998-DC01-40CE-9736-ABA845A2DBDC} {UINT32, UVC 1.5 H.264 frame d
escriptor: bmSupportedUsages}
DEFINE_GUID(MF_MT_H264_SUPPORTED_USAGES,
0x60b1a998, 0xdc01, 0x40ce, 0x97, 0x36, 0xab, 0xa8, 0x45, 0xa2, 0xdb, 0xdc);
// {BB3BD508-490A-11E0-99E4-1316DFD72085} {UINT32, UVC 1.5 H.264 frame d
escriptor: bmCapabilities}
DEFINE_GUID(MF_MT_H264_CAPABILITIES,
0xbb3bd508, 0x490a, 0x11e0, 0x99, 0xe4, 0x13, 0x16, 0xdf, 0xd7, 0x20, 0x85);
// {F8993ABE-D937-4A8F-BBCA-6966FE9E1152} {UINT32, UVC 1.5 H.264 frame d
escriptor: bmSVCCapabilities}
DEFINE_GUID(MF_MT_H264_SVC_CAPABILITIES,
0xf8993abe, 0xd937, 0x4a8f, 0xbb, 0xca, 0x69, 0x66, 0xfe, 0x9e, 0x11, 0x52);
// {359CE3A5-AF00-49CA-A2F4-2AC94CA82B61} {UINT32, UVC 1.5 H.264 Probe/C
ommit Control: bUsage}
DEFINE_GUID(MF_MT_H264_USAGE,
0x359ce3a5, 0xaf00, 0x49ca, 0xa2, 0xf4, 0x2a, 0xc9, 0x4c, 0xa8, 0x2b, 0x61);
//{705177D8-45CB-11E0-AC7D-B91CE0D72085} {UINT32, UVC 1.5 H.264 Probe/C
ommit Control: bmRateControlModes}
DEFINE_GUID(MF_MT_H264_RATE_CONTROL_MODES,
0x705177d8, 0x45cb, 0x11e0, 0xac, 0x7d, 0xb9, 0x1c, 0xe0, 0xd7, 0x20, 0x85);
//{85E299B2-90E3-4FE8-B2F5-C067E0BFE57A} {UINT64, UVC 1.5 H.264 Probe/C
ommit Control: bmLayoutPerStream}
DEFINE_GUID(MF_MT_H264_LAYOUT_PER_STREAM,
0x85e299b2, 0x90e3, 0x4fe8, 0xb2, 0xf5, 0xc0, 0x67, 0xe0, 0xbf, 0xe5, 0x7a);
// //
// INTERLEAVED - DV extra data // INTERLEAVED - DV extra data
// //
// {84bd5d88-0fb8-4ac8-be4b-a8848bef98f3} MF_MT_DV_AAUX_SRC_PACK_0 {UIN T32} // {84bd5d88-0fb8-4ac8-be4b-a8848bef98f3} MF_MT_DV_AAUX_SRC_PACK_0 {UIN T32}
DEFINE_GUID(MF_MT_DV_AAUX_SRC_PACK_0, DEFINE_GUID(MF_MT_DV_AAUX_SRC_PACK_0,
0x84bd5d88, 0x0fb8, 0x4ac8, 0xbe, 0x4b, 0xa8, 0x84, 0x8b, 0xef, 0x98, 0xf3); 0x84bd5d88, 0x0fb8, 0x4ac8, 0xbe, 0x4b, 0xa8, 0x84, 0x8b, 0xef, 0x98, 0xf3);
// {f731004e-1dd1-4515-aabe-f0c06aa536ac} MF_MT_DV_AAUX_CTRL_PACK_0 {UIN T32} // {f731004e-1dd1-4515-aabe-f0c06aa536ac} MF_MT_DV_AAUX_CTRL_PACK_0 {UIN T32}
DEFINE_GUID(MF_MT_DV_AAUX_CTRL_PACK_0, DEFINE_GUID(MF_MT_DV_AAUX_CTRL_PACK_0,
0xf731004e, 0x1dd1, 0x4515, 0xaa, 0xbe, 0xf0, 0xc0, 0x6a, 0xa5, 0x36, 0xac); 0xf731004e, 0x1dd1, 0x4515, 0xaa, 0xbe, 0xf0, 0xc0, 0x6a, 0xa5, 0x36, 0xac);
skipping to change at line 1389 skipping to change at line 2064
0xcd1f470d, 0x1f04, 0x4fe0, 0xbf, 0xb9, 0xd0, 0x7a, 0xe0, 0x38, 0x6a, 0xd8); 0xcd1f470d, 0x1f04, 0x4fe0, 0xbf, 0xb9, 0xd0, 0x7a, 0xe0, 0x38, 0x6a, 0xd8);
// {41402d9d-7b57-43c6-b129-2cb997f15009} MF_MT_DV_VAUX_SRC_PACK {UIN T32} // {41402d9d-7b57-43c6-b129-2cb997f15009} MF_MT_DV_VAUX_SRC_PACK {UIN T32}
DEFINE_GUID(MF_MT_DV_VAUX_SRC_PACK, DEFINE_GUID(MF_MT_DV_VAUX_SRC_PACK,
0x41402d9d, 0x7b57, 0x43c6, 0xb1, 0x29, 0x2c, 0xb9, 0x97, 0xf1, 0x50, 0x09); 0x41402d9d, 0x7b57, 0x43c6, 0xb1, 0x29, 0x2c, 0xb9, 0x97, 0xf1, 0x50, 0x09);
// {2f84e1c4-0da1-4788-938e-0dfbfbb34b48} MF_MT_DV_VAUX_CTRL_PACK {UIN T32} // {2f84e1c4-0da1-4788-938e-0dfbfbb34b48} MF_MT_DV_VAUX_CTRL_PACK {UIN T32}
DEFINE_GUID(MF_MT_DV_VAUX_CTRL_PACK, DEFINE_GUID(MF_MT_DV_VAUX_CTRL_PACK,
0x2f84e1c4, 0x0da1, 0x4788, 0x93, 0x8e, 0x0d, 0xfb, 0xfb, 0xb3, 0x4b, 0x48); 0x2f84e1c4, 0x0da1, 0x4788, 0x93, 0x8e, 0x0d, 0xfb, 0xfb, 0xb3, 0x4b, 0x48);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// ARBITRARY // ARBITRARY
// //
// //
// MT_ARBITRARY_HEADER stores information about the format of an arbitrary media type // MT_ARBITRARY_HEADER stores information about the format of an arbitrary media type
// //
typedef struct _MT_ARBITRARY_HEADER typedef struct _MT_ARBITRARY_HEADER
{ {
GUID majortype; GUID majortype;
skipping to change at line 1416 skipping to change at line 2098
MT_ARBITRARY_HEADER; MT_ARBITRARY_HEADER;
// {9E6BD6F5-0109-4f95-84AC-9309153A19FC} MF_MT_ARBITRARY_HEADER {MT_ ARBITRARY_HEADER} // {9E6BD6F5-0109-4f95-84AC-9309153A19FC} MF_MT_ARBITRARY_HEADER {MT_ ARBITRARY_HEADER}
DEFINE_GUID(MF_MT_ARBITRARY_HEADER, DEFINE_GUID(MF_MT_ARBITRARY_HEADER,
0x9e6bd6f5, 0x109, 0x4f95, 0x84, 0xac, 0x93, 0x9, 0x15, 0x3a, 0x19, 0xfc ); 0x9e6bd6f5, 0x109, 0x4f95, 0x84, 0xac, 0x93, 0x9, 0x15, 0x3a, 0x19, 0xfc );
// {5A75B249-0D7D-49a1-A1C3-E0D87F0CADE5} MF_MT_ARBITRARY_FORMAT {Blo b} // {5A75B249-0D7D-49a1-A1C3-E0D87F0CADE5} MF_MT_ARBITRARY_FORMAT {Blo b}
DEFINE_GUID(MF_MT_ARBITRARY_FORMAT, DEFINE_GUID(MF_MT_ARBITRARY_FORMAT,
0x5a75b249, 0xd7d, 0x49a1, 0xa1, 0xc3, 0xe0, 0xd8, 0x7f, 0xc, 0xad, 0xe5); 0x5a75b249, 0xd7d, 0x49a1, 0xa1, 0xc3, 0xe0, 0xd8, 0x7f, 0xc, 0xad, 0xe5);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
// //
// IMAGE // IMAGE
// //
// {ED062CF4-E34E-4922-BE99-934032133D7C} MF_MT_IMAGE_LOSS_TOLERANT {UIN T32 (BOOL)} // {ED062CF4-E34E-4922-BE99-934032133D7C} MF_MT_IMAGE_LOSS_TOLERANT {UIN T32 (BOOL)}
DEFINE_GUID(MF_MT_IMAGE_LOSS_TOLERANT, DEFINE_GUID(MF_MT_IMAGE_LOSS_TOLERANT,
0xed062cf4, 0xe34e, 0x4922, 0xbe, 0x99, 0x93, 0x40, 0x32, 0x13, 0x3d, 0x7c); 0xed062cf4, 0xe34e, 0x4922, 0xbe, 0x99, 0x93, 0x40, 0x32, 0x13, 0x3d, 0x7c);
// //
// MPEG-4 Media Type Attributes // MPEG-4 Media Type Attributes
// //
// {261E9D83-9529-4B8F-A111-8B9C950A81A9} MF_MT_MPEG4_SAMPLE_DESCRIPTION {BL OB} // {261E9D83-9529-4B8F-A111-8B9C950A81A9} MF_MT_MPEG4_SAMPLE_DESCRIPTION {BL OB}
DEFINE_GUID(MF_MT_MPEG4_SAMPLE_DESCRIPTION, DEFINE_GUID(MF_MT_MPEG4_SAMPLE_DESCRIPTION,
0x261e9d83, 0x9529, 0x4b8f, 0xa1, 0x11, 0x8b, 0x9c, 0x95, 0x0a, 0x81, 0xa9); 0x261e9d83, 0x9529, 0x4b8f, 0xa1, 0x11, 0x8b, 0x9c, 0x95, 0x0a, 0x81, 0xa9);
// {9aa7e155-b64a-4c1d-a500-455d600b6560} MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY {UI NT32} // {9aa7e155-b64a-4c1d-a500-455d600b6560} MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY {UI NT32}
DEFINE_GUID(MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY, DEFINE_GUID(MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY,
0x9aa7e155, 0xb64a, 0x4c1d, 0xa5, 0x00, 0x45, 0x5d, 0x60, 0x0b, 0x65, 0x60); 0x9aa7e155, 0xb64a, 0x4c1d, 0xa5, 0x00, 0x45, 0x5d, 0x60, 0x0b, 0x65, 0x60);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// Save original format information for AVI and WAV files // Save original format information for AVI and WAV files
// //
// {d7be3fe0-2bc7-492d-b843-61a1919b70c3} MF_MT_ORIGINAL_4CC (UI NT32) // {d7be3fe0-2bc7-492d-b843-61a1919b70c3} MF_MT_ORIGINAL_4CC (UI NT32)
DEFINE_GUID(MF_MT_ORIGINAL_4CC, DEFINE_GUID(MF_MT_ORIGINAL_4CC,
0xd7be3fe0, 0x2bc7, 0x492d, 0xb8, 0x43, 0x61, 0xa1, 0x91, 0x9b, 0x70, 0xc3); 0xd7be3fe0, 0x2bc7, 0x492d, 0xb8, 0x43, 0x61, 0xa1, 0x91, 0x9b, 0x70, 0xc3);
// {8cbbc843-9fd9-49c2-882f-a72586c408ad} MF_MT_ORIGINAL_WAVE_FORMAT_TAG (UI NT32) // {8cbbc843-9fd9-49c2-882f-a72586c408ad} MF_MT_ORIGINAL_WAVE_FORMAT_TAG (UI NT32)
DEFINE_GUID(MF_MT_ORIGINAL_WAVE_FORMAT_TAG, DEFINE_GUID(MF_MT_ORIGINAL_WAVE_FORMAT_TAG,
0x8cbbc843, 0x9fd9, 0x49c2, 0x88, 0x2f, 0xa7, 0x25, 0x86, 0xc4, 0x08, 0xad); 0x8cbbc843, 0x9fd9, 0x49c2, 0x88, 0x2f, 0xa7, 0x25, 0x86, 0xc4, 0x08, 0xad);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
// //
// Video Capture Media Type Attributes // Video Capture Media Type Attributes
// //
// {D2E7558C-DC1F-403f-9A72-D28BB1EB3B5E} MF_MT_FRAME_RATE_RANGE_MIN {UIN T64 (HI32(Numerator),LO32(Denominator))} // {D2E7558C-DC1F-403f-9A72-D28BB1EB3B5E} MF_MT_FRAME_RATE_RANGE_MIN {UIN T64 (HI32(Numerator),LO32(Denominator))}
DEFINE_GUID(MF_MT_FRAME_RATE_RANGE_MIN, DEFINE_GUID(MF_MT_FRAME_RATE_RANGE_MIN,
0xd2e7558c, 0xdc1f, 0x403f, 0x9a, 0x72, 0xd2, 0x8b, 0xb1, 0xeb, 0x3b, 0x5e); 0xd2e7558c, 0xdc1f, 0x403f, 0x9a, 0x72, 0xd2, 0x8b, 0xb1, 0xeb, 0x3b, 0x5e);
// {E3371D41-B4CF-4a05-BD4E-20B88BB2C4D6} MF_MT_FRAME_RATE_RANGE_MAX {UIN T64 (HI32(Numerator),LO32(Denominator))} // {E3371D41-B4CF-4a05-BD4E-20B88BB2C4D6} MF_MT_FRAME_RATE_RANGE_MAX {UIN T64 (HI32(Numerator),LO32(Denominator))}
DEFINE_GUID(MF_MT_FRAME_RATE_RANGE_MAX, DEFINE_GUID(MF_MT_FRAME_RATE_RANGE_MAX,
0xe3371d41, 0xb4cf, 0x4a05, 0xbd, 0x4e, 0x20, 0xb8, 0x8b, 0xb2, 0xc4, 0xd6); 0xe3371d41, 0xb4cf, 0x4a05, 0xbd, 0x4e, 0x20, 0xb8, 0x8b, 0xb2, 0xc4, 0xd6);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#endif // (WINVER >= _WIN32_WINNT_WIN7) #endif // (WINVER >= _WIN32_WINNT_WIN7)
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#if (WINVER >= _WIN32_WINNT_WIN8)
// {9C27891A-ED7A-40e1-88E8-B22727A024EE} MF_LOW_LATENCY {UIN
T32 (BOOL)}
// Same GUID as CODECAPI_AVLowLatencyMode
DEFINE_GUID(MF_LOW_LATENCY,
0x9c27891a, 0xed7a, 0x40e1, 0x88, 0xe8, 0xb2, 0x27, 0x27, 0xa0, 0x24, 0xee);
// {E3F2E203-D445-4B8C-9211-AE390D3BA017} {UINT32} Maximum macroblocks per seco
nd that can be handled by MFT
DEFINE_GUID(MF_VIDEO_MAX_MB_PER_SEC,
0xe3f2e203, 0xd445, 0x4b8c, 0x92, 0x11, 0xae, 0x39, 0xd, 0x3b, 0xa0, 0x17);
#endif // (WINVER >= _WIN32_WINNT_WIN8)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// Media Type GUIDs ////////////////////////////// /////////////////////////////// Media Type GUIDs //////////////////////////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// //
// Major types // Major types
// //
DEFINE_GUID(MFMediaType_Default, DEFINE_GUID(MFMediaType_Default,
0x81A412E6, 0x8103, 0x4B06, 0x85, 0x7F, 0x18, 0x62, 0x78, 0x10, 0x24, 0xAC); 0x81A412E6, 0x8103, 0x4B06, 0x85, 0x7F, 0x18, 0x62, 0x78, 0x10, 0x24, 0xAC);
DEFINE_GUID(MFMediaType_Audio, DEFINE_GUID(MFMediaType_Audio,
skipping to change at line 1486 skipping to change at line 2203
DEFINE_GUID(MFMediaType_Script, DEFINE_GUID(MFMediaType_Script,
0x72178C22, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB); 0x72178C22, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
DEFINE_GUID(MFMediaType_Image, DEFINE_GUID(MFMediaType_Image,
0x72178C23, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB); 0x72178C23, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
DEFINE_GUID(MFMediaType_HTML, DEFINE_GUID(MFMediaType_HTML,
0x72178C24, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB); 0x72178C24, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
DEFINE_GUID(MFMediaType_Binary, DEFINE_GUID(MFMediaType_Binary,
0x72178C25, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB); 0x72178C25, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
DEFINE_GUID(MFMediaType_FileTransfer, DEFINE_GUID(MFMediaType_FileTransfer,
0x72178C26, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB); 0x72178C26, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
DEFINE_GUID(MFMediaType_Stream,
0xe436eb83, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70);
//
// Image subtypes (MFMediaType_Image major type)
//
// JPEG subtype: same as GUID_ContainerFormatJpeg
DEFINE_GUID(MFImageFormat_JPEG,
0x19e4a5aa, 0x5662, 0x4fc5, 0xa0, 0xc0, 0x17, 0x58, 0x02, 0x8e, 0x10, 0x57);
// RGB32 subtype: same as MFVideoFormat_RGB32
DEFINE_GUID(MFImageFormat_RGB32,
0x00000016, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
// //
// MPEG2 Stream subtypes (MFMediaType_Stream major type)
//
DEFINE_GUID(MFStreamFormat_MPEG2Transport,
0xe06d8023, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea);
DEFINE_GUID(MFStreamFormat_MPEG2Program,
0x263067d1, 0xd330, 0x45dc, 0xb6, 0x69, 0x34, 0xd9, 0x86, 0xe4, 0xe3, 0xe1);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
//
// Representations // Representations
// //
DEFINE_GUID(AM_MEDIA_TYPE_REPRESENTATION, DEFINE_GUID(AM_MEDIA_TYPE_REPRESENTATION,
0xe2e42ad2, 0x132c, 0x491e, 0xa2, 0x68, 0x3c, 0x7c, 0x2d, 0xca, 0x18, 0x1f); 0xe2e42ad2, 0x132c, 0x491e, 0xa2, 0x68, 0x3c, 0x7c, 0x2d, 0xca, 0x18, 0x1f);
DEFINE_GUID(FORMAT_MFVideoFormat, DEFINE_GUID(FORMAT_MFVideoFormat,
0xaed4ab2d, 0x7326, 0x43cb, 0x94, 0x64, 0xc8, 0x79, 0xca, 0xb9, 0xc4, 0x3d); 0xaed4ab2d, 0x7326, 0x43cb, 0x94, 0x64, 0xc8, 0x79, 0xca, 0xb9, 0xc4, 0x3d);
//////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Media Type functions ////////////////////////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Media Type functions //////////////////////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
skipping to change at line 1514 skipping to change at line 2257
typedef struct tagVIDEOINFOHEADER2 VIDEOINFOHEADER2; typedef struct tagVIDEOINFOHEADER2 VIDEOINFOHEADER2;
struct tagMPEG1VIDEOINFO; struct tagMPEG1VIDEOINFO;
typedef struct tagMPEG1VIDEOINFO MPEG1VIDEOINFO; typedef struct tagMPEG1VIDEOINFO MPEG1VIDEOINFO;
struct tagMPEG2VIDEOINFO; struct tagMPEG2VIDEOINFO;
typedef struct tagMPEG2VIDEOINFO MPEG2VIDEOINFO; typedef struct tagMPEG2VIDEOINFO MPEG2VIDEOINFO;
struct _AMMediaType; struct _AMMediaType;
typedef struct _AMMediaType AM_MEDIA_TYPE; typedef struct _AMMediaType AM_MEDIA_TYPE;
STDAPI STDAPI
MFValidateMediaTypeSize( MFValidateMediaTypeSize(
__in GUID FormatType, _In_ GUID FormatType,
__in_bcount_opt(cbSize) UINT8* pBlock, _In_reads_bytes_opt_(cbSize) UINT8* pBlock,
__in UINT32 cbSize _In_ UINT32 cbSize
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI STDAPI
MFCreateMediaType( MFCreateMediaType(
__deref_out IMFMediaType** ppMFType _Outptr_ IMFMediaType** ppMFType
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI STDAPI
MFCreateMFVideoFormatFromMFMediaType( MFCreateMFVideoFormatFromMFMediaType(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__out MFVIDEOFORMAT** ppMFVF, // must be deleted with CoTaskMe _Out_ MFVIDEOFORMAT** ppMFVF, // must be deleted with CoTaskMe
mFree mFree
__out_opt UINT32* pcbSize _Out_opt_ UINT32* pcbSize
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
typedef enum _MFWaveFormatExConvertFlags { typedef enum _MFWaveFormatExConvertFlags {
MFWaveFormatExConvertFlag_Normal = 0, MFWaveFormatExConvertFlag_Normal = 0,
MFWaveFormatExConvertFlag_ForceExtensible = 1 MFWaveFormatExConvertFlag_ForceExtensible = 1
} MFWaveFormatExConvertFlags; } MFWaveFormatExConvertFlags;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#ifdef __cplusplus #ifdef __cplusplus
// //
// declarations with default parameters // declarations with default parameters
// //
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI STDAPI
MFCreateWaveFormatExFromMFMediaType( MFCreateWaveFormatExFromMFMediaType(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__out WAVEFORMATEX** ppWF, _Out_ WAVEFORMATEX** ppWF,
__out_opt UINT32* pcbSize, _Out_opt_ UINT32* pcbSize,
__in UINT32 Flags = MFWaveFormatExConvertFlag_Normal _In_ UINT32 Flags = MFWaveFormatExConvertFlag_Normal
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI STDAPI
MFInitMediaTypeFromVideoInfoHeader( MFInitMediaTypeFromVideoInfoHeader(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in_bcount(cbBufSize) const VIDEOINFOHEADER* pVIH, _In_reads_bytes_(cbBufSize) const VIDEOINFOHEADER* pVIH,
__in UINT32 cbBufSize, _In_ UINT32 cbBufSize,
__in_opt const GUID* pSubtype = NULL _In_opt_ const GUID* pSubtype = NULL
); );
STDAPI STDAPI
MFInitMediaTypeFromVideoInfoHeader2( MFInitMediaTypeFromVideoInfoHeader2(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in_bcount(cbBufSize) const VIDEOINFOHEADER2* pVIH2, _In_reads_bytes_(cbBufSize) const VIDEOINFOHEADER2* pVIH2,
__in UINT32 cbBufSize, _In_ UINT32 cbBufSize,
__in_opt const GUID* pSubtype = NULL _In_opt_ const GUID* pSubtype = NULL
); );
STDAPI STDAPI
MFInitMediaTypeFromMPEG1VideoInfo( MFInitMediaTypeFromMPEG1VideoInfo(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in_bcount(cbBufSize) const MPEG1VIDEOINFO* pMP1VI, _In_reads_bytes_(cbBufSize) const MPEG1VIDEOINFO* pMP1VI,
__in UINT32 cbBufSize, _In_ UINT32 cbBufSize,
__in_opt const GUID* pSubtype = NULL _In_opt_ const GUID* pSubtype = NULL
); );
STDAPI STDAPI
MFInitMediaTypeFromMPEG2VideoInfo( MFInitMediaTypeFromMPEG2VideoInfo(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in_bcount(cbBufSize) const MPEG2VIDEOINFO* pMP2VI, _In_reads_bytes_(cbBufSize) const MPEG2VIDEOINFO* pMP2VI,
__in UINT32 cbBufSize, _In_ UINT32 cbBufSize,
__in_opt const GUID* pSubtype = NULL _In_opt_ const GUID* pSubtype = NULL
); );
STDAPI STDAPI
MFCalculateBitmapImageSize( MFCalculateBitmapImageSize(
__in_bcount(cbBufSize) const BITMAPINFOHEADER* pBMIH, _In_reads_bytes_(cbBufSize) const BITMAPINFOHEADER* pBMIH,
__in UINT32 cbBufSize, _In_ UINT32 cbBufSize,
__out UINT32* pcbImageSize, _Out_ UINT32* pcbImageSize,
__out_opt BOOL* pbKnown = NULL _Out_opt_ BOOL* pbKnown = NULL
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#else #else /* cplusplus */
// //
// same declarations without default parameters // same declarations without default parameters
// //
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI STDAPI
MFCreateWaveFormatExFromMFMediaType( MFCreateWaveFormatExFromMFMediaType(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__out WAVEFORMATEX** ppWF, _Out_ WAVEFORMATEX** ppWF,
__out_opt UINT32* pcbSize, _Out_opt_ UINT32* pcbSize,
__in UINT32 Flags _In_ UINT32 Flags
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI STDAPI
MFInitMediaTypeFromVideoInfoHeader( MFInitMediaTypeFromVideoInfoHeader(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in_bcount(cbBufSize) const VIDEOINFOHEADER* pVIH, _In_reads_bytes_(cbBufSize) const VIDEOINFOHEADER* pVIH,
__in UINT32 cbBufSize, _In_ UINT32 cbBufSize,
__in_opt const GUID* pSubtype _In_opt_ const GUID* pSubtype
); );
STDAPI STDAPI
MFInitMediaTypeFromVideoInfoHeader2( MFInitMediaTypeFromVideoInfoHeader2(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in_bcount(cbBufSize) const VIDEOINFOHEADER2* pVIH2, _In_reads_bytes_(cbBufSize) const VIDEOINFOHEADER2* pVIH2,
__in UINT32 cbBufSize, _In_ UINT32 cbBufSize,
__in_opt const GUID* pSubtype _In_opt_ const GUID* pSubtype
); );
STDAPI STDAPI
MFInitMediaTypeFromMPEG1VideoInfo( MFInitMediaTypeFromMPEG1VideoInfo(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in_bcount(cbBufSize) const MPEG1VIDEOINFO* pMP1VI, _In_reads_bytes_(cbBufSize) const MPEG1VIDEOINFO* pMP1VI,
__in UINT32 cbBufSize, _In_ UINT32 cbBufSize,
__in_opt const GUID* pSubtype _In_opt_ const GUID* pSubtype
); );
STDAPI STDAPI
MFInitMediaTypeFromMPEG2VideoInfo( MFInitMediaTypeFromMPEG2VideoInfo(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in_bcount(cbBufSize) const MPEG2VIDEOINFO* pMP2VI, _In_reads_bytes_(cbBufSize) const MPEG2VIDEOINFO* pMP2VI,
__in UINT32 cbBufSize, _In_ UINT32 cbBufSize,
__in_opt const GUID* pSubtype _In_opt_ const GUID* pSubtype
); );
STDAPI STDAPI
MFCalculateBitmapImageSize( MFCalculateBitmapImageSize(
__in_bcount(cbBufSize) const BITMAPINFOHEADER* pBMIH, _In_reads_bytes_(cbBufSize) const BITMAPINFOHEADER* pBMIH,
__in UINT32 cbBufSize, _In_ UINT32 cbBufSize,
__out UINT32* pcbImageSize, _Out_ UINT32* pcbImageSize,
__out_opt BOOL* pbKnown _Out_opt_ BOOL* pbKnown
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif #endif /* cplusplus */
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI STDAPI
MFCalculateImageSize( MFCalculateImageSize(
__in REFGUID guidSubtype, _In_ REFGUID guidSubtype,
__in UINT32 unWidth, _In_ UINT32 unWidth,
__in UINT32 unHeight, _In_ UINT32 unHeight,
__out UINT32* pcbImageSize _Out_ UINT32* pcbImageSize
); );
STDAPI STDAPI
MFFrameRateToAverageTimePerFrame( MFFrameRateToAverageTimePerFrame(
__in UINT32 unNumerator, _In_ UINT32 unNumerator,
__in UINT32 unDenominator, _In_ UINT32 unDenominator,
__out UINT64* punAverageTimePerFrame _Out_ UINT64* punAverageTimePerFrame
); );
STDAPI STDAPI
MFAverageTimePerFrameToFrameRate( MFAverageTimePerFrameToFrameRate(
__in UINT64 unAverageTimePerFrame, _In_ UINT64 unAverageTimePerFrame,
__out UINT32* punNumerator, _Out_ UINT32* punNumerator,
__out UINT32* punDenominator _Out_ UINT32* punDenominator
); );
STDAPI STDAPI
MFInitMediaTypeFromMFVideoFormat( MFInitMediaTypeFromMFVideoFormat(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in_bcount(cbBufSize) const MFVIDEOFORMAT* pMFVF, _In_reads_bytes_(cbBufSize) const MFVIDEOFORMAT* pMFVF,
__in UINT32 cbBufSize _In_ UINT32 cbBufSize
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI STDAPI
MFInitMediaTypeFromWaveFormatEx( MFInitMediaTypeFromWaveFormatEx(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in_bcount(cbBufSize) const WAVEFORMATEX* pWaveFormat, _In_reads_bytes_(cbBufSize) const WAVEFORMATEX* pWaveFormat,
__in UINT32 cbBufSize _In_ UINT32 cbBufSize
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI STDAPI
MFInitMediaTypeFromAMMediaType( MFInitMediaTypeFromAMMediaType(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in const AM_MEDIA_TYPE* pAMType _In_ const AM_MEDIA_TYPE* pAMType
); );
STDAPI STDAPI
MFInitAMMediaTypeFromMFMediaType( MFInitAMMediaTypeFromMFMediaType(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in GUID guidFormatBlockType, _In_ GUID guidFormatBlockType,
__inout AM_MEDIA_TYPE* pAMType _Inout_ AM_MEDIA_TYPE* pAMType
); );
STDAPI STDAPI
MFCreateAMMediaTypeFromMFMediaType( MFCreateAMMediaTypeFromMFMediaType(
__in IMFMediaType* pMFType, _In_ IMFMediaType* pMFType,
__in GUID guidFormatBlockType, _In_ GUID guidFormatBlockType,
__inout AM_MEDIA_TYPE** ppAMType // delete with DeleteMediaType _Inout_ AM_MEDIA_TYPE** ppAMType // delete with DeleteMediaType
); );
// //
// This function compares a full media type to a partial media type. // This function compares a full media type to a partial media type.
// //
// A "partial" media type is one that is given out by a component as a possible // A "partial" media type is one that is given out by a component as a possible
// media type it could accept. Many attributes may be unset, which represents // media type it could accept. Many attributes may be unset, which represents
// a "don't care" status for that attribute. // a "don't care" status for that attribute.
// //
// For example, a video effect may report that it supports YV12, // For example, a video effect may report that it supports YV12,
// but not want to specify a particular size. It simply creates a media type and sets // but not want to specify a particular size. It simply creates a media type and sets
// the major type to MFMediaType_Video and the subtype to MEDIASUBTYPE_YV12. // the major type to MFMediaType_Video and the subtype to MEDIASUBTYPE_YV12.
// //
// The comparison function succeeds if the partial type contains at least a majo r type, // The comparison function succeeds if the partial type contains at least a majo r type,
// and all of the attributes in the partial type exist in the full type and are set to // and all of the attributes in the partial type exist in the full type and are set to
// the same value. // the same value.
// //
STDAPI_(BOOL) STDAPI_(BOOL)
MFCompareFullToPartialMediaType( MFCompareFullToPartialMediaType(
__in IMFMediaType* pMFTypeFull, _In_ IMFMediaType* pMFTypeFull,
__in IMFMediaType* pMFTypePartial _In_ IMFMediaType* pMFTypePartial
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI STDAPI
MFWrapMediaType( MFWrapMediaType(
__in IMFMediaType* pOrig, _In_ IMFMediaType* pOrig,
__in REFGUID MajorType, _In_ REFGUID MajorType,
__in REFGUID SubType, _In_ REFGUID SubType,
__out IMFMediaType ** ppWrap _Out_ IMFMediaType ** ppWrap
); );
STDAPI STDAPI
MFUnwrapMediaType( MFUnwrapMediaType(
__in IMFMediaType* pWrap, _In_ IMFMediaType* pWrap,
__out IMFMediaType ** ppOrig _Out_ IMFMediaType ** ppOrig
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// MFCreateVideoMediaType // MFCreateVideoMediaType
// //
#ifdef _KSMEDIA_ #ifdef _KSMEDIA_
STDAPI MFCreateVideoMediaTypeFromVideoInfoHeader( STDAPI MFCreateVideoMediaTypeFromVideoInfoHeader(
__in const KS_VIDEOINFOHEADER* pVideoInfoHeader, _In_ const KS_VIDEOINFOHEADER* pVideoInfoHeader,
DWORD cbVideoInfoHeader, DWORD cbVideoInfoHeader,
DWORD dwPixelAspectRatioX, DWORD dwPixelAspectRatioX,
DWORD dwPixelAspectRatioY, DWORD dwPixelAspectRatioY,
MFVideoInterlaceMode InterlaceMode, MFVideoInterlaceMode InterlaceMode,
QWORD VideoFlags, QWORD VideoFlags,
__in_opt const GUID * pSubtype, _In_opt_ const GUID * pSubtype,
__out IMFVideoMediaType** ppIVideoMediaType _Out_ IMFVideoMediaType** ppIVideoMediaType
); );
STDAPI MFCreateVideoMediaTypeFromVideoInfoHeader2( STDAPI MFCreateVideoMediaTypeFromVideoInfoHeader2(
__in const KS_VIDEOINFOHEADER2* pVideoInfoHeader, _In_ const KS_VIDEOINFOHEADER2* pVideoInfoHeader,
DWORD cbVideoInfoHeader, DWORD cbVideoInfoHeader,
QWORD AdditionalVideoFlags, QWORD AdditionalVideoFlags,
__in_opt const GUID * pSubtype, _In_opt_ const GUID * pSubtype,
__out IMFVideoMediaType** ppIVideoMediaType _Out_ IMFVideoMediaType** ppIVideoMediaType
); );
#endif #endif
STDAPI MFCreateVideoMediaType( STDAPI MFCreateVideoMediaType(
__in const MFVIDEOFORMAT* pVideoFormat, _In_ const MFVIDEOFORMAT* pVideoFormat,
__out IMFVideoMediaType** ppIVideoMediaType _Out_ IMFVideoMediaType** ppIVideoMediaType
); );
STDAPI MFCreateVideoMediaTypeFromSubtype( STDAPI MFCreateVideoMediaTypeFromSubtype(
__in const GUID * pAMSubtype, _In_ const GUID * pAMSubtype,
__out IMFVideoMediaType **ppIVideoMediaType _Out_ IMFVideoMediaType **ppIVideoMediaType
); );
STDAPI_(BOOL) STDAPI_(BOOL)
MFIsFormatYUV( MFIsFormatYUV(
DWORD Format DWORD Format
); );
// //
// These depend on BITMAPINFOHEADER being defined // These depend on BITMAPINFOHEADER being defined
// //
STDAPI MFCreateVideoMediaTypeFromBitMapInfoHeader( STDAPI MFCreateVideoMediaTypeFromBitMapInfoHeader(
__in const BITMAPINFOHEADER* pbmihBitMapInfoHeader, _In_ const BITMAPINFOHEADER* pbmihBitMapInfoHeader,
DWORD dwPixelAspectRatioX, DWORD dwPixelAspectRatioX,
DWORD dwPixelAspectRatioY, DWORD dwPixelAspectRatioY,
MFVideoInterlaceMode InterlaceMode, MFVideoInterlaceMode InterlaceMode,
QWORD VideoFlags, QWORD VideoFlags,
QWORD qwFramesPerSecondNumerator, QWORD qwFramesPerSecondNumerator,
QWORD qwFramesPerSecondDenominator, QWORD qwFramesPerSecondDenominator,
DWORD dwMaxBitRate, DWORD dwMaxBitRate,
__out IMFVideoMediaType** ppIVideoMediaType _Out_ IMFVideoMediaType** ppIVideoMediaType
); );
STDAPI MFGetStrideForBitmapInfoHeader( STDAPI MFGetStrideForBitmapInfoHeader(
DWORD format, DWORD format,
DWORD dwWidth, DWORD dwWidth,
__out LONG* pStride _Out_ LONG* pStride
); );
STDAPI MFGetPlaneSize( STDAPI MFGetPlaneSize(
DWORD format, DWORD format,
DWORD dwWidth, DWORD dwWidth,
DWORD dwHeight, DWORD dwHeight,
__out DWORD* pdwPlaneSize _Out_ DWORD* pdwPlaneSize
); );
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
// //
// MFCreateVideoMediaTypeFromBitMapInfoHeaderEx // MFCreateVideoMediaTypeFromBitMapInfoHeaderEx
// //
STDAPI MFCreateVideoMediaTypeFromBitMapInfoHeaderEx( STDAPI MFCreateVideoMediaTypeFromBitMapInfoHeaderEx(
__in_bcount(cbBitMapInfoHeader) const BITMAPINFOHEADER* pbmihBitMapInfoHeade _In_reads_bytes_(cbBitMapInfoHeader) const BITMAPINFOHEADER* pbmihBitMapInfo
r, Header,
__in UINT32 cbBitMapInfoHeader, _In_ UINT32 cbBitMapInfoHeader,
DWORD dwPixelAspectRatioX, DWORD dwPixelAspectRatioX,
DWORD dwPixelAspectRatioY, DWORD dwPixelAspectRatioY,
MFVideoInterlaceMode InterlaceMode, MFVideoInterlaceMode InterlaceMode,
QWORD VideoFlags, QWORD VideoFlags,
DWORD dwFramesPerSecondNumerator, DWORD dwFramesPerSecondNumerator,
DWORD dwFramesPerSecondDenominator, DWORD dwFramesPerSecondDenominator,
DWORD dwMaxBitRate, DWORD dwMaxBitRate,
__out IMFVideoMediaType** ppIVideoMediaType _Out_ IMFVideoMediaType** ppIVideoMediaType
); );
#endif // (WINVER >= _WIN32_WINNT_WIN7) #endif // (WINVER >= _WIN32_WINNT_WIN7)
// //
// MFCreateMediaTypeFromRepresentation // MFCreateMediaTypeFromRepresentation
// //
STDAPI MFCreateMediaTypeFromRepresentation( STDAPI MFCreateMediaTypeFromRepresentation(
GUID guidRepresentation, GUID guidRepresentation,
__in LPVOID pvRepresentation, _In_ LPVOID pvRepresentation,
__out IMFMediaType** ppIMediaType _Out_ IMFMediaType** ppIMediaType
); );
// //
// MFCreateAudioMediaType // MFCreateAudioMediaType
// //
STDAPI STDAPI
MFCreateAudioMediaType( MFCreateAudioMediaType(
__in const WAVEFORMATEX* pAudioFormat, _In_ const WAVEFORMATEX* pAudioFormat,
__out IMFAudioMediaType** ppIAudioMediaType _Out_ IMFAudioMediaType** ppIAudioMediaType
); );
DWORD DWORD
STDMETHODCALLTYPE STDMETHODCALLTYPE
MFGetUncompressedVideoFormat( MFGetUncompressedVideoFormat(
__in const MFVIDEOFORMAT* pVideoFormat _In_ const MFVIDEOFORMAT* pVideoFormat
); );
STDAPI STDAPI
MFInitVideoFormat( MFInitVideoFormat(
__in MFVIDEOFORMAT* pVideoFormat, _In_ MFVIDEOFORMAT* pVideoFormat,
__in MFStandardVideoFormat type _In_ MFStandardVideoFormat type
); );
STDAPI STDAPI
MFInitVideoFormat_RGB( MFInitVideoFormat_RGB(
__in MFVIDEOFORMAT* pVideoFormat, _In_ MFVIDEOFORMAT* pVideoFormat,
__in DWORD dwWidth, _In_ DWORD dwWidth,
__in DWORD dwHeight, _In_ DWORD dwHeight,
__in DWORD D3Dfmt /* 0 indicates sRGB */ _In_ DWORD D3Dfmt /* 0 indicates sRGB */
); );
STDAPI STDAPI
MFConvertColorInfoToDXVA( MFConvertColorInfoToDXVA(
__out DWORD* pdwToDXVA, _Out_ DWORD* pdwToDXVA,
__in const MFVIDEOFORMAT* pFromFormat _In_ const MFVIDEOFORMAT* pFromFormat
); );
STDAPI STDAPI
MFConvertColorInfoFromDXVA( MFConvertColorInfoFromDXVA(
__inout MFVIDEOFORMAT* pToFormat, _Inout_ MFVIDEOFORMAT* pToFormat,
__in DWORD dwFromDXVA _In_ DWORD dwFromDXVA
); );
// //
// Optimized stride copy function // Optimized stride copy function
// //
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFCopyImage( STDAPI MFCopyImage(
__out_bcount(abs(lDestStride) * dwLines) BYTE* pDest, _Out_writes_bytes_(_Inexpressible_(abs(lDestStride) * dwLines)) BYTE* pDest ,
LONG lDestStride, LONG lDestStride,
__in_bcount(abs(lSrcStride) * dwLines) const BYTE* pSrc, _In_reads_bytes_(_Inexpressible_(abs(lSrcStride) * dwLines)) const BYTE* pSr c,
LONG lSrcStride, LONG lSrcStride,
__out_range(<=, min(abs(lSrcStride), abs(lDestStride))) DWORD dwWidthInByte s, _Out_range_(<=, _Inexpressible_(min(abs(lSrcStride), abs(lDestStride)))) DW ORD dwWidthInBytes,
DWORD dwLines DWORD dwLines
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI MFConvertFromFP16Array( STDAPI MFConvertFromFP16Array(
__out_ecount(dwCount) float* pDest, _Out_writes_(dwCount) float* pDest,
__in_ecount(dwCount) const WORD* pSrc, _In_reads_(dwCount) const WORD* pSrc,
DWORD dwCount DWORD dwCount
); );
STDAPI MFConvertToFP16Array( STDAPI MFConvertToFP16Array(
__out_ecount(dwCount) WORD* pDest, _Out_writes_(dwCount) WORD* pDest,
__in_ecount(dwCount) const float* pSrc, _In_reads_(dwCount) const float* pSrc,
DWORD dwCount DWORD dwCount
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
STDAPI MFCreate2DMediaBuffer(
_In_ DWORD dwWidth,
_In_ DWORD dwHeight,
_In_ DWORD dwFourCC,
_In_ BOOL fBottomUp,
_Out_ IMFMediaBuffer** ppBuffer
);
//
// Creates an optimal system memory media buffer from a media type
//
STDAPI MFCreateMediaBufferFromMediaType(
_In_ IMFMediaType* pMediaType,
_In_ LONGLONG llDuration, // Sample Duration, needed for audio
_In_ DWORD dwMinLength, // 0 means optimized default
_In_ DWORD dwMinAlignment, // 0 means optimized default
_Outptr_ IMFMediaBuffer** ppBuffer
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
//////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Attributes Utility functions ////////////////// ////////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Attributes Utility functions ////////////////// //////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus #ifdef __cplusplus
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
// //
// IMFAttributes inline UTILITY FUNCTIONS - used for IMFMediaType as well // IMFAttributes inline UTILITY FUNCTIONS - used for IMFMediaType as well
// //
inline inline
UINT32 UINT32
HI32(UINT64 unPacked) HI32(UINT64 unPacked)
{ {
return (UINT32)(unPacked >> 32); return (UINT32)(unPacked >> 32);
} }
skipping to change at line 1931 skipping to change at line 2778
inline inline
UINT64 UINT64
Pack2UINT32AsUINT64(UINT32 unHigh, UINT32 unLow) Pack2UINT32AsUINT64(UINT32 unHigh, UINT32 unLow)
{ {
return ((UINT64)unHigh << 32) | unLow; return ((UINT64)unHigh << 32) | unLow;
} }
inline inline
void void
Unpack2UINT32AsUINT64(UINT64 unPacked, __out UINT32* punHigh, __out UINT32* punL ow) Unpack2UINT32AsUINT64(UINT64 unPacked, _Out_ UINT32* punHigh, _Out_ UINT32* punL ow)
{ {
*punHigh = HI32(unPacked); *punHigh = HI32(unPacked);
*punLow = LO32(unPacked); *punLow = LO32(unPacked);
} }
inline inline
UINT64 UINT64
PackSize(UINT32 unWidth, UINT32 unHeight) PackSize(UINT32 unWidth, UINT32 unHeight)
{ {
return Pack2UINT32AsUINT64(unWidth, unHeight); return Pack2UINT32AsUINT64(unWidth, unHeight);
} }
inline inline
void void
UnpackSize(UINT64 unPacked, __out UINT32* punWidth, __out UINT32* punHeight) UnpackSize(UINT64 unPacked, _Out_ UINT32* punWidth, _Out_ UINT32* punHeight)
{ {
Unpack2UINT32AsUINT64(unPacked, punWidth, punHeight); Unpack2UINT32AsUINT64(unPacked, punWidth, punHeight);
} }
inline inline
UINT64 UINT64
PackRatio(INT32 nNumerator, UINT32 unDenominator) PackRatio(INT32 nNumerator, UINT32 unDenominator)
{ {
return Pack2UINT32AsUINT64((UINT32)nNumerator, unDenominator); return Pack2UINT32AsUINT64((UINT32)nNumerator, unDenominator);
} }
inline inline
void void
UnpackRatio(UINT64 unPacked, __out INT32* pnNumerator, __out UINT32* punDenomina tor) UnpackRatio(UINT64 unPacked, _Out_ INT32* pnNumerator, _Out_ UINT32* punDenomina tor)
{ {
Unpack2UINT32AsUINT64(unPacked, (UINT32*)pnNumerator, punDenominator); Unpack2UINT32AsUINT64(unPacked, (UINT32*)pnNumerator, punDenominator);
} }
// //
// "failsafe" inline get methods - return the stored value or return a default // "failsafe" inline get methods - return the stored value or return a default
// //
inline inline
UINT32 UINT32
MFGetAttributeUINT32( MFGetAttributeUINT32(
skipping to change at line 2022 skipping to change at line 2869
// //
// helpers for getting/setting ratios and sizes // helpers for getting/setting ratios and sizes
// //
inline inline
HRESULT HRESULT
MFGetAttribute2UINT32asUINT64( MFGetAttribute2UINT32asUINT64(
IMFAttributes* pAttributes, IMFAttributes* pAttributes,
REFGUID guidKey, REFGUID guidKey,
__out UINT32* punHigh32, _Out_ UINT32* punHigh32,
__out UINT32* punLow32 _Out_ UINT32* punLow32
) )
{ {
UINT64 unPacked; UINT64 unPacked;
HRESULT hr = S_OK; HRESULT hr = S_OK;
hr = pAttributes->GetUINT64(guidKey, &unPacked); hr = pAttributes->GetUINT64(guidKey, &unPacked);
if (FAILED(hr)) { if (FAILED(hr)) {
return hr; return hr;
} }
Unpack2UINT32AsUINT64(unPacked, punHigh32, punLow32); Unpack2UINT32AsUINT64(unPacked, punHigh32, punLow32);
skipping to change at line 2055 skipping to change at line 2902
) )
{ {
return pAttributes->SetUINT64(guidKey, Pack2UINT32AsUINT64(unHigh32, unLow32 )); return pAttributes->SetUINT64(guidKey, Pack2UINT32AsUINT64(unHigh32, unLow32 ));
} }
inline inline
HRESULT HRESULT
MFGetAttributeRatio( MFGetAttributeRatio(
IMFAttributes* pAttributes, IMFAttributes* pAttributes,
REFGUID guidKey, REFGUID guidKey,
__out UINT32* punNumerator, _Out_ UINT32* punNumerator,
__out UINT32* punDenominator _Out_ UINT32* punDenominator
) )
{ {
return MFGetAttribute2UINT32asUINT64(pAttributes, guidKey, punNumerator, pun Denominator); return MFGetAttribute2UINT32asUINT64(pAttributes, guidKey, punNumerator, pun Denominator);
} }
inline inline
HRESULT HRESULT
MFGetAttributeSize( MFGetAttributeSize(
IMFAttributes* pAttributes, IMFAttributes* pAttributes,
REFGUID guidKey, REFGUID guidKey,
__out UINT32* punWidth, _Out_ UINT32* punWidth,
__out UINT32* punHeight _Out_ UINT32* punHeight
) )
{ {
return MFGetAttribute2UINT32asUINT64(pAttributes, guidKey, punWidth, punHeig ht); return MFGetAttribute2UINT32asUINT64(pAttributes, guidKey, punWidth, punHeig ht);
} }
inline inline
HRESULT HRESULT
MFSetAttributeRatio( MFSetAttributeRatio(
IMFAttributes* pAttributes, IMFAttributes* pAttributes,
REFGUID guidKey, REFGUID guidKey,
skipping to change at line 2097 skipping to change at line 2944
HRESULT HRESULT
MFSetAttributeSize( MFSetAttributeSize(
IMFAttributes* pAttributes, IMFAttributes* pAttributes,
REFGUID guidKey, REFGUID guidKey,
UINT32 unWidth, UINT32 unWidth,
UINT32 unHeight UINT32 unHeight
) )
{ {
return MFSetAttribute2UINT32asUINT64(pAttributes, guidKey, unWidth, unHeight ); return MFSetAttribute2UINT32asUINT64(pAttributes, guidKey, unWidth, unHeight );
} }
#ifdef _INTSAFE_H_INCLUDED_
inline
HRESULT
MFGetAttributeString(
IMFAttributes* pAttributes,
REFGUID guidKey,
_Outptr_ PWSTR *ppsz
)
{
UINT32 length;
PWSTR psz = NULL;
*ppsz = NULL;
HRESULT hr = pAttributes->GetStringLength(guidKey, &length);
// add NULL to length
if (SUCCEEDED(hr)) {
hr = UIntAdd(length, 1, &length);
}
if (SUCCEEDED(hr)) {
size_t cb;
hr = SizeTMult(length, sizeof(WCHAR), &cb);
if( SUCCEEDED( hr ) )
{
psz = PWSTR( CoTaskMemAlloc( cb ) );
if( !psz )
{
hr = E_OUTOFMEMORY;
}
}
}
if (SUCCEEDED(hr)) {
hr = pAttributes->GetString(guidKey, psz, length, &length);
}
if (SUCCEEDED(hr)) {
*ppsz = psz;
} else {
CoTaskMemFree(psz);
}
return hr;
}
#endif // _INTSAFE_H_INCLUDED_
/////////////////////////////// Collection ////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// Instantiates the MF-provided IMFCollection implementation
//
STDAPI MFCreateCollection(
_Out_ IMFCollection **ppIMFCollection );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#endif #endif
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
//////////////////////////////// Memory Management //////////////////////////// //////////////////////////////// Memory Management ////////////////////////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// Heap alloc/free // Heap alloc/free
// //
typedef enum _EAllocationType typedef enum _EAllocationType
{ {
eAllocationTypeDynamic, eAllocationTypeDynamic,
eAllocationTypeRT, eAllocationTypeRT,
eAllocationTypePageable, eAllocationTypePageable,
eAllocationTypeIgnore eAllocationTypeIgnore
} EAllocationType; } EAllocationType;
EXTERN_C void* WINAPI MFHeapAlloc( size_t nSize, EXTERN_C void* WINAPI MFHeapAlloc( size_t nSize,
ULONG dwFlags, ULONG dwFlags,
__in_opt char *pszFile, _In_opt_ char *pszFile,
int line, int line,
EAllocationType eat); EAllocationType eat);
EXTERN_C void WINAPI MFHeapFree( void * pv ); EXTERN_C void WINAPI MFHeapFree( void * pv );
/////////////////////////////// Collection ////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// Instantiates the MF-provided IMFCollection implementation
//
STDAPI MFCreateCollection(
__out IMFCollection **ppIMFCollection );
////////////////////////// SourceResolver //////////////////////////// ////////////////////////// SourceResolver ////////////////////////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
DEFINE_GUID(CLSID_MFSourceResolver, DEFINE_GUID(CLSID_MFSourceResolver,
0x90eab60f, 0x90eab60f,
0xe43a, 0xe43a,
0x4188, 0x4188,
0xbc, 0xc4, 0xe4, 0x7f, 0xdf, 0x04, 0x86, 0x8c); 0xbc, 0xc4, 0xe4, 0x7f, 0xdf, 0x04, 0x86, 0x8c);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
// Return (a * b + d) / c // Return (a * b + d) / c
// Returns _I64_MAX or LLONG_MIN on failure or _I64_MAX if mplat.dll is not ava ilable // Returns _I64_MAX or LLONG_MIN on failure or _I64_MAX if mplat.dll is not ava ilable
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
LONGLONG WINAPI MFllMulDiv(LONGLONG a, LONGLONG b, LONGLONG c, LONGLONG d); LONGLONG WINAPI MFllMulDiv(LONGLONG a, LONGLONG b, LONGLONG c, LONGLONG d);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#endif // (WINVER >= _WIN32_WINNT_WIN7) #endif // (WINVER >= _WIN32_WINNT_WIN7)
////////////////////////// Content Protection ////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
STDAPI MFGetContentProtectionSystemCLSID(
_In_ REFGUID guidProtectionSystemID,
_Out_ CLSID *pclsid );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#if defined(__cplusplus) #if defined(__cplusplus)
} }
#endif #endif
#endif //#if !defined(__MFAPI_H__) #endif //#if !defined(__MFAPI_H__)
 End of changes. 185 change blocks. 
305 lines changed or deleted 1286 lines changed or added

This html diff was produced by rfcdiff 1.41.