diff --git a/mingw-w64-headers/include/mfapi.h b/mingw-w64-headers/include/mfapi.h
index 119e453..3e99293 100644
--- a/mingw-w64-headers/include/mfapi.h
+++ b/mingw-w64-headers/include/mfapi.h
@@ -443,6 +443,17 @@
   GUID  formattype;
 } MT_ARBITRARY_HEADER;
 
+enum _MFT_ENUM_FLAG {
+  MFT_ENUM_FLAG_SYNCMFT          = 0x00000001,
+  MFT_ENUM_FLAG_ASYNCMFT         = 0x00000002,
+  MFT_ENUM_FLAG_HARDWARE         = 0x00000004,
+  MFT_ENUM_FLAG_FIELDOFUSE       = 0x00000008,
+  MFT_ENUM_FLAG_LOCALMFT         = 0x00000010,
+  MFT_ENUM_FLAG_TRANSCODE_ONLY   = 0x00000020,
+  MFT_ENUM_FLAG_SORTANDFILTER    = 0x00000040,
+  MFT_ENUM_FLAG_ALL              = 0x0000003F
+};
+
 HRESULT WINAPI MFCreateMFByteStreamOnStream(IStream *pStream,IMFByteStream **ppByteStream);
 HRESULT WINAPI MFGetMFTMerit(IUnknown *pMFT,UINT32 cbVerifier,const BYTE *verifier,DWORD *merit);
 HRESULT WINAPI MFGetPluginControl(IMFPluginControl **ppPluginControl);
diff --git a/mingw-w64-headers/include/mfidl.h b/mingw-w64-headers/include/mfidl.h
index 19be78b..9ed0eb1 100644
--- a/mingw-w64-headers/include/mfidl.h
+++ b/mingw-w64-headers/include/mfidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.5.22 from include/mfidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.5.24 from include/mfidl.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
@@ -1454,6 +1454,14 @@
   WCHAR wszName[MAX_PATH];
 } MFRR_COMPONENT_HASH_INFO, *PMFRR_COMPONENT_HASH_INFO;
 EXTERN_GUID(MF_PD_DURATION, 0x6c990d33,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a);
+typedef enum _MF_CONNECT_METHOD {
+    MF_CONNECT_DIRECT = 0x0,
+    MF_CONNECT_ALLOW_CONVERTER = 0x1,
+    MF_CONNECT_ALLOW_DECODER = 0x3,
+    MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES = 0x4,
+    MF_CONNECT_AS_OPTIONAL = 0x10000,
+    MF_CONNECT_AS_OPTIONAL_BRANCH = 0x20000
+} MF_CONNECT_METHOD;
 /*****************************************************************************
  * IMFMediaSession interface
  */
diff --git a/mingw-w64-headers/include/mfidl.idl b/mingw-w64-headers/include/mfidl.idl
index f435b50..9c3a2fc 100644
--- a/mingw-w64-headers/include/mfidl.idl
+++ b/mingw-w64-headers/include/mfidl.idl
@@ -132,6 +132,15 @@
 
 cpp_quote("EXTERN_GUID(MF_PD_DURATION, 0x6c990d33,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a);")
 
+typedef enum _MF_CONNECT_METHOD {
+    MF_CONNECT_DIRECT                            = 0x00000000,
+    MF_CONNECT_ALLOW_CONVERTER                   = 0x00000001,
+    MF_CONNECT_ALLOW_DECODER                     = 0x00000003,
+    MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES   = 0x00000004,
+    MF_CONNECT_AS_OPTIONAL                       = 0x00010000,
+    MF_CONNECT_AS_OPTIONAL_BRANCH                = 0x00020000
+} MF_CONNECT_METHOD;
+
 [
     object,
     uuid(90377834-21d0-4dee-8214-ba2e3e6c1127),
diff --git a/mingw-w64-headers/include/mfobjects.h b/mingw-w64-headers/include/mfobjects.h
index d3cf429..2b5c576 100644
--- a/mingw-w64-headers/include/mfobjects.h
+++ b/mingw-w64-headers/include/mfobjects.h
@@ -87,6 +87,11 @@
 typedef interface IMFCollection IMFCollection;
 #endif
 
+#ifndef __IMFPluginControl_FWD_DEFINED__
+#define __IMFPluginControl_FWD_DEFINED__
+typedef interface IMFPluginControl IMFPluginControl;
+#endif
+
 /* Headers for imported files */
 
 #include <unknwn.h>
@@ -2304,6 +2309,10 @@
 
 #endif  /* __IMFMediaType_INTERFACE_DEFINED__ */
 
+#define MF_MEDIATYPE_EQUAL_MAJOR_TYPES          0x00000001
+#define MF_MEDIATYPE_EQUAL_FORMAT_TYPES         0x00000002
+#define MF_MEDIATYPE_EQUAL_FORMAT_DATA          0x00000004
+#define MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA     0x00000008
 /*****************************************************************************
  * IMFAudioMediaType interface
  */
@@ -2711,6 +2720,28 @@
     GUID guidMajorType;
     GUID guidSubtype;
 } MFT_REGISTER_TYPE_INFO;
+typedef enum _MFVideoFlags {
+    MFVideoFlag_PAD_TO_Mask = 0x1 | 0x2,
+    MFVideoFlag_PAD_TO_None = 0 * 0x1,
+    MFVideoFlag_PAD_TO_4x3 = 1 * 0x1,
+    MFVideoFlag_PAD_TO_16x9 = 2 * 0x1,
+    MFVideoFlag_SrcContentHintMask = (0x4 | 0x8) | 0x10,
+    MFVideoFlag_SrcContentHintNone = 0 * 0x4,
+    MFVideoFlag_SrcContentHint16x9 = 1 * 0x4,
+    MFVideoFlag_SrcContentHint235_1 = 2 * 0x4,
+    MFVideoFlag_AnalogProtected = 0x20,
+    MFVideoFlag_DigitallyProtected = 0x40,
+    MFVideoFlag_ProgressiveContent = 0x80,
+    MFVideoFlag_FieldRepeatCountMask = (0x100 | 0x200) | 0x400,
+    MFVideoFlag_FieldRepeatCountShift = 8,
+    MFVideoFlag_ProgressiveSeqReset = 0x800,
+    MFVideoFlag_PanScanEnabled = 0x20000,
+    MFVideoFlag_LowerFieldFirst = 0x40000,
+    MFVideoFlag_BottomUpLinearRep = 0x80000,
+    MFVideoFlags_DXVASurface = 0x100000,
+    MFVideoFlags_RenderTargetSurface = 0x400000,
+    MFVideoFlags_ForceQWORD = 0x7fffffff
+} MFVideoFlags;
 typedef struct _MFRatio {
     DWORD Numerator;
     DWORD Denominator;
@@ -2853,6 +2884,18 @@
     MFVideoCompressedInfo compressedInfo;
     MFVideoSurfaceInfo surfaceInfo;
 } MFVIDEOFORMAT;
