diff --git a/include/strmif.h b/include/strmif.h
index 127583904a7e381dee375b3cc91caae43033fb8c..34b3dee7b646cc64208721e1c6ec7d926d25934e 100644
--- a/include/strmif.h
+++ b/include/strmif.h
@@ -268,6 +268,21 @@ typedef enum
 	State_Running = 2,
 } FILTER_STATE;
 
+typedef enum
+{
+	Famine = 0,
+	Flood = 1,
+} QualityMessageType;
+
+typedef enum
+{
+	REG_PINFLAG_B_ZERO = 0x1,
+	REG_PINFLAG_B_RENDERER = 0x2,
+	REG_PINFLAG_B_MANY = 0x4,
+	REG_PINFLAG_B_OUTPUT = 0x8,
+} REG_PINFLAG;
+
+
 /* structs. */
 
 typedef struct
@@ -321,6 +336,66 @@ typedef struct tagCOLORKEY
 	COLORREF	HighColorValue;
 } COLORKEY;
 
+typedef struct
+{
+	QualityMessageType	Type;
+	long			Proportion;
+	REFERENCE_TIME		Late;
+	REFERENCE_TIME		TimeStamp;
+} Quality;
+
+typedef struct
+{
+	const CLSID*	clsMajorType;
+	const CLSID*	clsMinorType;
+} REGPINTYPES;
+
+typedef struct
+{
+	LPWSTR	strName;
+	BOOL	bRendered;
+	BOOL	bOutput;
+	BOOL	bZero;
+	BOOL	bMany;
+	const CLSID*	clsConnectsToFilter;
+	const WCHAR*	strConnectsToPin;
+	UINT	nMediaTypes;
+	const REGPINTYPES*	lpMediaType;
+} REGFILTERPINS;
+
+typedef struct
+{
+	CLSID	clsMedium;
+	DWORD	dw1;
+	DWORD	dw2;
+} REGPINMEDIUM;
+
+typedef struct
+{
+	DWORD	dwFlags;
+	UINT	cInstances;
+	UINT	nMediaTypes;
+	const REGPINTYPES*	lpMediaType;
+	UINT	nMediums;
+	const REGPINMEDIUM*	lpMedium;
+	const CLSID*	clsPinCategory;
+} REGFILTERPINS2;
+
+typedef struct
+{
+	DWORD	dwVersion;
+	DWORD	dwMerit;
+	union {
+		struct {
+			ULONG	cPins;
+			const REGFILTERPINS*	rgPins;
+		} DUMMYSTRUCTNAME1;
+		struct {
+			ULONG	cPins2;
+			const REGFILTERPINS2*	rgPins2;
+		} DUMMYSTRUCTNAME2;
+	} DUMMYUNIONNAME;
+} REGFILTER2;
 
 
 /* defines. */
@@ -409,6 +484,30 @@ ICOM_DEFINE(IBaseFilter,IMediaFilter)
 #define IBaseFilter_JoinFilterGraph(p,a1,a2) ICOM_CALL2(JoinFilterGraph,p,a1,a2)
 #define IBaseFilter_QueryVendorInfo(p,a1) ICOM_CALL1(QueryVendorInfo,p,a1)
 
