Import austream.idl and mmstream.idl.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@3623 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/direct-x/include/amstream.h b/mingw-w64-headers/direct-x/include/amstream.h
index 3ca1898..07c4907 100644
--- a/mingw-w64-headers/direct-x/include/amstream.h
+++ b/mingw-w64-headers/direct-x/include/amstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.1.44 from amstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.3.2 from amstream.idl - Do not edit ***/
 
 #include <rpc.h>
 #include <rpcndr.h>
@@ -6,16 +6,6 @@
 #ifndef __WIDL_AMSTREAM_H
 #define __WIDL_AMSTREAM_H
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Headers for imported files */
-
-#include <unknwn.h>
-#include <mmstream.h>
-#include <strmif.h>
-
 /* Forward declarations */
 
 #ifndef __IDirectShowStream_FWD_DEFINED__
@@ -63,6 +53,15 @@
 typedef struct AMMultiMediaStream AMMultiMediaStream;
 #endif /* defined __AMMultiMediaStream_FWD_DEFINED__ */
 
+/* Headers for imported files */
+
+#include <unknwn.h>
+#include <mmstream.h>
+#include <strmif.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 #include <ddraw.h>
 #include <mmsystem.h>
@@ -737,7 +736,7 @@
         IMediaStream **ppMediaStream) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SupportSeeking(
-        BOOL bRenderer) = 0;
+        WINBOOL bRenderer) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE ReferenceTimeToStreamTime(
         REFERENCE_TIME *pTime) = 0;
@@ -749,7 +748,7 @@
         REFERENCE_TIME WaitStreamTime) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE Flush(
-        BOOL bCancelEOS) = 0;
+        WINBOOL bCancelEOS) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE EndOfStream(
         ) = 0;
@@ -840,7 +839,7 @@
 
     HRESULT (STDMETHODCALLTYPE *SupportSeeking)(
         IMediaStreamFilter* This,
-        BOOL bRenderer);
+        WINBOOL bRenderer);
 
     HRESULT (STDMETHODCALLTYPE *ReferenceTimeToStreamTime)(
         IMediaStreamFilter* This,
@@ -856,7 +855,7 @@
 
     HRESULT (STDMETHODCALLTYPE *Flush)(
         IMediaStreamFilter* This,
-        BOOL bCancelEOS);
+        WINBOOL bCancelEOS);
 
     HRESULT (STDMETHODCALLTYPE *EndOfStream)(
         IMediaStreamFilter* This);
@@ -929,7 +928,7 @@
     DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IMediaStreamFilter_SupportSeeking_Proxy(
     IMediaStreamFilter* This,
-    BOOL bRenderer);
+    WINBOOL bRenderer);
 void __RPC_STUB IMediaStreamFilter_SupportSeeking_Stub(
     IRpcStubBuffer* This,
     IRpcChannelBuffer* pRpcChannelBuffer,
@@ -961,7 +960,7 @@
     DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IMediaStreamFilter_Flush_Proxy(
     IMediaStreamFilter* This,
-    BOOL bCancelEOS);
+    WINBOOL bCancelEOS);
 void __RPC_STUB IMediaStreamFilter_Flush_Stub(
     IRpcStubBuffer* This,
     IRpcChannelBuffer* pRpcChannelBuffer,
@@ -1334,13 +1333,13 @@
         ) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SetSyncPoint(
-        BOOL bIsSyncPoint) = 0;
+        WINBOOL bIsSyncPoint) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE IsPreroll(
         ) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SetPreroll(
-        BOOL bIsPreroll) = 0;
+        WINBOOL bIsPreroll) = 0;
 
     virtual LONG STDMETHODCALLTYPE GetActualDataLength(
         ) = 0;
@@ -1358,7 +1357,7 @@
         ) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE SetDiscontinuity(
-        BOOL bDiscontinuity) = 0;
+        WINBOOL bDiscontinuity) = 0;
 
     virtual HRESULT STDMETHODCALLTYPE GetMediaTime(
         LONGLONG *pTimeStart,
@@ -1441,14 +1440,14 @@
 
     HRESULT (STDMETHODCALLTYPE *SetSyncPoint)(
         IAMMediaTypeSample* This,
-        BOOL bIsSyncPoint);
+        WINBOOL bIsSyncPoint);
 
     HRESULT (STDMETHODCALLTYPE *IsPreroll)(
         IAMMediaTypeSample* This);
 
     HRESULT (STDMETHODCALLTYPE *SetPreroll)(
         IAMMediaTypeSample* This,
-        BOOL bIsPreroll);
+        WINBOOL bIsPreroll);
 
     LONG (STDMETHODCALLTYPE *GetActualDataLength)(
         IAMMediaTypeSample* This);