+typedef enum _MFStandardVideoFormat {
+    MFStdVideoFormat_reserved = 0,
+    MFStdVideoFormat_NTSC = 1,
+    MFStdVideoFormat_PAL = 2,
+    MFStdVideoFormat_DVD_NTSC = 3,
+    MFStdVideoFormat_DVD_PAL = 4,
+    MFStdVideoFormat_DV_PAL = 5,
+    MFStdVideoFormat_DV_NTSC = 6,
+    MFStdVideoFormat_ATSC_SD480i = 7,
+    MFStdVideoFormat_ATSC_HD1080i = 8,
+    MFStdVideoFormat_ATSC_HD720p = 9
+} MFStandardVideoFormat;
 /*****************************************************************************
  * IMFVideoMediaType interface
  */
@@ -4549,6 +4592,38 @@
 
 #endif  /* __IMFByteStream_INTERFACE_DEFINED__ */
 
+#define MFBYTESTREAM_IS_READABLE                0x00000001
+#define MFBYTESTREAM_IS_WRITABLE                0x00000002
+#define MFBYTESTREAM_IS_SEEKABLE                0x00000004
+#define MFBYTESTREAM_IS_REMOTE                  0x00000008
+#define MFBYTESTREAM_IS_DIRECTORY               0x00000080
+#define MFBYTESTREAM_HAS_SLOW_SEEK              0x00000100
+#define MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED    0x00000200
+#define MFBYTESTREAM_SHARE_WRITE                0x00000400
+#define MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO  0x00000001
+EXTERN_GUID(MF_BYTESTREAM_ORIGIN_NAME,        0xfc358288,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
+EXTERN_GUID(MF_BYTESTREAM_CONTENT_TYPE,       0xfc358289,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
+EXTERN_GUID(MF_BYTESTREAM_DURATION,           0xfc35828a,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
+EXTERN_GUID(MF_BYTESTREAM_LAST_MODIFIED_TIME, 0xfc35828b,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
+EXTERN_GUID(MF_BYTESTREAM_IFO_FILE_URI,       0xfc35828c,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
+EXTERN_GUID(MF_BYTESTREAM_DLNA_PROFILE_ID,    0xfc35828d,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
+typedef enum MF_FILE_ACCESSMODE {
+    MF_ACCESSMODE_READ = 1,
+    MF_ACCESSMODE_WRITE = 2,
+    MF_ACCESSMODE_READWRITE = 3
+} MF_FILE_ACCESSMODE;
+typedef enum __WIDL_mmreg_h_generated_name_00000002 {
+    MF_OPENMODE_FAIL_IF_NOT_EXIST = 0,
+    MF_OPENMODE_FAIL_IF_EXIST = 1,
+    MF_OPENMODE_RESET_IF_EXIST = 2,
+    MF_OPENMODE_APPEND_IF_EXIST = 3,
+    MF_OPENMODE_DELETE_IF_EXIST = 4
+} MF_FILE_OPENMODE;
+typedef enum __WIDL_mmreg_h_generated_name_00000003 {
+    MF_FILEFLAGS_NONE = 0x0,
+    MF_FILEFLAGS_NOBUFFERING = 0x1,
+    MF_FILEFLAGS_ALLOW_WRITE_SHARING = 0x2
+} MF_FILE_FLAGS;
 /*****************************************************************************
  * IMFCollection interface
  */
@@ -4735,93 +4810,225 @@
 
 #endif  /* __IMFCollection_INTERFACE_DEFINED__ */
 
-typedef enum _MF_CONNECT_METHOD {
-  MF_CONNECT_DIRECT                            = 0x00000000,
-  MF_CONNECT_ALLOW_CONVERTER                   = 0x00000001,
-  MF_CONNECT_ALLOW_DECODER                     = 0x00000003,
-  MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES   = 0x00000004,
-  MF_CONNECT_AS_OPTIONAL                       = 0x00010000,
-  MF_CONNECT_AS_OPTIONAL_BRANCH                = 0x00020000 
-} MF_CONNECT_METHOD;
-
-typedef enum MF_FILE_ACCESSMODE {
-  MF_ACCESSMODE_READ        = 1,
-  MF_ACCESSMODE_WRITE       = 2,
-  MF_ACCESSMODE_READWRITE   = 3 
-} MF_FILE_ACCESSMODE;
-
-typedef enum  {
-  MF_FILEFLAGS_NONE                  = 0x00000000,
-  MF_FILEFLAGS_NOBUFFERING           = 0x00000001,
-  MF_FILEFLAGS_ALLOW_WRITE_SHARING   = 0x00000002 
-} MF_FILE_FLAGS;
-
-typedef enum  {
-  MF_OPENMODE_FAIL_IF_NOT_EXIST   = 0,
-  MF_OPENMODE_FAIL_IF_EXIST       = 1,
-  MF_OPENMODE_RESET_IF_EXIST      = 2,
-  MF_OPENMODE_APPEND_IF_EXIST     = 3,
-  MF_OPENMODE_DELETE_IF_EXIST     = 4 
-} MF_FILE_OPENMODE;
-
-#if (_WIN32_WINNT >= 0x0601)
-
 typedef enum _MF_Plugin_Type {
-  MF_Plugin_Type_MFT           = 0,
-  MF_Plugin_Type_MediaSource   = 1 
+    MF_Plugin_Type_MFT = 0,
+    MF_Plugin_Type_MediaSource = 1
 } MF_Plugin_Type;
+/*****************************************************************************
+ * IMFPluginControl interface
+ */
+#ifndef __IMFPluginControl_INTERFACE_DEFINED__
+#define __IMFPluginControl_INTERFACE_DEFINED__
 
-#endif /*(_WIN32_WINNT >= 0x0601)*/
+DEFINE_GUID(IID_IMFPluginControl, 0x5c6c44bf, 0x1db6, 0x435b, 0x92,0x49, 0xe8,0xcd,0x10,0xfd,0xec,0x96);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("5c6c44bf-1db6-435b-9249-e8cd10fdec96")
+IMFPluginControl : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetPreferredClsid(
+        DWORD pluginType,
+        LPCWSTR selector,
+        CLSID *clsid) = 0;
 
-typedef enum _MFStandardVideoFormat {
-  MFStdVideoFormat_reserved       = 0,
-  MFStdVideoFormat_NTSC,
-  MFStdVideoFormat_PAL,
-  MFStdVideoFormat_DVD_NTSC,
-  MFStdVideoFormat_DVD_PAL,
-  MFStdVideoFormat_DV_PAL,
-  MFStdVideoFormat_DV_NTSC,
-  MFStdVideoFormat_ATSC_SD480i,
-  MFStdVideoFormat_ATSC_HD1080i,
-  MFStdVideoFormat_ATSC_HD720p 
-} MFStandardVideoFormat;
+    virtual HRESULT STDMETHODCALLTYPE GetPreferredClsidByIndex(
+        DWORD pluginType,
+        DWORD index,
+        LPWSTR *selector,
+        CLSID *clsid) = 0;
 
-typedef enum _MFVideoFlags {
-  MFVideoFlag_PAD_TO_Mask             = 0x0001 | 0x0002,
-  MFVideoFlag_PAD_TO_None             = 0 * 0x0001,
-  MFVideoFlag_PAD_TO_4x3              = 1 * 0x0001,
-  MFVideoFlag_PAD_TO_16x9             = 2 * 0x0001,
-  MFVideoFlag_SrcContentHintMask      = 0x0004 | 0x0008 | 0x0010,
-  MFVideoFlag_SrcContentHintNone      = 0 * 0x0004,
-  MFVideoFlag_SrcContentHint16x9      = 1 * 0x0004,
-  MFVideoFlag_SrcContentHint235_1     = 2 * 0x0004,
-  MFVideoFlag_AnalogProtected         = 0x0020,
-  MFVideoFlag_DigitallyProtected      = 0x0040,
-  MFVideoFlag_ProgressiveContent      = 0x0080,
-  MFVideoFlag_FieldRepeatCountMask    = 0x0100 | 0x0200 | 0x0400,
-  MFVideoFlag_FieldRepeatCountShift   = 8,
-  MFVideoFlag_ProgressiveSeqReset     = 0x0800,
-  MFVideoFlag_PanScanEnabled          = 0x20000,
-  MFVideoFlag_LowerFieldFirst         = 0x40000,
-  MFVideoFlag_BottomUpLinearRep       = 0x80000,
-  MFVideoFlags_DXVASurface            = 0x100000,
-  MFVideoFlags_RenderTargetSurface    = 0x400000,
-  MFVideoFlags_ForceQWORD             = 0x7FFFFFFF 
-} MFVideoFlags;
+    virtual HRESULT STDMETHODCALLTYPE SetPreferredClsid(
+        DWORD pluginType,
+        LPCWSTR selector,
+        const CLSID *clsid) = 0;
 
-#define MF_MEDIATYPE_EQUAL_MAJOR_TYPES          0x00000001
-#define MF_MEDIATYPE_EQUAL_FORMAT_TYPES         0x00000002
-#define MF_MEDIATYPE_EQUAL_FORMAT_DATA          0x00000004
-#define MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA     0x00000008
+    virtual HRESULT STDMETHODCALLTYPE IsDisabled(
+        DWORD pluginType,
+        REFCLSID clsid) = 0;
 
-#define MFBYTESTREAM_IS_READABLE                0x00000001
-#define MFBYTESTREAM_IS_WRITABLE                0x00000002
-#define MFBYTESTREAM_IS_SEEKABLE                0x00000004
-#define MFBYTESTREAM_IS_REMOTE                  0x00000008
-#define MFBYTESTREAM_IS_DIRECTORY               0x00000080
-#define MFBYTESTREAM_HAS_SLOW_SEEK              0x00000100
-#define MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED    0x00000200
-#define MFBYTESTREAM_SHARE_WRITE                0x00000400
+    virtual HRESULT STDMETHODCALLTYPE GetDisabledByIndex(
+        DWORD pluginType,
+        DWORD index,
+        CLSID *clsid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDisabled(
+        DWORD pluginType,
+        REFCLSID clsid,
+        WINBOOL disabled) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFPluginControl, 0x5c6c44bf, 0x1db6, 0x435b, 0x92,0x49, 0xe8,0xcd,0x10,0xfd,0xec,0x96)
+#endif
+#else
+typedef struct IMFPluginControlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMFPluginControl* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMFPluginControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMFPluginControl* This);
+
+    /*** IMFPluginControl methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetPreferredClsid)(
+        IMFPluginControl* This,
+        DWORD pluginType,
+        LPCWSTR selector,
+        CLSID *clsid);
+
+    HRESULT (STDMETHODCALLTYPE *GetPreferredClsidByIndex)(
+        IMFPluginControl* This,
+        DWORD pluginType,
+        DWORD index,
+        LPWSTR *selector,
+        CLSID *clsid);
+
+    HRESULT (STDMETHODCALLTYPE *SetPreferredClsid)(
+        IMFPluginControl* This,
+        DWORD pluginType,
+        LPCWSTR selector,
+        const CLSID *clsid);
+
+    HRESULT (STDMETHODCALLTYPE *IsDisabled)(
+        IMFPluginControl* This,
+        DWORD pluginType,
+        REFCLSID clsid);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisabledByIndex)(
+        IMFPluginControl* This,
+        DWORD pluginType,
+        DWORD index,
+        CLSID *clsid);
+
+    HRESULT (STDMETHODCALLTYPE *SetDisabled)(
+        IMFPluginControl* This,
+        DWORD pluginType,
+        REFCLSID clsid,
+        WINBOOL disabled);
+
+    END_INTERFACE
+} IMFPluginControlVtbl;
+interface IMFPluginControl {
+    CONST_VTBL IMFPluginControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFPluginControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFPluginControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFPluginControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFPluginControl methods ***/
+#define IMFPluginControl_GetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid)
+#define IMFPluginControl_GetPreferredClsidByIndex(This,pluginType,index,selector,clsid) (This)->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid)
+#define IMFPluginControl_SetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid)
+#define IMFPluginControl_IsDisabled(This,pluginType,clsid) (This)->lpVtbl->IsDisabled(This,pluginType,clsid)
+#define IMFPluginControl_GetDisabledByIndex(This,pluginType,index,clsid) (This)->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid)
+#define IMFPluginControl_SetDisabled(This,pluginType,clsid,disabled) (This)->lpVtbl->SetDisabled(This,pluginType,clsid,disabled)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFPluginControl_QueryInterface(IMFPluginControl* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFPluginControl_AddRef(IMFPluginControl* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFPluginControl_Release(IMFPluginControl* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IMFPluginControl methods ***/
+static FORCEINLINE HRESULT IMFPluginControl_GetPreferredClsid(IMFPluginControl* This,DWORD pluginType,LPCWSTR selector,CLSID *clsid) {
+    return This->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid);
+}
+static FORCEINLINE HRESULT IMFPluginControl_GetPreferredClsidByIndex(IMFPluginControl* This,DWORD pluginType,DWORD index,LPWSTR *selector,CLSID *clsid) {
+    return This->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid);
+}
+static FORCEINLINE HRESULT IMFPluginControl_SetPreferredClsid(IMFPluginControl* This,DWORD pluginType,LPCWSTR selector,const CLSID *clsid) {
+    return This->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid);
+}
+static FORCEINLINE HRESULT IMFPluginControl_IsDisabled(IMFPluginControl* This,DWORD pluginType,REFCLSID clsid) {
+    return This->lpVtbl->IsDisabled(This,pluginType,clsid);
+}
+static FORCEINLINE HRESULT IMFPluginControl_GetDisabledByIndex(IMFPluginControl* This,DWORD pluginType,DWORD index,CLSID *clsid) {
+    return This->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid);
+}
+static FORCEINLINE HRESULT IMFPluginControl_SetDisabled(IMFPluginControl* This,DWORD pluginType,REFCLSID clsid,WINBOOL disabled) {
+    return This->lpVtbl->SetDisabled(This,pluginType,clsid,disabled);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMFPluginControl_GetPreferredClsid_Proxy(
+    IMFPluginControl* This,
+    DWORD pluginType,
+    LPCWSTR selector,
+    CLSID *clsid);
+void __RPC_STUB IMFPluginControl_GetPreferredClsid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMFPluginControl_GetPreferredClsidByIndex_Proxy(
+    IMFPluginControl* This,
+    DWORD pluginType,
+    DWORD index,
+    LPWSTR *selector,
+    CLSID *clsid);
+void __RPC_STUB IMFPluginControl_GetPreferredClsidByIndex_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMFPluginControl_SetPreferredClsid_Proxy(
+    IMFPluginControl* This,
+    DWORD pluginType,
+    LPCWSTR selector,
+    const CLSID *clsid);
+void __RPC_STUB IMFPluginControl_SetPreferredClsid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMFPluginControl_IsDisabled_Proxy(
+    IMFPluginControl* This,
+    DWORD pluginType,
+    REFCLSID clsid);
+void __RPC_STUB IMFPluginControl_IsDisabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMFPluginControl_GetDisabledByIndex_Proxy(
+    IMFPluginControl* This,
+    DWORD pluginType,
+    DWORD index,
+    CLSID *clsid);
+void __RPC_STUB IMFPluginControl_GetDisabledByIndex_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMFPluginControl_SetDisabled_Proxy(
+    IMFPluginControl* This,
+    DWORD pluginType,
+    REFCLSID clsid,
+    WINBOOL disabled);
+void __RPC_STUB IMFPluginControl_SetDisabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMFPluginControl_INTERFACE_DEFINED__ */
+
 /* Begin additional prototypes for all interfaces */
 
 ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
diff --git a/mingw-w64-headers/include/mfobjects.idl b/mingw-w64-headers/include/mfobjects.idl
index 767f46f..a9d744e 100644
--- a/mingw-w64-headers/include/mfobjects.idl
+++ b/mingw-w64-headers/include/mfobjects.idl
@@ -143,6 +143,11 @@
     HRESULT FreeRepresentation([in] GUID guidRepresentation, [in] LPVOID pvRepresentation);
 }
 
+cpp_quote("#define MF_MEDIATYPE_EQUAL_MAJOR_TYPES          0x00000001")
+cpp_quote("#define MF_MEDIATYPE_EQUAL_FORMAT_TYPES         0x00000002")
+cpp_quote("#define MF_MEDIATYPE_EQUAL_FORMAT_DATA          0x00000004")
+cpp_quote("#define MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA     0x00000008")
+
 [
     object,
     uuid(26a0adc3-ce26-4672-9304-69552edd3faf),
@@ -158,6 +163,29 @@
     GUID guidSubtype;
 } MFT_REGISTER_TYPE_INFO;
 
+typedef enum _MFVideoFlags {
+    MFVideoFlag_PAD_TO_Mask             = 0x0001 | 0x0002,
+    MFVideoFlag_PAD_TO_None             = 0 * 0x0001,
+    MFVideoFlag_PAD_TO_4x3              = 1 * 0x0001,
+    MFVideoFlag_PAD_TO_16x9             = 2 * 0x0001,
+    MFVideoFlag_SrcContentHintMask      = 0x0004 | 0x0008 | 0x0010,
+    MFVideoFlag_SrcContentHintNone      = 0 * 0x0004,
+    MFVideoFlag_SrcContentHint16x9      = 1 * 0x0004,
+    MFVideoFlag_SrcContentHint235_1     = 2 * 0x0004,
+    MFVideoFlag_AnalogProtected         = 0x0020,
+    MFVideoFlag_DigitallyProtected      = 0x0040,
+    MFVideoFlag_ProgressiveContent      = 0x0080,
+    MFVideoFlag_FieldRepeatCountMask    = 0x0100 | 0x0200 | 0x0400,
+    MFVideoFlag_FieldRepeatCountShift   = 8,
+    MFVideoFlag_ProgressiveSeqReset     = 0x0800,
+    MFVideoFlag_PanScanEnabled          = 0x20000,
+    MFVideoFlag_LowerFieldFirst         = 0x40000,
+    MFVideoFlag_BottomUpLinearRep       = 0x80000,
+    MFVideoFlags_DXVASurface            = 0x100000,
+    MFVideoFlags_RenderTargetSurface    = 0x400000,
+    MFVideoFlags_ForceQWORD             = 0x7FFFFFFF
+} MFVideoFlags;
+
 typedef struct _MFRatio {
     DWORD Numerator;
     DWORD Denominator;
@@ -325,6 +353,19 @@
     MFVideoSurfaceInfo    surfaceInfo;
 } MFVIDEOFORMAT;
 
+typedef enum _MFStandardVideoFormat {
+  MFStdVideoFormat_reserved       = 0,
+  MFStdVideoFormat_NTSC,
+  MFStdVideoFormat_PAL,
+  MFStdVideoFormat_DVD_NTSC,
+  MFStdVideoFormat_DVD_PAL,
+  MFStdVideoFormat_DV_PAL,
+  MFStdVideoFormat_DV_NTSC,
+  MFStdVideoFormat_ATSC_SD480i,
+  MFStdVideoFormat_ATSC_HD1080i,
+  MFStdVideoFormat_ATSC_HD720p
+} MFStandardVideoFormat;
+
 [
     object,
     uuid(b99f381f-a8f9-47a2-a5af-ca3a225a3890),
@@ -446,6 +487,44 @@
     HRESULT Close();
 }
 
+cpp_quote("#define MFBYTESTREAM_IS_READABLE                0x00000001")
+cpp_quote("#define MFBYTESTREAM_IS_WRITABLE                0x00000002")
+cpp_quote("#define MFBYTESTREAM_IS_SEEKABLE                0x00000004")
+cpp_quote("#define MFBYTESTREAM_IS_REMOTE                  0x00000008")
+cpp_quote("#define MFBYTESTREAM_IS_DIRECTORY               0x00000080")
+cpp_quote("#define MFBYTESTREAM_HAS_SLOW_SEEK              0x00000100")
+cpp_quote("#define MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED    0x00000200")
+cpp_quote("#define MFBYTESTREAM_SHARE_WRITE                0x00000400")
+
+cpp_quote("#define MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO  0x00000001")
+
+cpp_quote("EXTERN_GUID(MF_BYTESTREAM_ORIGIN_NAME,        0xfc358288,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);")
+cpp_quote("EXTERN_GUID(MF_BYTESTREAM_CONTENT_TYPE,       0xfc358289,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);")
+cpp_quote("EXTERN_GUID(MF_BYTESTREAM_DURATION,           0xfc35828a,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);")
+cpp_quote("EXTERN_GUID(MF_BYTESTREAM_LAST_MODIFIED_TIME, 0xfc35828b,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);")
+cpp_quote("EXTERN_GUID(MF_BYTESTREAM_IFO_FILE_URI,       0xfc35828c,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);")
+cpp_quote("EXTERN_GUID(MF_BYTESTREAM_DLNA_PROFILE_ID,    0xfc35828d,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);")
+
+typedef enum MF_FILE_ACCESSMODE {
+    MF_ACCESSMODE_READ      = 1,
+    MF_ACCESSMODE_WRITE     = 2,
+    MF_ACCESSMODE_READWRITE = 3 
+} MF_FILE_ACCESSMODE;
+
+typedef enum  {
+    MF_OPENMODE_FAIL_IF_NOT_EXIST   = 0,
+    MF_OPENMODE_FAIL_IF_EXIST       = 1,
+    MF_OPENMODE_RESET_IF_EXIST      = 2,
+    MF_OPENMODE_APPEND_IF_EXIST     = 3,
+    MF_OPENMODE_DELETE_IF_EXIST     = 4 
+} MF_FILE_OPENMODE;
+
+typedef enum  {
+    MF_FILEFLAGS_NONE                  = 0x00000000,
+    MF_FILEFLAGS_NOBUFFERING           = 0x00000001,
+    MF_FILEFLAGS_ALLOW_WRITE_SHARING   = 0x00000002 
+} MF_FILE_FLAGS;
+
 [
     object,
     uuid(5bc8a76b-869a-46a3-9b03-fa218a66aebe)
@@ -460,90 +539,23 @@
     HRESULT RemoveAllElements();
 }
 
-cpp_quote("typedef enum _MF_CONNECT_METHOD {")
-cpp_quote("  MF_CONNECT_DIRECT                            = 0x00000000,")
-cpp_quote("  MF_CONNECT_ALLOW_CONVERTER                   = 0x00000001,")
-cpp_quote("  MF_CONNECT_ALLOW_DECODER                     = 0x00000003,")
-cpp_quote("  MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES   = 0x00000004,")
-cpp_quote("  MF_CONNECT_AS_OPTIONAL                       = 0x00010000,")
-cpp_quote("  MF_CONNECT_AS_OPTIONAL_BRANCH                = 0x00020000 ")
-cpp_quote("} MF_CONNECT_METHOD;")
-cpp_quote("")
-cpp_quote("typedef enum MF_FILE_ACCESSMODE {")
-cpp_quote("  MF_ACCESSMODE_READ        = 1,")
-cpp_quote("  MF_ACCESSMODE_WRITE       = 2,")
-cpp_quote("  MF_ACCESSMODE_READWRITE   = 3 ")
-cpp_quote("} MF_FILE_ACCESSMODE;")
-cpp_quote("")
-cpp_quote("typedef enum  {")
-cpp_quote("  MF_FILEFLAGS_NONE                  = 0x00000000,")
-cpp_quote("  MF_FILEFLAGS_NOBUFFERING           = 0x00000001,")
-cpp_quote("  MF_FILEFLAGS_ALLOW_WRITE_SHARING   = 0x00000002 ")
-cpp_quote("} MF_FILE_FLAGS;")
-cpp_quote("")
-cpp_quote("typedef enum  {")
-cpp_quote("  MF_OPENMODE_FAIL_IF_NOT_EXIST   = 0,")
-cpp_quote("  MF_OPENMODE_FAIL_IF_EXIST       = 1,")
-cpp_quote("  MF_OPENMODE_RESET_IF_EXIST      = 2,")
-cpp_quote("  MF_OPENMODE_APPEND_IF_EXIST     = 3,")
-cpp_quote("  MF_OPENMODE_DELETE_IF_EXIST     = 4 ")
-cpp_quote("} MF_FILE_OPENMODE;")
-cpp_quote("")
-cpp_quote("#if (_WIN32_WINNT >= 0x0601)")
-cpp_quote("")
-cpp_quote("typedef enum _MF_Plugin_Type {")
-cpp_quote("  MF_Plugin_Type_MFT           = 0,")
-cpp_quote("  MF_Plugin_Type_MediaSource   = 1 ")
-cpp_quote("} MF_Plugin_Type;")
-cpp_quote("")
-cpp_quote("#endif /*(_WIN32_WINNT >= 0x0601)*/")
-cpp_quote("")
-cpp_quote("typedef enum _MFStandardVideoFormat {")
-cpp_quote("  MFStdVideoFormat_reserved       = 0,")
-cpp_quote("  MFStdVideoFormat_NTSC,")
-cpp_quote("  MFStdVideoFormat_PAL,")
-cpp_quote("  MFStdVideoFormat_DVD_NTSC,")
-cpp_quote("  MFStdVideoFormat_DVD_PAL,")
-cpp_quote("  MFStdVideoFormat_DV_PAL,")
-cpp_quote("  MFStdVideoFormat_DV_NTSC,")
-cpp_quote("  MFStdVideoFormat_ATSC_SD480i,")
-cpp_quote("  MFStdVideoFormat_ATSC_HD1080i,")
-cpp_quote("  MFStdVideoFormat_ATSC_HD720p ")
-cpp_quote("} MFStandardVideoFormat;")
-cpp_quote("")
-cpp_quote("typedef enum _MFVideoFlags {")
-cpp_quote("  MFVideoFlag_PAD_TO_Mask             = 0x0001 | 0x0002,")
-cpp_quote("  MFVideoFlag_PAD_TO_None             = 0 * 0x0001,")
-cpp_quote("  MFVideoFlag_PAD_TO_4x3              = 1 * 0x0001,")
-cpp_quote("  MFVideoFlag_PAD_TO_16x9             = 2 * 0x0001,")
-cpp_quote("  MFVideoFlag_SrcContentHintMask      = 0x0004 | 0x0008 | 0x0010,")
-cpp_quote("  MFVideoFlag_SrcContentHintNone      = 0 * 0x0004,")
-cpp_quote("  MFVideoFlag_SrcContentHint16x9      = 1 * 0x0004,")
-cpp_quote("  MFVideoFlag_SrcContentHint235_1     = 2 * 0x0004,")
-cpp_quote("  MFVideoFlag_AnalogProtected         = 0x0020,")
-cpp_quote("  MFVideoFlag_DigitallyProtected      = 0x0040,")
-cpp_quote("  MFVideoFlag_ProgressiveContent      = 0x0080,")
-cpp_quote("  MFVideoFlag_FieldRepeatCountMask    = 0x0100 | 0x0200 | 0x0400,")
-cpp_quote("  MFVideoFlag_FieldRepeatCountShift   = 8,")
-cpp_quote("  MFVideoFlag_ProgressiveSeqReset     = 0x0800,")
-cpp_quote("  MFVideoFlag_PanScanEnabled          = 0x20000,")
-cpp_quote("  MFVideoFlag_LowerFieldFirst         = 0x40000,")
-cpp_quote("  MFVideoFlag_BottomUpLinearRep       = 0x80000,")
-cpp_quote("  MFVideoFlags_DXVASurface            = 0x100000,")
-cpp_quote("  MFVideoFlags_RenderTargetSurface    = 0x400000,")
-cpp_quote("  MFVideoFlags_ForceQWORD             = 0x7FFFFFFF ")
-cpp_quote("} MFVideoFlags;")
-cpp_quote("")
-cpp_quote("#define MF_MEDIATYPE_EQUAL_MAJOR_TYPES          0x00000001")
-cpp_quote("#define MF_MEDIATYPE_EQUAL_FORMAT_TYPES         0x00000002")
-cpp_quote("#define MF_MEDIATYPE_EQUAL_FORMAT_DATA          0x00000004")
-cpp_quote("#define MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA     0x00000008")
-cpp_quote("")
-cpp_quote("#define MFBYTESTREAM_IS_READABLE                0x00000001")
-cpp_quote("#define MFBYTESTREAM_IS_WRITABLE                0x00000002")
-cpp_quote("#define MFBYTESTREAM_IS_SEEKABLE                0x00000004")
-cpp_quote("#define MFBYTESTREAM_IS_REMOTE                  0x00000008")
-cpp_quote("#define MFBYTESTREAM_IS_DIRECTORY               0x00000080")
-cpp_quote("#define MFBYTESTREAM_HAS_SLOW_SEEK              0x00000100")
-cpp_quote("#define MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED    0x00000200")
-cpp_quote("#define MFBYTESTREAM_SHARE_WRITE                0x00000400")
+typedef enum _MF_Plugin_Type {
+    MF_Plugin_Type_MFT           = 0,
+    MF_Plugin_Type_MediaSource   = 1
+} MF_Plugin_Type;
+
+[
+    object,
+    local,
+    uuid(5c6c44bf-1db6-435b-9249-e8cd10fdec96),
+    pointer_default(unique)
+]
+interface IMFPluginControl : IUnknown
+{
+   HRESULT GetPreferredClsid(DWORD pluginType, LPCWSTR selector, CLSID *clsid);
+   HRESULT GetPreferredClsidByIndex(DWORD pluginType, DWORD index, LPWSTR *selector, CLSID *clsid);
+   HRESULT SetPreferredClsid(DWORD pluginType, LPCWSTR selector, const CLSID *clsid);
+   HRESULT IsDisabled(DWORD pluginType, REFCLSID clsid);
+   HRESULT GetDisabledByIndex(DWORD pluginType, DWORD index, CLSID *clsid);
+   HRESULT SetDisabled(DWORD pluginType, REFCLSID clsid, BOOL disabled);
+}
diff --git a/mingw-w64-headers/include/mfplay.h b/mingw-w64-headers/include/mfplay.h
index 0263a5f..89680d9 100644
--- a/mingw-w64-headers/include/mfplay.h
+++ b/mingw-w64-headers/include/mfplay.h
@@ -32,17 +32,6 @@
   MFP_CREDENTIAL_LOGGED_ON_USER   = 0x00000020 
 } _MFP_CREDENTIAL_FLAGS;
 