+/**************************************************************************
+ *
+ * ICreateDevEnum interface
+ *
+ */
+
+#define ICOM_INTERFACE ICreateDevEnum
+#define ICreateDevEnum_METHODS \
+    ICOM_METHOD3(HRESULT,CreateClassEnumerator,REFCLSID,a1,IEnumMoniker**,a2,DWORD,a3)
+
+#define ICreateDevEnum_IMETHODS \
+    IUnknown_IMETHODS \
+    ICreateDevEnum_METHODS
+
+ICOM_DEFINE(ICreateDevEnum,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define ICreateDevEnum_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define ICreateDevEnum_AddRef(p) ICOM_CALL (AddRef,p)
+#define ICreateDevEnum_Release(p) ICOM_CALL (Release,p)
+    /*** ICreateDevEnum methods ***/
+#define ICreateDevEnum_CreateClassEnumerator(p,a1,a2,a3) ICOM_CALL3(CreateClassEnumerator,p,a1,a2,a3)
+
 /**************************************************************************
  *
  * IEnumFilters interface
@@ -499,6 +598,61 @@ ICOM_DEFINE(IEnumPins,IUnknown)
 #define IEnumPins_Reset(p) ICOM_CALL (Reset,p)
 #define IEnumPins_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
 
+/**************************************************************************
+ *
+ * IFileSinkFilter interface
+ *
+ */
+
+#define ICOM_INTERFACE IFileSinkFilter
+#define IFileSinkFilter_METHODS \
+    ICOM_METHOD2(HRESULT,SetFileName,LPCOLESTR,a1,const AM_MEDIA_TYPE*,a2) \
+    ICOM_METHOD2(HRESULT,GetCurFile,LPOLESTR*,a1,AM_MEDIA_TYPE*,a2)
+
+#define IFileSinkFilter_IMETHODS \
+    IUnknown_IMETHODS \
+    IFileSinkFilter_METHODS
+
+ICOM_DEFINE(IFileSinkFilter,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IFileSinkFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IFileSinkFilter_AddRef(p) ICOM_CALL (AddRef,p)
+#define IFileSinkFilter_Release(p) ICOM_CALL (Release,p)
+    /*** IFileSinkFilter methods ***/
+#define IFileSinkFilter_SetFileName(p,a1,a2) ICOM_CALL2(SetFileName,p,a1,a2)
+#define IFileSinkFilter_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
+
+/**************************************************************************
+ *
+ * IFileSinkFilter2 interface
+ *
+ */
+
+#define ICOM_INTERFACE IFileSinkFilter2
+#define IFileSinkFilter2_METHODS \
+    ICOM_METHOD1(HRESULT,SetMode,DWORD,a1) \
+    ICOM_METHOD1(HRESULT,GetMode,DWORD*,a1)
+
+#define IFileSinkFilter2_IMETHODS \
+    IFileSinkFilter_IMETHODS \
+    IFileSinkFilter2_METHODS
+
+ICOM_DEFINE(IFileSinkFilter2,IFileSinkFilter)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IFileSinkFilter2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IFileSinkFilter2_AddRef(p) ICOM_CALL (AddRef,p)
+#define IFileSinkFilter2_Release(p) ICOM_CALL (Release,p)
+    /*** IFileSinkFilter methods ***/
+#define IFileSinkFilter2_SetFileName(p,a1,a2) ICOM_CALL2(SetFileName,p,a1,a2)
+#define IFileSinkFilter2_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
+    /*** IFileSinkFilter2 methods ***/
+#define IFileSinkFilter2_SetMode(p,a1) ICOM_CALL1(SetMode,p,a1)
+#define IFileSinkFilter2_GetMode(p,a1) ICOM_CALL1(GetMode,p,a1)
+
 /**************************************************************************
  *
  * IFileSourceFilter interface
@@ -525,6 +679,103 @@ ICOM_DEFINE(IFileSourceFilter,IUnknown)
 #define IFileSourceFilter_Load(p,a1,a2) ICOM_CALL2(Load,p,a1,a2)
 #define IFileSourceFilter_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
 
+/**************************************************************************
+ *
+ * IFilterMapper interface
+ *
+ */
+
+#define ICOM_INTERFACE IFilterMapper
+#define IFilterMapper_METHODS \
+    ICOM_METHOD3(HRESULT,RegisterFilter,CLSID,a1,LPCWSTR,a2,DWORD,a3) \
+    ICOM_METHOD3(HRESULT,RegisterFilterInstance,CLSID,a1,LPCWSTR,a2,CLSID*,a3) \
+    ICOM_METHOD8(HRESULT,RegisterPin,CLSID,a1,LPCWSTR,a2,BOOL,a3,BOOL,a4,BOOL,a5,BOOL,a6,CLSID,a7,LPCWSTR,a8) \
+    ICOM_METHOD4(HRESULT,RegisterPinType,CLSID,a1,LPCWSTR,a2,CLSID,a3,CLSID,a4) \
+    ICOM_METHOD1(HRESULT,UnregisterFilter,CLSID,a1) \
+    ICOM_METHOD1(HRESULT,UnregisterFilterInstance,CLSID,a1) \
+    ICOM_METHOD2(HRESULT,UnregisterPin,CLSID,a1,LPCWSTR,a2) \
+    ICOM_METHOD9(HRESULT,EnumMatchingFilters,IEnumRegFilters**,a1,DWORD,a2,BOOL,a3,CLSID,a4,CLSID,a5,BOOL,a6,BOOL,a7,CLSID,a8,CLSID,a9)
+
+#define IFilterMapper_IMETHODS \
+    IUnknown_IMETHODS \
+    IFilterMapper_METHODS
+
+ICOM_DEFINE(IFilterMapper,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IFilterMapper_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IFilterMapper_AddRef(p) ICOM_CALL (AddRef,p)
+#define IFilterMapper_Release(p) ICOM_CALL (Release,p)
+    /*** IFilterMapper methods ***/
+#define IFilterMapper_RegisterFilter(p,a1,a2,a3) ICOM_CALL3(RegisterFilter,p,a1,a2,a3)
+#define IFilterMapper_RegisterFilterInstance(p,a1,a2,a3) ICOM_CALL3(RegisterFilterInstance,p,a1,a2,a3)
+#define IFilterMapper_RegisterPin(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(RegisterPin,p,a1,a2,a3,a4,a5,a6,a7,a8)
+#define IFilterMapper_RegisterPinType(p,a1,a2,a3,a4) ICOM_CALL4(RegisterPinType,p,a1,a2,a3,a4)
+#define IFilterMapper_UnregisterFilter(p,a1) ICOM_CALL1(UnregisterFilter,p,a1)
+#define IFilterMapper_UnregisterFilterInstance(p,a1) ICOM_CALL1(UnregisterFilterInstance,p,a1)
+#define IFilterMapper_UnregisterPin(p,a1,a2) ICOM_CALL2(UnregisterPin,p,a1,a2)
+#define IFilterMapper_EnumMatchingFilters(p,a1,a2,a3,a4,a5,a6,a7,a8,a9) ICOM_CALL9(EnumMatchingFilters,p,a1,a2,a3,a4,a5,a6,a7,a8,a9)
+
+/**************************************************************************
+ *
+ * IFilterMapper2 interface
+ *
+ */
+
+#define ICOM_INTERFACE IFilterMapper2
+#define IFilterMapper2_METHODS \
+    ICOM_METHOD3(HRESULT,CreateCategory,REFCLSID,a1,DWORD,a2,LPCWSTR,a3) \
+    ICOM_METHOD3(HRESULT,UnregisterFilter,const CLSID*,a1,const OLECHAR*,a2,REFCLSID,a3) \
+    ICOM_METHOD6(HRESULT,RegisterFilter,REFCLSID,a1,LPCWSTR,a2,IMoniker**,a3,const CLSID*,a4,const OLECHAR*,a5,const REGFILTER2*,a6) \
+    ICOM_METHOD15(HRESULT,EnumMatchingFilters,IEnumMoniker**,a1,DWORD,a2,BOOL,a3,DWORD,a4,BOOL,a5,DWORD,a6,const GUID*,a7,const REGPINMEDIUM*,a8,const CLSID*,a9,BOOL,a10,BOOL,a11,DWORD,a12,const GUID*,a13,const REGPINMEDIUM*,a14,const CLSID*,a15)
+
+#define IFilterMapper2_IMETHODS \
+    IUnknown_IMETHODS \
+    IFilterMapper2_METHODS
+
+ICOM_DEFINE(IFilterMapper2,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IFilterMapper2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IFilterMapper2_AddRef(p) ICOM_CALL (AddRef,p)
+#define IFilterMapper2_Release(p) ICOM_CALL (Release,p)
+    /*** IFilterMapper2 methods ***/
+#define IFilterMapper2_CreateCategory(p,a1,a2,a3) ICOM_CALL3(CreateCategory,p,a1,a2,a3)
+#define IFilterMapper2_UnregisterFilter(p,a1,a2,a3) ICOM_CALL3(UnregisterFilter,p,a1,a2,a3)
+#define IFilterMapper2_RegisterFilter(p,a1,a2,a3,a4,a5,a6) ICOM_CALL6(RegisterFilter,p,a1,a2,a3,a4,a5,a6)
+#define IFilterMapper2_EnumMatchingFilters(p,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) ICOM_CALL15(EnumMatchingFilters,p,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)
+
+/**************************************************************************
+ *
+ * IFilterMapper3 interface
+ *
+ */
+
+#define ICOM_INTERFACE IFilterMapper3
+#define IFilterMapper3_METHODS \
+    ICOM_METHOD1(HRESULT,GetICreateDevEnum,ICreateDevEnum**,a1)
+
+#define IFilterMapper3_IMETHODS \
+    IFilterMapper2_IMETHODS \
+    IFilterMapper3_METHODS
+
+ICOM_DEFINE(IFilterMapper3,IFilterMapper2)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IFilterMapper3_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IFilterMapper3_AddRef(p) ICOM_CALL (AddRef,p)
+#define IFilterMapper3_Release(p) ICOM_CALL (Release,p)
+    /*** IFilterMapper2 methods ***/
+#define IFilterMapper3_CreateCategory(p,a1,a2,a3) ICOM_CALL3(CreateCategory,p,a1,a2,a3)
+#define IFilterMapper3_UnregisterFilter(p,a1,a2,a3) ICOM_CALL3(UnregisterFilter,p,a1,a2,a3)
+#define IFilterMapper3_RegisterFilter(p,a1,a2,a3,a4,a5,a6) ICOM_CALL6(RegisterFilter,p,a1,a2,a3,a4,a5,a6)
+#define IFilterMapper3_EnumMatchingFilters(p,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) ICOM_CALL15(EnumMatchingFilters,p,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)
+    /*** IFilterMapper3 methods ***/
+#define IFilterMapper3_GetICreateDevEnum(p,a1) ICOM_CALL1(GetICreateDevEnum,p,a1)
+
 /**************************************************************************
  *
  * IFilterGraph interface
@@ -653,6 +904,54 @@ ICOM_DEFINE(IFilterGraph2,IGraphBuilder)
 #define IFilterGraph2_ReconnectEx(p,a1,a2) ICOM_CALL2(ReconnectEx,p,a1,a2)
 #define IFilterGraph2_RenderEx(p,a1,a2,a3) ICOM_CALL3(RenderEx,p,a1,a2,a3)
 
+/**************************************************************************
+ *
+ * IGraphVersion interface
+ *
+ */
+
+#define ICOM_INTERFACE IGraphVersion
+#define IGraphVersion_METHODS \
+    ICOM_METHOD1(HRESULT,QueryVersion,LONG*,a1)
+
+#define IGraphVersion_IMETHODS \
+    IUnknown_IMETHODS \
+    IGraphVersion_METHODS
+
+ICOM_DEFINE(IGraphVersion,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IGraphVersion_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IGraphVersion_AddRef(p) ICOM_CALL (AddRef,p)
+#define IGraphVersion_Release(p) ICOM_CALL (Release,p)
+    /*** IGraphVersion methods ***/
+#define IGraphVersion_QueryVersion(p,a1) ICOM_CALL1(QueryVersion,p,a1)
+
+/**************************************************************************
+ *
+ * IMediaEventSink interface
+ *
+ */
+
+#define ICOM_INTERFACE IMediaEventSink
+#define IMediaEventSink_METHODS \
+    ICOM_METHOD3(HRESULT,Notify,long,a1,LONG_PTR,a2,LONG_PTR,a3)
+
+#define IMediaEventSink_IMETHODS \
+    IUnknown_IMETHODS \
+    IMediaEventSink_METHODS
+
+ICOM_DEFINE(IMediaEventSink,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMediaEventSink_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMediaEventSink_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMediaEventSink_Release(p) ICOM_CALL (Release,p)
+    /*** IMediaEventSink methods ***/
+#define IMediaEventSink_Notify(p,a1,a2,a3) ICOM_CALL3(Notify,p,a1,a2,a3)
+
 /**************************************************************************
  *
  * IMediaSample interface
@@ -983,6 +1282,32 @@ ICOM_DEFINE(IPin,IUnknown)
 #define IPin_EndFlush(p) ICOM_CALL (EndFlush,p)
 #define IPin_NewSegment(p,a1,a2,a3) ICOM_CALL3(NewSegment,p,a1,a2,a3)
 
+/**************************************************************************
+ *
+ * IQualityControl interface
+ *
+ */
+
+#define ICOM_INTERFACE IQualityControl
+#define IQualityControl_METHODS \
+    ICOM_METHOD2(HRESULT,Notify,IBaseFilter*,a1,Quality,a2) \
+    ICOM_METHOD1(HRESULT,SetSink,IQualityControl*,a1)
+
+#define IQualityControl_IMETHODS \
+    IUnknown_IMETHODS \
+    IQualityControl_METHODS
+
+ICOM_DEFINE(IQualityControl,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IQualityControl_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IQualityControl_AddRef(p) ICOM_CALL (AddRef,p)
+#define IQualityControl_Release(p) ICOM_CALL (Release,p)
+    /*** IQualityControl methods ***/
+#define IQualityControl_Notify(p,a1,a2) ICOM_CALL2(Notify,p,a1,a2)
+#define IQualityControl_SetSink(p,a1) ICOM_CALL1(SetSink,p,a1)
+
 /**************************************************************************
  *
  * IReferenceClock interface
@@ -1040,4 +1365,31 @@ ICOM_DEFINE(IReferenceClock2,IReferenceClock)
 #define IReferenceClock2_Unadvise(p,a1) ICOM_CALL1(Unadvise,p,a1)
     /*** IReferenceClock2 methods ***/
 
+/**************************************************************************
+ *
+ * ISeekingPassThru interface
+ *
+ */
+
+#define ICOM_INTERFACE ISeekingPassThru
+#define ISeekingPassThru_METHODS \
+    ICOM_METHOD2(HRESULT,Init,BOOL,a1,IPin*,a2)
+
+#define ISeekingPassThru_IMETHODS \
+    IUnknown_IMETHODS \
+    ISeekingPassThru_METHODS
+
+ICOM_DEFINE(ISeekingPassThru,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define ISeekingPassThru_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define ISeekingPassThru_AddRef(p) ICOM_CALL (AddRef,p)
+#define ISeekingPassThru_Release(p) ICOM_CALL (Release,p)
+    /*** ISeekingPassThru methods ***/
+#define ISeekingPassThru_Init(p,a1,a2) ICOM_CALL2(Init,p,a1,a2)
+
+
+
+
 #endif  /* __WINE_STRMIF_H_ */