@@ -1470,7 +1469,7 @@
 
     HRESULT (STDMETHODCALLTYPE *SetDiscontinuity)(
         IAMMediaTypeSample* This,
-        BOOL bDiscontinuity);
+        WINBOOL bDiscontinuity);
 
     HRESULT (STDMETHODCALLTYPE *GetMediaTime)(
         IAMMediaTypeSample* This,
@@ -1572,7 +1571,7 @@
     DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IAMMediaTypeSample_SetSyncPoint_Proxy(
     IAMMediaTypeSample* This,
-    BOOL bIsSyncPoint);
+    WINBOOL bIsSyncPoint);
 void __RPC_STUB IAMMediaTypeSample_SetSyncPoint_Stub(
     IRpcStubBuffer* This,
     IRpcChannelBuffer* pRpcChannelBuffer,
@@ -1587,7 +1586,7 @@
     DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IAMMediaTypeSample_SetPreroll_Proxy(
     IAMMediaTypeSample* This,
-    BOOL bIsPreroll);
+    WINBOOL bIsPreroll);
 void __RPC_STUB IAMMediaTypeSample_SetPreroll_Stub(
     IRpcStubBuffer* This,
     IRpcChannelBuffer* pRpcChannelBuffer,
@@ -1633,7 +1632,7 @@
     DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IAMMediaTypeSample_SetDiscontinuity_Proxy(
     IAMMediaTypeSample* This,
-    BOOL bDiscontinuity);
+    WINBOOL bDiscontinuity);
 void __RPC_STUB IAMMediaTypeSample_SetDiscontinuity_Stub(
     IRpcStubBuffer* This,
     IRpcChannelBuffer* pRpcChannelBuffer,
diff --git a/mingw-w64-headers/direct-x/include/austream.h b/mingw-w64-headers/direct-x/include/austream.h
new file mode 100644
index 0000000..bca47a9
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/austream.h
@@ -0,0 +1,514 @@
+/*** Autogenerated by WIDL 1.3.2 from austream.idl - Do not edit ***/
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_AUSTREAM_H
+#define __WIDL_AUSTREAM_H
+
+/* Forward declarations */
+
+#ifndef __IAudioMediaStream_FWD_DEFINED__
+#define __IAudioMediaStream_FWD_DEFINED__
+typedef interface IAudioMediaStream IAudioMediaStream;
+#endif
+
+#ifndef __IAudioStreamSample_FWD_DEFINED__
+#define __IAudioStreamSample_FWD_DEFINED__
+typedef interface IAudioStreamSample IAudioStreamSample;
+#endif
+
+#ifndef __IMemoryData_FWD_DEFINED__
+#define __IMemoryData_FWD_DEFINED__
+typedef interface IMemoryData IMemoryData;
+#endif
+
+#ifndef __IAudioData_FWD_DEFINED__
+#define __IAudioData_FWD_DEFINED__
+typedef interface IAudioData IAudioData;
+#endif
+
+/* Headers for imported files */
+
+#include <unknwn.h>
+#include <mmstream.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if 0
+typedef struct tWAVEFORMATEX WAVEFORMATEX;
+#endif
+#ifndef __IAudioMediaStream_FWD_DEFINED__
+#define __IAudioMediaStream_FWD_DEFINED__
+typedef interface IAudioMediaStream IAudioMediaStream;
+#endif
+
+#ifndef __IAudioStreamSample_FWD_DEFINED__
+#define __IAudioStreamSample_FWD_DEFINED__
+typedef interface IAudioStreamSample IAudioStreamSample;
+#endif
+
+#ifndef __IMemoryData_FWD_DEFINED__
+#define __IMemoryData_FWD_DEFINED__
+typedef interface IMemoryData IMemoryData;
+#endif
+
+#ifndef __IAudioData_FWD_DEFINED__
+#define __IAudioData_FWD_DEFINED__
+typedef interface IAudioData IAudioData;
+#endif
+
+/*****************************************************************************
+ * IAudioMediaStream interface
+ */
+#ifndef __IAudioMediaStream_INTERFACE_DEFINED__
+#define __IAudioMediaStream_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAudioMediaStream, 0xf7537560, 0xa3be, 0x11d0, 0x82,0x12, 0x00,0xc0,0x4f,0xc3,0x2c,0x45);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAudioMediaStream : public IMediaStream
+{
+    virtual HRESULT STDMETHODCALLTYPE GetFormat(
+        WAVEFORMATEX *pWaveFormatCurrent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFormat(
+        const WAVEFORMATEX *lpWaveFormat) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateSample(
+        IAudioData *pAudioData,
+        DWORD dwFlags,
+        IAudioStreamSample **ppSample) = 0;
+
+};
+#else
+typedef struct IAudioMediaStreamVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAudioMediaStream* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAudioMediaStream* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAudioMediaStream* This);
+
+    /*** IMediaStream methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)(
+        IAudioMediaStream* This,
+        IMultiMediaStream **ppMultiMediaStream);
+
+    HRESULT (STDMETHODCALLTYPE *GetInformation)(
+        IAudioMediaStream* This,
+        MSPID *pPurposeId,
+        STREAM_TYPE *pType);
+
+    HRESULT (STDMETHODCALLTYPE *SetSameFormat)(
+        IAudioMediaStream* This,
+        IMediaStream *pStreamThatHasDesiredFormat,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *AllocateSample)(
+        IAudioMediaStream* This,
+        DWORD dwFlags,
+        IStreamSample **ppSample);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSharedSample)(
+        IAudioMediaStream* This,
+        IStreamSample *pExistingSample,
+        DWORD dwFlags,
+        IStreamSample **ppNewSample);
+
+    HRESULT (STDMETHODCALLTYPE *SendEndOfStream)(
+        IAudioMediaStream* This,
+        DWORD dwFlags);
+
+    /*** IAudioMediaStream methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetFormat)(
+        IAudioMediaStream* This,
+        WAVEFORMATEX *pWaveFormatCurrent);
+
+    HRESULT (STDMETHODCALLTYPE *SetFormat)(
+        IAudioMediaStream* This,
+        const WAVEFORMATEX *lpWaveFormat);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSample)(
+        IAudioMediaStream* This,
+        IAudioData *pAudioData,
+        DWORD dwFlags,
+        IAudioStreamSample **ppSample);
+
+    END_INTERFACE
+} IAudioMediaStreamVtbl;
+interface IAudioMediaStream {
+    CONST_VTBL IAudioMediaStreamVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAudioMediaStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAudioMediaStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAudioMediaStream_Release(This) (This)->lpVtbl->Release(This)
+/*** IMediaStream methods ***/
+#define IAudioMediaStream_GetMultiMediaStream(This,ppMultiMediaStream) (This)->lpVtbl->GetMultiMediaStream(This,ppMultiMediaStream)
+#define IAudioMediaStream_GetInformation(This,pPurposeId,pType) (This)->lpVtbl->GetInformation(This,pPurposeId,pType)
+#define IAudioMediaStream_SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) (This)->lpVtbl->SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags)
+#define IAudioMediaStream_AllocateSample(This,dwFlags,ppSample) (This)->lpVtbl->AllocateSample(This,dwFlags,ppSample)
+#define IAudioMediaStream_CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) (This)->lpVtbl->CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample)
+#define IAudioMediaStream_SendEndOfStream(This,dwFlags) (This)->lpVtbl->SendEndOfStream(This,dwFlags)
+/*** IAudioMediaStream methods ***/
+#define IAudioMediaStream_GetFormat(This,pWaveFormatCurrent) (This)->lpVtbl->GetFormat(This,pWaveFormatCurrent)
+#define IAudioMediaStream_SetFormat(This,lpWaveFormat) (This)->lpVtbl->SetFormat(This,lpWaveFormat)
+#define IAudioMediaStream_CreateSample(This,pAudioData,dwFlags,ppSample) (This)->lpVtbl->CreateSample(This,pAudioData,dwFlags,ppSample)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAudioMediaStream_GetFormat_Proxy(
+    IAudioMediaStream* This,
+    WAVEFORMATEX *pWaveFormatCurrent);
+void __RPC_STUB IAudioMediaStream_GetFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAudioMediaStream_SetFormat_Proxy(
+    IAudioMediaStream* This,
+    const WAVEFORMATEX *lpWaveFormat);
+void __RPC_STUB IAudioMediaStream_SetFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAudioMediaStream_CreateSample_Proxy(
+    IAudioMediaStream* This,
+    IAudioData *pAudioData,
+    DWORD dwFlags,
+    IAudioStreamSample **ppSample);
+void __RPC_STUB IAudioMediaStream_CreateSample_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAudioMediaStream_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAudioStreamSample interface
+ */
+#ifndef __IAudioStreamSample_INTERFACE_DEFINED__
+#define __IAudioStreamSample_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAudioStreamSample, 0x345fee00, 0xaba5, 0x11d0, 0x82,0x12, 0x00,0xc0,0x4f,0xc3,0x2c,0x45);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAudioStreamSample : public IStreamSample
+{
+    virtual HRESULT STDMETHODCALLTYPE GetAudioData(
+        IAudioData **ppAudio) = 0;
+
+};
+#else
+typedef struct IAudioStreamSampleVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAudioStreamSample* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAudioStreamSample* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAudioStreamSample* This);
+
+    /*** IStreamSample methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
+        IAudioStreamSample* This,
+        IMediaStream **ppMediaStream);
+
+    HRESULT (STDMETHODCALLTYPE *GetSampleTimes)(
+        IAudioStreamSample* This,
+        STREAM_TIME *pStartTime,
+        STREAM_TIME *pEndTime,
+        STREAM_TIME *pCurrentTime);
+
+    HRESULT (STDMETHODCALLTYPE *SetSampleTimes)(
+        IAudioStreamSample* This,
+        const STREAM_TIME *pStartTime,
+        const STREAM_TIME *pEndTime);
+
+    HRESULT (STDMETHODCALLTYPE *Update)(
+        IAudioStreamSample* This,
+        DWORD dwFlags,
+        HANDLE hEvent,
+        PAPCFUNC pfnAPC,
+        DWORD dwAPCData);
+
+    HRESULT (STDMETHODCALLTYPE *CompletionStatus)(
+        IAudioStreamSample* This,
+        DWORD dwFlags,
+        DWORD dwMilliseconds);
+
+    /*** IAudioStreamSample methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetAudioData)(
+        IAudioStreamSample* This,
+        IAudioData **ppAudio);
+
+    END_INTERFACE
+} IAudioStreamSampleVtbl;
+interface IAudioStreamSample {
+    CONST_VTBL IAudioStreamSampleVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAudioStreamSample_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAudioStreamSample_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAudioStreamSample_Release(This) (This)->lpVtbl->Release(This)
+/*** IStreamSample methods ***/
+#define IAudioStreamSample_GetMediaStream(This,ppMediaStream) (This)->lpVtbl->GetMediaStream(This,ppMediaStream)
+#define IAudioStreamSample_GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) (This)->lpVtbl->GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime)
+#define IAudioStreamSample_SetSampleTimes(This,pStartTime,pEndTime) (This)->lpVtbl->SetSampleTimes(This,pStartTime,pEndTime)
+#define IAudioStreamSample_Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) (This)->lpVtbl->Update(This,dwFlags,hEvent,pfnAPC,dwAPCData)
+#define IAudioStreamSample_CompletionStatus(This,dwFlags,dwMilliseconds) (This)->lpVtbl->CompletionStatus(This,dwFlags,dwMilliseconds)
+/*** IAudioStreamSample methods ***/
+#define IAudioStreamSample_GetAudioData(This,ppAudio) (This)->lpVtbl->GetAudioData(This,ppAudio)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAudioStreamSample_GetAudioData_Proxy(
+    IAudioStreamSample* This,
+    IAudioData **ppAudio);
+void __RPC_STUB IAudioStreamSample_GetAudioData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAudioStreamSample_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMemoryData interface
+ */
+#ifndef __IMemoryData_INTERFACE_DEFINED__
+#define __IMemoryData_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMemoryData, 0x327fc560, 0xaf60, 0x11d0, 0x82,0x12, 0x00,0xc0,0x4f,0xc3,0x2c,0x45);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMemoryData : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetBuffer(
+        DWORD cbSize,
+        BYTE *pbData,
+        DWORD dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetInfo(
+        DWORD *pdwLength,
+        BYTE **ppbData,
+        DWORD *pcbActualData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetActual(
+        DWORD cbDataValid) = 0;
+
+};
+#else
+typedef struct IMemoryDataVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMemoryData* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMemoryData* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMemoryData* This);
+
+    /*** IMemoryData methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetBuffer)(
+        IMemoryData* This,
+        DWORD cbSize,
+        BYTE *pbData,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetInfo)(
+        IMemoryData* This,
+        DWORD *pdwLength,
+        BYTE **ppbData,
+        DWORD *pcbActualData);
+
+    HRESULT (STDMETHODCALLTYPE *SetActual)(
+        IMemoryData* This,
+        DWORD cbDataValid);
+
+    END_INTERFACE
+} IMemoryDataVtbl;
+interface IMemoryData {
+    CONST_VTBL IMemoryDataVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMemoryData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMemoryData_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMemoryData_Release(This) (This)->lpVtbl->Release(This)
+/*** IMemoryData methods ***/
+#define IMemoryData_SetBuffer(This,cbSize,pbData,dwFlags) (This)->lpVtbl->SetBuffer(This,cbSize,pbData,dwFlags)
+#define IMemoryData_GetInfo(This,pdwLength,ppbData,pcbActualData) (This)->lpVtbl->GetInfo(This,pdwLength,ppbData,pcbActualData)
+#define IMemoryData_SetActual(This,cbDataValid) (This)->lpVtbl->SetActual(This,cbDataValid)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMemoryData_SetBuffer_Proxy(
+    IMemoryData* This,
+    DWORD cbSize,
+    BYTE *pbData,
+    DWORD dwFlags);
+void __RPC_STUB IMemoryData_SetBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMemoryData_GetInfo_Proxy(
+    IMemoryData* This,
+    DWORD *pdwLength,
+    BYTE **ppbData,
+    DWORD *pcbActualData);
+void __RPC_STUB IMemoryData_GetInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMemoryData_SetActual_Proxy(
+    IMemoryData* This,
+    DWORD cbDataValid);
+void __RPC_STUB IMemoryData_SetActual_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMemoryData_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAudioData interface
+ */
+#ifndef __IAudioData_INTERFACE_DEFINED__
+#define __IAudioData_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAudioData, 0x54c719c0, 0xaf60, 0x11d0, 0x82,0x12, 0x00,0xc0,0x4f,0xc3,0x2c,0x45);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAudioData : public IMemoryData
+{
+    virtual HRESULT STDMETHODCALLTYPE GetFormat(
+        WAVEFORMATEX *pWaveFormatCurrent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFormat(
+        const WAVEFORMATEX *lpWaveFormat) = 0;
+
+};
+#else
+typedef struct IAudioDataVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAudioData* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAudioData* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAudioData* This);
+
+    /*** IMemoryData methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetBuffer)(
+        IAudioData* This,
+        DWORD cbSize,
+        BYTE *pbData,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetInfo)(
+        IAudioData* This,
+        DWORD *pdwLength,
+        BYTE **ppbData,
+        DWORD *pcbActualData);
+
+    HRESULT (STDMETHODCALLTYPE *SetActual)(
+        IAudioData* This,
+        DWORD cbDataValid);
+
+    /*** IAudioData methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetFormat)(
+        IAudioData* This,
+        WAVEFORMATEX *pWaveFormatCurrent);
+
+    HRESULT (STDMETHODCALLTYPE *SetFormat)(
+        IAudioData* This,
+        const WAVEFORMATEX *lpWaveFormat);
+
+    END_INTERFACE
+} IAudioDataVtbl;
+interface IAudioData {
+    CONST_VTBL IAudioDataVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAudioData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAudioData_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAudioData_Release(This) (This)->lpVtbl->Release(This)
+/*** IMemoryData methods ***/
+#define IAudioData_SetBuffer(This,cbSize,pbData,dwFlags) (This)->lpVtbl->SetBuffer(This,cbSize,pbData,dwFlags)
+#define IAudioData_GetInfo(This,pdwLength,ppbData,pcbActualData) (This)->lpVtbl->GetInfo(This,pdwLength,ppbData,pcbActualData)
+#define IAudioData_SetActual(This,cbDataValid) (This)->lpVtbl->SetActual(This,cbDataValid)
+/*** IAudioData methods ***/
+#define IAudioData_GetFormat(This,pWaveFormatCurrent) (This)->lpVtbl->GetFormat(This,pWaveFormatCurrent)
+#define IAudioData_SetFormat(This,lpWaveFormat) (This)->lpVtbl->SetFormat(This,lpWaveFormat)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAudioData_GetFormat_Proxy(
+    IAudioData* This,
+    WAVEFORMATEX *pWaveFormatCurrent);
+void __RPC_STUB IAudioData_GetFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAudioData_SetFormat_Proxy(
+    IAudioData* This,
+    const WAVEFORMATEX *lpWaveFormat);
+void __RPC_STUB IAudioData_SetFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAudioData_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_AUSTREAM_H */
diff --git a/mingw-w64-headers/direct-x/include/austream.idl b/mingw-w64-headers/direct-x/include/austream.idl
new file mode 100644
index 0000000..bdfd11f
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/austream.idl
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+import "mmstream.idl";
+
+cpp_quote("#if 0")
+typedef struct tWAVEFORMATEX WAVEFORMATEX;
+cpp_quote ("#endif")
+
+interface IAudioMediaStream;
+interface IAudioStreamSample;
+interface IMemoryData;
+interface IAudioData;
+
+[
+object,
+local,
+uuid(f7537560-a3be-11d0-8212-00c04fc32c45),
+pointer_default(unique)
+]
+interface IAudioMediaStream : IMediaStream
+{
+	HRESULT GetFormat(
+		[out] /*[optional]*/ WAVEFORMATEX *pWaveFormatCurrent
+	);
+
+	HRESULT SetFormat(
+		[in] const WAVEFORMATEX *lpWaveFormat);
+
+	HRESULT CreateSample(
+		[in] IAudioData *pAudioData,
+		[in] DWORD dwFlags,
+		[out] IAudioStreamSample **ppSample
+	);
+}
+
+
+[
+object,
+local,
+uuid(345fee00-aba5-11d0-8212-00c04fc32c45),
+pointer_default(unique)
+]
+interface IAudioStreamSample : IStreamSample
+{
+	HRESULT GetAudioData(
+		[out] IAudioData **ppAudio
+	);
+}
+
+
+[
+object,
+local,
+uuid(327fc560-af60-11d0-8212-00c04fc32c45),
+pointer_default(unique)
+]
+interface IMemoryData : IUnknown
+{
+	HRESULT SetBuffer(
+		[in] DWORD cbSize,
+		[in] BYTE *pbData,
+		[in] DWORD dwFlags
+	);
+
+	HRESULT GetInfo(
+		[out] DWORD *pdwLength,
+		[out] BYTE **ppbData,
+		[out] DWORD *pcbActualData
+	);
+	HRESULT SetActual(
+		[in] DWORD cbDataValid
+	);
+}
+
+
+[
+object,
+local,
+uuid(54c719c0-af60-11d0-8212-00c04fc32c45),
+pointer_default(unique)
+]
+interface IAudioData : IMemoryData
+{
+	HRESULT GetFormat(
+		[out] /*[optional]*/ WAVEFORMATEX *pWaveFormatCurrent
+	);
+
+	HRESULT SetFormat(
+		[in] const WAVEFORMATEX *lpWaveFormat
+	);
+}
diff --git a/mingw-w64-headers/direct-x/include/ddstream.h b/mingw-w64-headers/direct-x/include/ddstream.h
index 9fdf0d0..0819b89 100644
--- a/mingw-w64-headers/direct-x/include/ddstream.h
+++ b/mingw-w64-headers/direct-x/include/ddstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.1.44 from ddstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.3.2 from ddstream.idl - Do not edit ***/
 
 #include <rpc.h>
 #include <rpcndr.h>