-enum _MFT_ENUM_FLAG {
-  MFT_ENUM_FLAG_SYNCMFT          = 0x00000001,
-  MFT_ENUM_FLAG_ASYNCMFT         = 0x00000002,
-  MFT_ENUM_FLAG_HARDWARE         = 0x00000004,
-  MFT_ENUM_FLAG_FIELDOFUSE       = 0x00000008,
-  MFT_ENUM_FLAG_LOCALMFT         = 0x00000010,
-  MFT_ENUM_FLAG_TRANSCODE_ONLY   = 0x00000020,
-  MFT_ENUM_FLAG_SORTANDFILTER    = 0x00000040,
-  MFT_ENUM_FLAG_ALL              = 0x0000003F 
-};
-
 typedef enum MFP_EVENT_TYPE {
   MFP_EVENT_TYPE_PLAY                      = 0,
   MFP_EVENT_TYPE_PAUSE                     = 1,
diff --git a/mingw-w64-headers/include/mfreadwrite.h b/mingw-w64-headers/include/mfreadwrite.h
index 14445aa..5ca6a77 100644
--- a/mingw-w64-headers/include/mfreadwrite.h
+++ b/mingw-w64-headers/include/mfreadwrite.h
@@ -27,6 +27,11 @@
 typedef interface IMFSinkWriter IMFSinkWriter;
 #endif
 
+#ifndef __IMFSourceReaderCallback_FWD_DEFINED__
+#define __IMFSourceReaderCallback_FWD_DEFINED__
+typedef interface IMFSourceReaderCallback IMFSourceReaderCallback;
+#endif
+
 /* Headers for imported files */
 
 #include <mfobjects.h>
@@ -35,6 +40,13 @@
 extern "C" {
 #endif
 
+EXTERN_GUID(MF_SOURCE_READER_ASYNC_CALLBACK, 0x1e3dbeac,0xbb43,0x4c35,0xb5,0x07,0xcd,0x64,0x44,0x64,0xc9,0x65);
+EXTERN_GUID(MF_SOURCE_READER_D3D_MANAGER, 0xec822da2,0xe1e9,0x4b29,0xa0,0xd8,0x56,0x3c,0x71,0x9f,0x52,0x69);
+EXTERN_GUID(MF_SOURCE_READER_DISABLE_DXVA, 0xaa456cfd,0x3943,0x4a1e,0xa7,0x7d,0x18,0x38,0xc0,0xea,0x2e,0x35);
+EXTERN_GUID(MF_SOURCE_READER_MEDIASOURCE_CONFIG, 0x9085abeb,0x0354,0x48f9,0xab,0xb5,0x20,0x0d,0xf8,0x38,0xc6,0x8e);
+EXTERN_GUID(MF_SOURCE_READER_MEDIASOURCE_CHARACTERISTICS, 0x6d23f5c8,0xc5d7,0x4a9b,0x99,0x71,0x5d,0x11,0xf8,0xbc,0xa8,0x80);
+EXTERN_GUID(MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING, 0xfb394f3d,0xccf1,0x42ee,0xbb,0xb3,0xf9,0xb8,0x45,0xd5,0x68,0x1d);
+EXTERN_GUID(MF_SOURCE_READER_DISCONNECT_MEDIASOURCE_ON_SHUTDOWN, 0x56b67165,0x219e,0x456d,0xa2,0x2e,0x2d,0x30,0x04,0xc7,0xfe,0x56);
 typedef enum MF_SOURCE_READER_FLAG {
     MF_SOURCE_READERF_ERROR = 0x1,
     MF_SOURCE_READERF_ENDOFSTREAM = 0x2,
@@ -679,7 +691,143 @@
 
 #endif  /* __IMFSinkWriter_INTERFACE_DEFINED__ */
 
-EXTERN_GUID( MF_SOURCE_READER_MEDIASOURCE_CHARACTERISTICS, 0x6d23f5c8,0xc5d7,0x4a9b,0x99,0x71,0x5d,0x11,0xf8,0xbc,0xa8,0x80);
+/*****************************************************************************
+ * IMFSourceReaderCallback interface
+ */
+#ifndef __IMFSourceReaderCallback_INTERFACE_DEFINED__
+#define __IMFSourceReaderCallback_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFSourceReaderCallback, 0xdeec8d99, 0xfa1d, 0x4d82, 0x84,0xc2, 0x2c,0x89,0x69,0x94,0x48,0x67);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("deec8d99-fa1d-4d82-84c2-2c8969944867")
+IMFSourceReaderCallback : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE OnReadSample(
+        HRESULT hrStatus,
+        DWORD dwStreamIndex,
+        DWORD dwStreamFlags,
+        LONGLONG llTimestamp,
+        IMFSample *pSample) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnFlush(
+        DWORD dwStreamIndex) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnEvent(
+        DWORD dwStreamIndex,
+        IMFMediaEvent *pEvent) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFSourceReaderCallback, 0xdeec8d99, 0xfa1d, 0x4d82, 0x84,0xc2, 0x2c,0x89,0x69,0x94,0x48,0x67)
+#endif
+#else
+typedef struct IMFSourceReaderCallbackVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMFSourceReaderCallback* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMFSourceReaderCallback* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMFSourceReaderCallback* This);
+
+    /*** IMFSourceReaderCallback methods ***/
+    HRESULT (STDMETHODCALLTYPE *OnReadSample)(
+        IMFSourceReaderCallback* This,
+        HRESULT hrStatus,
+        DWORD dwStreamIndex,
+        DWORD dwStreamFlags,
+        LONGLONG llTimestamp,
+        IMFSample *pSample);
+
+    HRESULT (STDMETHODCALLTYPE *OnFlush)(
+        IMFSourceReaderCallback* This,
+        DWORD dwStreamIndex);
+
+    HRESULT (STDMETHODCALLTYPE *OnEvent)(
+        IMFSourceReaderCallback* This,
+        DWORD dwStreamIndex,
+        IMFMediaEvent *pEvent);
+
+    END_INTERFACE
+} IMFSourceReaderCallbackVtbl;
+interface IMFSourceReaderCallback {
+    CONST_VTBL IMFSourceReaderCallbackVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFSourceReaderCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFSourceReaderCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFSourceReaderCallback_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFSourceReaderCallback methods ***/
+#define IMFSourceReaderCallback_OnReadSample(This,hrStatus,dwStreamIndex,dwStreamFlags,llTimestamp,pSample) (This)->lpVtbl->OnReadSample(This,hrStatus,dwStreamIndex,dwStreamFlags,llTimestamp,pSample)
+#define IMFSourceReaderCallback_OnFlush(This,dwStreamIndex) (This)->lpVtbl->OnFlush(This,dwStreamIndex)
+#define IMFSourceReaderCallback_OnEvent(This,dwStreamIndex,pEvent) (This)->lpVtbl->OnEvent(This,dwStreamIndex,pEvent)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFSourceReaderCallback_QueryInterface(IMFSourceReaderCallback* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFSourceReaderCallback_AddRef(IMFSourceReaderCallback* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFSourceReaderCallback_Release(IMFSourceReaderCallback* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IMFSourceReaderCallback methods ***/
+static FORCEINLINE HRESULT IMFSourceReaderCallback_OnReadSample(IMFSourceReaderCallback* This,HRESULT hrStatus,DWORD dwStreamIndex,DWORD dwStreamFlags,LONGLONG llTimestamp,IMFSample *pSample) {
+    return This->lpVtbl->OnReadSample(This,hrStatus,dwStreamIndex,dwStreamFlags,llTimestamp,pSample);
+}
+static FORCEINLINE HRESULT IMFSourceReaderCallback_OnFlush(IMFSourceReaderCallback* This,DWORD dwStreamIndex) {
+    return This->lpVtbl->OnFlush(This,dwStreamIndex);
+}
+static FORCEINLINE HRESULT IMFSourceReaderCallback_OnEvent(IMFSourceReaderCallback* This,DWORD dwStreamIndex,IMFMediaEvent *pEvent) {
+    return This->lpVtbl->OnEvent(This,dwStreamIndex,pEvent);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMFSourceReaderCallback_OnReadSample_Proxy(
+    IMFSourceReaderCallback* This,
+    HRESULT hrStatus,
+    DWORD dwStreamIndex,
+    DWORD dwStreamFlags,
+    LONGLONG llTimestamp,
+    IMFSample *pSample);
+void __RPC_STUB IMFSourceReaderCallback_OnReadSample_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMFSourceReaderCallback_OnFlush_Proxy(
+    IMFSourceReaderCallback* This,
+    DWORD dwStreamIndex);
+void __RPC_STUB IMFSourceReaderCallback_OnFlush_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMFSourceReaderCallback_OnEvent_Proxy(
+    IMFSourceReaderCallback* This,
+    DWORD dwStreamIndex,
+    IMFMediaEvent *pEvent);
+void __RPC_STUB IMFSourceReaderCallback_OnEvent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMFSourceReaderCallback_INTERFACE_DEFINED__ */
+
 HRESULT WINAPI MFCreateSinkWriterFromMediaSink(IMFMediaSink *pMediaSink,IMFAttributes *pAttributes,IMFSinkWriter **ppSinkWriter);
 HRESULT WINAPI MFCreateSinkWriterFromURL(LPCWSTR pwszOutputURL,IMFByteStream *pByteStream,IMFAttributes *pAttributes,IMFSinkWriter **ppSinkWriter);
 HRESULT WINAPI MFCreateSourceReaderFromByteStream(IMFByteStream *pByteStream,IMFAttributes *pAttributes,IMFSourceReader **ppSourceReader);
diff --git a/mingw-w64-headers/include/mfreadwrite.idl b/mingw-w64-headers/include/mfreadwrite.idl
index 0d91790..163178a 100644
--- a/mingw-w64-headers/include/mfreadwrite.idl
+++ b/mingw-w64-headers/include/mfreadwrite.idl
@@ -6,6 +6,14 @@
 
 import "mfobjects.idl";
 
+cpp_quote("EXTERN_GUID(MF_SOURCE_READER_ASYNC_CALLBACK, 0x1e3dbeac,0xbb43,0x4c35,0xb5,0x07,0xcd,0x64,0x44,0x64,0xc9,0x65);")
+cpp_quote("EXTERN_GUID(MF_SOURCE_READER_D3D_MANAGER, 0xec822da2,0xe1e9,0x4b29,0xa0,0xd8,0x56,0x3c,0x71,0x9f,0x52,0x69);")
+cpp_quote("EXTERN_GUID(MF_SOURCE_READER_DISABLE_DXVA, 0xaa456cfd,0x3943,0x4a1e,0xa7,0x7d,0x18,0x38,0xc0,0xea,0x2e,0x35);")
+cpp_quote("EXTERN_GUID(MF_SOURCE_READER_MEDIASOURCE_CONFIG, 0x9085abeb,0x0354,0x48f9,0xab,0xb5,0x20,0x0d,0xf8,0x38,0xc6,0x8e);")
+cpp_quote("EXTERN_GUID(MF_SOURCE_READER_MEDIASOURCE_CHARACTERISTICS, 0x6d23f5c8,0xc5d7,0x4a9b,0x99,0x71,0x5d,0x11,0xf8,0xbc,0xa8,0x80);")
+cpp_quote("EXTERN_GUID(MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING, 0xfb394f3d,0xccf1,0x42ee,0xbb,0xb3,0xf9,0xb8,0x45,0xd5,0x68,0x1d);" )
+cpp_quote("EXTERN_GUID(MF_SOURCE_READER_DISCONNECT_MEDIASOURCE_ON_SHUTDOWN, 0x56b67165,0x219e,0x456d,0xa2,0x2e,0x2d,0x30,0x04,0xc7,0xfe,0x56);" )
+
 typedef [v1_enum] enum MF_SOURCE_READER_FLAG {
     MF_SOURCE_READERF_ERROR                     = 0x00000001,
     MF_SOURCE_READERF_ENDOFSTREAM               = 0x00000002,
@@ -85,7 +93,18 @@
     HRESULT GetStatistics([in] DWORD dwStreamIndex, [out] MF_SINK_WRITER_STATISTICS *pStats);
 }
 
-cpp_quote("EXTERN_GUID( MF_SOURCE_READER_MEDIASOURCE_CHARACTERISTICS, 0x6d23f5c8,0xc5d7,0x4a9b,0x99,0x71,0x5d,0x11,0xf8,0xbc,0xa8,0x80);")
+[
+    object,
+    uuid(deec8d99-fa1d-4d82-84c2-2c8969944867),
+    local
+]
+interface IMFSourceReaderCallback : IUnknown
+{
+    HRESULT OnReadSample([in] HRESULT hrStatus, [in] DWORD dwStreamIndex, [in] DWORD dwStreamFlags,
+            [in] LONGLONG llTimestamp, [in] IMFSample *pSample);
+    HRESULT OnFlush([in] DWORD dwStreamIndex);
+    HRESULT OnEvent([in] DWORD dwStreamIndex, [in] IMFMediaEvent *pEvent);
+}
 
 cpp_quote("HRESULT WINAPI MFCreateSinkWriterFromMediaSink(IMFMediaSink *pMediaSink,IMFAttributes *pAttributes,IMFSinkWriter **ppSinkWriter);")
 cpp_quote("HRESULT WINAPI MFCreateSinkWriterFromURL(LPCWSTR pwszOutputURL,IMFByteStream *pByteStream,IMFAttributes *pAttributes,IMFSinkWriter **ppSinkWriter);")
diff --git a/mingw-w64-headers/include/mftransform.h b/mingw-w64-headers/include/mftransform.h
index 85f1d81..08ebd83 100644
--- a/mingw-w64-headers/include/mftransform.h
+++ b/mingw-w64-headers/include/mftransform.h
@@ -15,19 +15,6 @@
     MFT_DRAIN_NO_TAILS        = 0x00000001 
   };
 
-#if (_WIN32_WINNT >= 0x0601)
-  enum _MFT_ENUM_FLAG {
-  MFT_ENUM_FLAG_SYNCMFT          = 0x00000001,
-  MFT_ENUM_FLAG_ASYNCMFT         = 0x00000002,
-  MFT_ENUM_FLAG_HARDWARE         = 0x00000004,
-  MFT_ENUM_FLAG_FIELDOFUSE       = 0x00000008,
-  MFT_ENUM_FLAG_LOCALMFT         = 0x00000010,
-  MFT_ENUM_FLAG_TRANSCODE_ONLY   = 0x00000020,
-  MFT_ENUM_FLAG_SORTANDFILTER    = 0x00000040,
-  MFT_ENUM_FLAG_ALL              = 0x0000003F 
-};
-#endif /*(_WIN32_WINNT >= 0x0601)*/
-
   enum _MFT_INPUT_STATUS_FLAGS {
     MFT_INPUT_STATUS_ACCEPT_DATA   = 0x00000001 
   };