@@ -6,15 +6,6 @@
 #ifndef __WIDL_DDSTREAM_H
 #define __WIDL_DDSTREAM_H
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Headers for imported files */
-
-#include <unknwn.h>
-#include <mmstream.h>
-
 /* Forward declarations */
 
 #ifndef __IDirectDrawMediaStream_FWD_DEFINED__
@@ -27,6 +18,14 @@
 typedef interface IDirectDrawStreamSample IDirectDrawStreamSample;
 #endif
 
+/* Headers for imported files */
+
+#include <unknwn.h>
+#include <mmstream.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 #ifndef __WINE_DDRAW_H
 typedef void *LPDDSURFACEDESC;
diff --git a/mingw-w64-headers/direct-x/include/mmstream.h b/mingw-w64-headers/direct-x/include/mmstream.h
new file mode 100644
index 0000000..651092e
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/mmstream.h
@@ -0,0 +1,612 @@
+/*** Autogenerated by WIDL 1.3.2 from mmstream.idl - Do not edit ***/
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_MMSTREAM_H
+#define __WIDL_MMSTREAM_H
+
+/* Forward declarations */
+
+#ifndef __IMultiMediaStream_FWD_DEFINED__
+#define __IMultiMediaStream_FWD_DEFINED__
+typedef interface IMultiMediaStream IMultiMediaStream;
+#endif
+
+#ifndef __IMediaStream_FWD_DEFINED__
+#define __IMediaStream_FWD_DEFINED__
+typedef interface IMediaStream IMediaStream;
+#endif
+
+#ifndef __IStreamSample_FWD_DEFINED__
+#define __IStreamSample_FWD_DEFINED__
+typedef interface IStreamSample IStreamSample;
+#endif
+
+/* Headers for imported files */
+
+#include <unknwn.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MS_ERROR_CODE(x)                  MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)
+#define MS_SUCCESS_CODE(x)                MAKE_HRESULT(0, FACILITY_ITF, x)
+#define MS_S_PENDING                      MS_SUCCESS_CODE(1)
+#define MS_S_NOUPDATE                     MS_SUCCESS_CODE(2)
+#define MS_S_ENDOFSTREAM                  MS_SUCCESS_CODE(3)
+#define MS_E_SAMPLEALLOC                  MS_ERROR_CODE(1)
+#define MS_E_PURPOSEID                    MS_ERROR_CODE(2)
+#define MS_E_NOSTREAM                     MS_ERROR_CODE(3)
+#define MS_E_NOSEEKING                    MS_ERROR_CODE(4)
+#define MS_E_INCOMPATIBLE                 MS_ERROR_CODE(5)
+#define MS_E_BUSY                         MS_ERROR_CODE(6)
+#define MS_E_NOTINIT                      MS_ERROR_CODE(7)
+#define MS_E_SOURCEALREADYDEFINED         MS_ERROR_CODE(8)
+#define MS_E_INVALIDSTREAMTYPE            MS_ERROR_CODE(9)
+#define MS_E_NOTRUNNING                   MS_ERROR_CODE(10)
+DEFINE_GUID(MSPID_PrimaryVideo,  0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);
+DEFINE_GUID(MSPID_PrimaryAudio,  0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);
+#if 0
+typedef void *PAPCFUNC;
+#endif
+typedef LONGLONG STREAM_TIME;
+typedef GUID MSPID;
+typedef REFGUID REFMSPID;
+typedef enum __WIDL_mmstream_generated_name_00000000 {
+    STREAMTYPE_READ = 0,
+    STREAMTYPE_WRITE = 1,
+    STREAMTYPE_TRANSFORM = 2
+} STREAM_TYPE;
+typedef enum __WIDL_mmstream_generated_name_00000001 {
+    STREAMSTATE_STOP = 0,
+    STREAMSTATE_RUN = 1
+} STREAM_STATE;
+typedef enum __WIDL_mmstream_generated_name_00000002 {
+    COMPSTAT_NOUPDATEOK = 0x1,
+    COMPSTAT_WAIT = 0x2,
+    COMPSTAT_ABORT = 0x4
+} COMPLETION_STATUS_FLAGS;
+enum {
+    MMSSF_HASCLOCK = 0x1,
+    MMSSF_SUPPORTSEEK = 0x2,
+    MMSSF_ASYNCHRONOUS = 0x4
+};
+
+enum {
+    SSUPDATE_ASYNC = 0x1,
+    SSUPDATE_CONTINUOUS = 0x2
+};
+
+#ifndef __IMultiMediaStream_FWD_DEFINED__
+#define __IMultiMediaStream_FWD_DEFINED__
+typedef interface IMultiMediaStream IMultiMediaStream;
+#endif
+
+#ifndef __IMediaStream_FWD_DEFINED__
+#define __IMediaStream_FWD_DEFINED__
+typedef interface IMediaStream IMediaStream;
+#endif
+
+#ifndef __IStreamSample_FWD_DEFINED__
+#define __IStreamSample_FWD_DEFINED__
+typedef interface IStreamSample IStreamSample;
+#endif
+
+/*****************************************************************************
+ * IMultiMediaStream interface
+ */
+#ifndef __IMultiMediaStream_INTERFACE_DEFINED__
+#define __IMultiMediaStream_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMultiMediaStream, 0xb502d1bc, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMultiMediaStream : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetInformation(
+        DWORD *pdwFlags,
+        STREAM_TYPE *pStreamType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMediaStream(
+        REFMSPID idPurpose,
+        IMediaStream **ppMediaStream) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumMediaStreams(
+        LONG Index,
+        IMediaStream **ppMediaStream) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetState(
+        STREAM_STATE *pCurrentState) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetState(
+        STREAM_STATE NewState) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTime(
+        STREAM_TIME *pCurrentTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDuration(
+        STREAM_TIME *pDuration) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Seek(
+        STREAM_TIME SeekTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEndOfStreamEventHandle(
+        HANDLE *phEOS) = 0;
+
+};
+#else
+typedef struct IMultiMediaStreamVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMultiMediaStream* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMultiMediaStream* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMultiMediaStream* This);
+
+    /*** IMultiMediaStream methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetInformation)(
+        IMultiMediaStream* This,
+        DWORD *pdwFlags,
+        STREAM_TYPE *pStreamType);
+
+    HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
+        IMultiMediaStream* This,
+        REFMSPID idPurpose,
+        IMediaStream **ppMediaStream);
+
+    HRESULT (STDMETHODCALLTYPE *EnumMediaStreams)(
+        IMultiMediaStream* This,
+        LONG Index,
+        IMediaStream **ppMediaStream);
+
+    HRESULT (STDMETHODCALLTYPE *GetState)(
+        IMultiMediaStream* This,
+        STREAM_STATE *pCurrentState);
+
+    HRESULT (STDMETHODCALLTYPE *SetState)(
+        IMultiMediaStream* This,
+        STREAM_STATE NewState);
+
+    HRESULT (STDMETHODCALLTYPE *GetTime)(
+        IMultiMediaStream* This,
+        STREAM_TIME *pCurrentTime);
+
+    HRESULT (STDMETHODCALLTYPE *GetDuration)(
+        IMultiMediaStream* This,
+        STREAM_TIME *pDuration);
+
+    HRESULT (STDMETHODCALLTYPE *Seek)(
+        IMultiMediaStream* This,
+        STREAM_TIME SeekTime);
+
+    HRESULT (STDMETHODCALLTYPE *GetEndOfStreamEventHandle)(
+        IMultiMediaStream* This,
+        HANDLE *phEOS);
+
+    END_INTERFACE
+} IMultiMediaStreamVtbl;
+interface IMultiMediaStream {
+    CONST_VTBL IMultiMediaStreamVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMultiMediaStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMultiMediaStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMultiMediaStream_Release(This) (This)->lpVtbl->Release(This)
+/*** IMultiMediaStream methods ***/
+#define IMultiMediaStream_GetInformation(This,pdwFlags,pStreamType) (This)->lpVtbl->GetInformation(This,pdwFlags,pStreamType)
+#define IMultiMediaStream_GetMediaStream(This,idPurpose,ppMediaStream) (This)->lpVtbl->GetMediaStream(This,idPurpose,ppMediaStream)
+#define IMultiMediaStream_EnumMediaStreams(This,Index,ppMediaStream) (This)->lpVtbl->EnumMediaStreams(This,Index,ppMediaStream)
+#define IMultiMediaStream_GetState(This,pCurrentState) (This)->lpVtbl->GetState(This,pCurrentState)
+#define IMultiMediaStream_SetState(This,NewState) (This)->lpVtbl->SetState(This,NewState)
+#define IMultiMediaStream_GetTime(This,pCurrentTime) (This)->lpVtbl->GetTime(This,pCurrentTime)
+#define IMultiMediaStream_GetDuration(This,pDuration) (This)->lpVtbl->GetDuration(This,pDuration)
+#define IMultiMediaStream_Seek(This,SeekTime) (This)->lpVtbl->Seek(This,SeekTime)
+#define IMultiMediaStream_GetEndOfStreamEventHandle(This,phEOS) (This)->lpVtbl->GetEndOfStreamEventHandle(This,phEOS)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetInformation_Proxy(
+    IMultiMediaStream* This,
+    DWORD *pdwFlags,
+    STREAM_TYPE *pStreamType);
+void __RPC_STUB IMultiMediaStream_GetInformation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetMediaStream_Proxy(
+    IMultiMediaStream* This,
+    REFMSPID idPurpose,
+    IMediaStream **ppMediaStream);
+void __RPC_STUB IMultiMediaStream_GetMediaStream_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMultiMediaStream_EnumMediaStreams_Proxy(
+    IMultiMediaStream* This,
+    LONG Index,
+    IMediaStream **ppMediaStream);
+void __RPC_STUB IMultiMediaStream_EnumMediaStreams_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetState_Proxy(
+    IMultiMediaStream* This,
+    STREAM_STATE *pCurrentState);
+void __RPC_STUB IMultiMediaStream_GetState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMultiMediaStream_SetState_Proxy(
+    IMultiMediaStream* This,
+    STREAM_STATE NewState);
+void __RPC_STUB IMultiMediaStream_SetState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetTime_Proxy(
+    IMultiMediaStream* This,
+    STREAM_TIME *pCurrentTime);
+void __RPC_STUB IMultiMediaStream_GetTime_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetDuration_Proxy(
+    IMultiMediaStream* This,
+    STREAM_TIME *pDuration);
+void __RPC_STUB IMultiMediaStream_GetDuration_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMultiMediaStream_Seek_Proxy(
+    IMultiMediaStream* This,
+    STREAM_TIME SeekTime);
+void __RPC_STUB IMultiMediaStream_Seek_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetEndOfStreamEventHandle_Proxy(
+    IMultiMediaStream* This,
+    HANDLE *phEOS);
+void __RPC_STUB IMultiMediaStream_GetEndOfStreamEventHandle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMultiMediaStream_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMediaStream interface
+ */
+#ifndef __IMediaStream_INTERFACE_DEFINED__
+#define __IMediaStream_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMediaStream, 0xb502d1bd, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMediaStream : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetMultiMediaStream(
+        IMultiMediaStream **ppMultiMediaStream) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetInformation(
+        MSPID *pPurposeId,
+        STREAM_TYPE *pType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSameFormat(
+        IMediaStream *pStreamThatHasDesiredFormat,
+        DWORD dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AllocateSample(
+        DWORD dwFlags,
+        IStreamSample **ppSample) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateSharedSample(
+        IStreamSample *pExistingSample,
+        DWORD dwFlags,
+        IStreamSample **ppNewSample) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendEndOfStream(
+        DWORD dwFlags) = 0;
+
+};
+#else
+typedef struct IMediaStreamVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMediaStream* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMediaStream* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMediaStream* This);
+
+    /*** IMediaStream methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)(
+        IMediaStream* This,
+        IMultiMediaStream **ppMultiMediaStream);
+
+    HRESULT (STDMETHODCALLTYPE *GetInformation)(
+        IMediaStream* This,
+        MSPID *pPurposeId,
+        STREAM_TYPE *pType);
+
+    HRESULT (STDMETHODCALLTYPE *SetSameFormat)(
+        IMediaStream* This,
+        IMediaStream *pStreamThatHasDesiredFormat,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *AllocateSample)(
+        IMediaStream* This,
+        DWORD dwFlags,
+        IStreamSample **ppSample);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSharedSample)(
+        IMediaStream* This,
+        IStreamSample *pExistingSample,
+        DWORD dwFlags,
+        IStreamSample **ppNewSample);
+
+    HRESULT (STDMETHODCALLTYPE *SendEndOfStream)(
+        IMediaStream* This,
+        DWORD dwFlags);
+
+    END_INTERFACE
+} IMediaStreamVtbl;
+interface IMediaStream {
+    CONST_VTBL IMediaStreamVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMediaStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMediaStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMediaStream_Release(This) (This)->lpVtbl->Release(This)
+/*** IMediaStream methods ***/
+#define IMediaStream_GetMultiMediaStream(This,ppMultiMediaStream) (This)->lpVtbl->GetMultiMediaStream(This,ppMultiMediaStream)
+#define IMediaStream_GetInformation(This,pPurposeId,pType) (This)->lpVtbl->GetInformation(This,pPurposeId,pType)
+#define IMediaStream_SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) (This)->lpVtbl->SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags)
+#define IMediaStream_AllocateSample(This,dwFlags,ppSample) (This)->lpVtbl->AllocateSample(This,dwFlags,ppSample)
+#define IMediaStream_CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) (This)->lpVtbl->CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample)
+#define IMediaStream_SendEndOfStream(This,dwFlags) (This)->lpVtbl->SendEndOfStream(This,dwFlags)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMediaStream_GetMultiMediaStream_Proxy(
+    IMediaStream* This,
+    IMultiMediaStream **ppMultiMediaStream);
+void __RPC_STUB IMediaStream_GetMultiMediaStream_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMediaStream_GetInformation_Proxy(
+    IMediaStream* This,
+    MSPID *pPurposeId,
+    STREAM_TYPE *pType);
+void __RPC_STUB IMediaStream_GetInformation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMediaStream_SetSameFormat_Proxy(
+    IMediaStream* This,
+    IMediaStream *pStreamThatHasDesiredFormat,
+    DWORD dwFlags);
+void __RPC_STUB IMediaStream_SetSameFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMediaStream_AllocateSample_Proxy(
+    IMediaStream* This,
+    DWORD dwFlags,
+    IStreamSample **ppSample);
+void __RPC_STUB IMediaStream_AllocateSample_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMediaStream_CreateSharedSample_Proxy(
+    IMediaStream* This,
+    IStreamSample *pExistingSample,
+    DWORD dwFlags,
+    IStreamSample **ppNewSample);
+void __RPC_STUB IMediaStream_CreateSharedSample_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMediaStream_SendEndOfStream_Proxy(
+    IMediaStream* This,
+    DWORD dwFlags);
+void __RPC_STUB IMediaStream_SendEndOfStream_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMediaStream_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IStreamSample interface
+ */
+#ifndef __IStreamSample_INTERFACE_DEFINED__
+#define __IStreamSample_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IStreamSample, 0xb502d1be, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IStreamSample : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetMediaStream(
+        IMediaStream **ppMediaStream) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSampleTimes(
+        STREAM_TIME *pStartTime,
+        STREAM_TIME *pEndTime,
+        STREAM_TIME *pCurrentTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSampleTimes(
+        const STREAM_TIME *pStartTime,
+        const STREAM_TIME *pEndTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Update(
+        DWORD dwFlags,
+        HANDLE hEvent,
+        PAPCFUNC pfnAPC,
+        DWORD dwAPCData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CompletionStatus(
+        DWORD dwFlags,
+        DWORD dwMilliseconds) = 0;
+
+};
+#else
+typedef struct IStreamSampleVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IStreamSample* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IStreamSample* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IStreamSample* This);
+
+    /*** IStreamSample methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
+        IStreamSample* This,
+        IMediaStream **ppMediaStream);
+
+    HRESULT (STDMETHODCALLTYPE *GetSampleTimes)(
+        IStreamSample* This,
+        STREAM_TIME *pStartTime,
+        STREAM_TIME *pEndTime,
+        STREAM_TIME *pCurrentTime);
+
+    HRESULT (STDMETHODCALLTYPE *SetSampleTimes)(
+        IStreamSample* This,
+        const STREAM_TIME *pStartTime,
+        const STREAM_TIME *pEndTime);
+
+    HRESULT (STDMETHODCALLTYPE *Update)(
+        IStreamSample* This,
+        DWORD dwFlags,
+        HANDLE hEvent,
+        PAPCFUNC pfnAPC,
+        DWORD dwAPCData);
+
+    HRESULT (STDMETHODCALLTYPE *CompletionStatus)(
+        IStreamSample* This,
+        DWORD dwFlags,
+        DWORD dwMilliseconds);
+
+    END_INTERFACE
+} IStreamSampleVtbl;
+interface IStreamSample {
+    CONST_VTBL IStreamSampleVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IStreamSample_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IStreamSample_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStreamSample_Release(This) (This)->lpVtbl->Release(This)
+/*** IStreamSample methods ***/
+#define IStreamSample_GetMediaStream(This,ppMediaStream) (This)->lpVtbl->GetMediaStream(This,ppMediaStream)
+#define IStreamSample_GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) (This)->lpVtbl->GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime)
+#define IStreamSample_SetSampleTimes(This,pStartTime,pEndTime) (This)->lpVtbl->SetSampleTimes(This,pStartTime,pEndTime)
+#define IStreamSample_Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) (This)->lpVtbl->Update(This,dwFlags,hEvent,pfnAPC,dwAPCData)
+#define IStreamSample_CompletionStatus(This,dwFlags,dwMilliseconds) (This)->lpVtbl->CompletionStatus(This,dwFlags,dwMilliseconds)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IStreamSample_GetMediaStream_Proxy(
+    IStreamSample* This,
+    IMediaStream **ppMediaStream);
+void __RPC_STUB IStreamSample_GetMediaStream_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStreamSample_GetSampleTimes_Proxy(
+    IStreamSample* This,
+    STREAM_TIME *pStartTime,
+    STREAM_TIME *pEndTime,
+    STREAM_TIME *pCurrentTime);
+void __RPC_STUB IStreamSample_GetSampleTimes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStreamSample_SetSampleTimes_Proxy(
+    IStreamSample* This,
+    const STREAM_TIME *pStartTime,
+    const STREAM_TIME *pEndTime);
+void __RPC_STUB IStreamSample_SetSampleTimes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStreamSample_Update_Proxy(
+    IStreamSample* This,
+    DWORD dwFlags,
+    HANDLE hEvent,
+    PAPCFUNC pfnAPC,
+    DWORD dwAPCData);
+void __RPC_STUB IStreamSample_Update_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStreamSample_CompletionStatus_Proxy(
+    IStreamSample* This,
+    DWORD dwFlags,
+    DWORD dwMilliseconds);
+void __RPC_STUB IStreamSample_CompletionStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IStreamSample_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_MMSTREAM_H */
diff --git a/mingw-w64-headers/direct-x/include/mmstream.idl b/mingw-w64-headers/direct-x/include/mmstream.idl
new file mode 100644
index 0000000..9730ee2
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/mmstream.idl
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+
+cpp_quote("#define MS_ERROR_CODE(x)                  MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)")
+cpp_quote("#define MS_SUCCESS_CODE(x)                MAKE_HRESULT(0, FACILITY_ITF, x)")
+cpp_quote("#define MS_S_PENDING                      MS_SUCCESS_CODE(1)")
+cpp_quote("#define MS_S_NOUPDATE                     MS_SUCCESS_CODE(2)")
+cpp_quote("#define MS_S_ENDOFSTREAM                  MS_SUCCESS_CODE(3)")
+
+cpp_quote("#define MS_E_SAMPLEALLOC                  MS_ERROR_CODE(1)")
+cpp_quote("#define MS_E_PURPOSEID                    MS_ERROR_CODE(2)")
+cpp_quote("#define MS_E_NOSTREAM                     MS_ERROR_CODE(3)")
+cpp_quote("#define MS_E_NOSEEKING                    MS_ERROR_CODE(4)")
+cpp_quote("#define MS_E_INCOMPATIBLE                 MS_ERROR_CODE(5)")
+cpp_quote("#define MS_E_BUSY                         MS_ERROR_CODE(6)")
+cpp_quote("#define MS_E_NOTINIT                      MS_ERROR_CODE(7)")
+cpp_quote("#define MS_E_SOURCEALREADYDEFINED         MS_ERROR_CODE(8)")
+cpp_quote("#define MS_E_INVALIDSTREAMTYPE            MS_ERROR_CODE(9)")
+cpp_quote("#define MS_E_NOTRUNNING                   MS_ERROR_CODE(10)")
+
+cpp_quote("DEFINE_GUID(MSPID_PrimaryVideo,  0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
+cpp_quote("DEFINE_GUID(MSPID_PrimaryAudio,  0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
+
+cpp_quote("#if 0")
+typedef void* PAPCFUNC;
+cpp_quote("#endif")
+
+typedef LONGLONG STREAM_TIME;
+
+typedef GUID MSPID;
+typedef REFGUID REFMSPID;
+
+typedef enum {
+	STREAMTYPE_READ         = 0,
+	STREAMTYPE_WRITE        = 1,
+	STREAMTYPE_TRANSFORM    = 2
+} STREAM_TYPE;
+
+typedef enum {
+	STREAMSTATE_STOP        = 0,
+	STREAMSTATE_RUN         = 1
+} STREAM_STATE;
+
+
+typedef enum {
+	COMPSTAT_NOUPDATEOK                             = 0x00000001,
+	COMPSTAT_WAIT                                   = 0x00000002,
+	COMPSTAT_ABORT                                  = 0x00000004
+} COMPLETION_STATUS_FLAGS;
+
+enum {
+	MMSSF_HASCLOCK                                  = 0x00000001,
+	MMSSF_SUPPORTSEEK                               = 0x00000002,
+	MMSSF_ASYNCHRONOUS                              = 0x00000004
+};
+
+enum {
+	SSUPDATE_ASYNC                                  = 0x00000001,
+	SSUPDATE_CONTINUOUS                             = 0x00000002
+};
+
+interface IMultiMediaStream;
+interface IMediaStream;
+interface IStreamSample;
+
+
+[
+object,
+local,
+uuid(B502D1BC-9A57-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IMultiMediaStream : IUnknown {
+
+	HRESULT GetInformation(
+		[out, optional] DWORD *pdwFlags,
+		[out, optional] STREAM_TYPE *pStreamType);
+
+	HRESULT GetMediaStream(
+		[in] REFMSPID idPurpose,
+		[out] IMediaStream **ppMediaStream);
+
+	HRESULT EnumMediaStreams(
+		[in] long Index,
+		[out] IMediaStream **ppMediaStream);
+
+	HRESULT GetState(
+		[out] STREAM_STATE *pCurrentState);
+
+	HRESULT SetState(
+		[in] STREAM_STATE NewState);
+
+	HRESULT GetTime(
+		[out] STREAM_TIME *pCurrentTime);
+
+	HRESULT GetDuration(
+		[out] STREAM_TIME *pDuration);
+
+	HRESULT Seek(
+		[in] STREAM_TIME SeekTime);
+
+	HRESULT GetEndOfStreamEventHandle(
+		[out] HANDLE *phEOS);
+}
+
+
+[
+object,
+uuid(B502D1BD-9A57-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IMediaStream : IUnknown {
+	
+	HRESULT GetMultiMediaStream(
+		[out] IMultiMediaStream **ppMultiMediaStream);
+
+	HRESULT GetInformation(
+		[out, optional] MSPID *pPurposeId,
+		[out, optional] STREAM_TYPE *pType);
+
+	HRESULT SetSameFormat(
+		[in] IMediaStream *pStreamThatHasDesiredFormat,
+		[in] DWORD dwFlags);
+
+	HRESULT AllocateSample(
+		[in]  DWORD dwFlags,
+		[out] IStreamSample **ppSample);
+
+	HRESULT CreateSharedSample(
+		[in]  IStreamSample *pExistingSample,
+		[in]  DWORD dwFlags,
+		[out] IStreamSample **ppNewSample);
+
+	HRESULT SendEndOfStream(DWORD dwFlags);
+}
+
+
+[
+object,
+local,
+uuid(B502D1BE-9A57-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IStreamSample : IUnknown {
+	
+	HRESULT GetMediaStream(
+		[in] IMediaStream **ppMediaStream);
+
+	HRESULT GetSampleTimes(
+		[out, optional] STREAM_TIME * pStartTime,
+		[out, optional] STREAM_TIME * pEndTime,
+		[out, optional] STREAM_TIME * pCurrentTime);
+
+	HRESULT SetSampleTimes(
+		[in, optional] const STREAM_TIME *pStartTime,
+		[in, optional] const STREAM_TIME *pEndTime);
+
+	HRESULT Update(
+		[in] DWORD dwFlags,
+		[in, optional] HANDLE hEvent,
+		[in, optional] PAPCFUNC pfnAPC,
+		[in, optional] DWORD dwAPCData);
+
+	HRESULT CompletionStatus(
+		[in] DWORD dwFlags,
+		[in, optional] DWORD dwMilliseconds);
+}