Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _INC_WMCONTAINER
      7 #define _INC_WMCONTAINER
      8 #include <propsys.h>
      9 #include <mfidl.h>
     10 
     11 #if (_WIN32_WINNT >= 0x0600)
     12 
     13 #ifdef __IMFASFSplitter_FWD_DEFINED__
     14 #define __IMFASFSplitter_FWD_DEFINED__
     15 typedef struct IMFASFSplitter IMFASFSplitter;
     16 #endif
     17 
     18 typedef struct IMFASFContentInfo IMFASFContentInfo;
     19 typedef struct IMFASFProfile IMFASFProfile;
     20 typedef struct IMFActivate IMFActivate;
     21 
     22 #ifndef __MFTIME_DEFINED__
     23 #define __MFTIME_DEFINED__
     24 __MINGW_EXTENSION typedef LONGLONG MFTIME;
     25 #endif
     26 
     27 typedef enum ASF_SELECTION_STATUS {
     28   ASF_STATUS_NOTSELECTED       = 0,
     29   ASF_STATUS_CLEANPOINTSONLY   = 1,
     30   ASF_STATUS_ALLDATAUNITS      = 2
     31 } ASF_SELECTION_STATUS;
     32 
     33 typedef enum ASF_STATUSFLAGS {
     34   ASF_STATUSFLAGS_INCOMPLETE       = 0x00000001,
     35   ASF_STATUSFLAGS_NONFATAL_ERROR   = 0x00000002
     36 } ASF_STATUSFLAGS;
     37 
     38 typedef enum MFASF_MULTIPLEXERFLAGS {
     39   MFASF_MULTIPLEXER_AUTOADJUST_BITRATE   = 0x00000001
     40 } MFASF_MULTIPLEXERFLAGS;
     41 
     42 typedef enum MFASF_SPLITTERFLAGS {
     43   MFASF_SPLITTER_REVERSE   = 0x00000001,
     44   MFASF_SPLITTER_WMDRM     = 0x00000002
     45 } MFASF_SPLITTERFLAGS;
     46 
     47 typedef enum MFASF_STREAMSELECTORFLAGS {
     48   MFASF_STREAMSELECTOR_DISABLE_THINNING      = 0x00000001,
     49   MFASF_STREAMSELECTOR_USE_AVERAGE_BITRATE   = 0x00000002
     50 } MFASF_STREAMSELECTORFLAGS;
     51 
     52 typedef struct ASF_MUX_STATISTICS {
     53   DWORD cFramesWritten;
     54   DWORD cFramesDropped;
     55 } ASF_MUX_STATISTICS;
     56 
     57 typedef struct _ASF_INDEX_IDENTIFIER {
     58   GUID guidIndexType;
     59   WORD wStreamNumber;
     60 } ASF_INDEX_IDENTIFIER;
     61 
     62 typedef struct _ASF_INDEX_DESCRIPTOR {
     63   ASF_INDEX_IDENTIFIER Identifier;
     64   WORD                 cPerEntryBytes;
     65   WCHAR                szDescription[32];
     66   DWORD                dwInterval;
     67 } ASF_INDEX_DESCRIPTOR;
     68 
     69 #undef  INTERFACE
     70 #define INTERFACE IMFASFMutualExclusion
     71 #ifdef __GNUC__
     72 #warning COM interfaces layout in this header has not been verified.
     73 #warning COM interfaces with incorrect layout may not work at all.
     74 __MINGW_BROKEN_INTERFACE(INTERFACE)
     75 #endif
     76 DECLARE_INTERFACE_(IMFASFMutualExclusion,IUnknown)
     77 {
     78     BEGIN_INTERFACE
     79 
     80     /* IUnknown methods */
     81     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
     82     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
     83     STDMETHOD_(ULONG, Release)(THIS) PURE;
     84 
     85     /* IMFASFMutualExclusion methods */
     86     STDMETHOD_(HRESULT,AddRecord)(THIS_ DWORD *pdwRecordNumber) PURE;
     87     STDMETHOD_(HRESULT,AddStreamForRecord)(THIS_ DWORD dwRecordNumber,WORD wStreamNumber) PURE;
     88     STDMETHOD_(HRESULT,Clone)(THIS_ IMFASFMutualExclusion **ppIMutex) PURE;
     89     STDMETHOD_(HRESULT,GetRecordCount)(THIS_ DWORD *pdwRecordCount) PURE;
     90     STDMETHOD_(HRESULT,GetStreamsForRecord)(THIS_ DWORD dwRecordNumber,WORD *pwStreamNumArray,DWORD *pcStreams) PURE;
     91     STDMETHOD_(HRESULT,GetType)(THIS_ GUID *pguidType) PURE;
     92     STDMETHOD_(HRESULT,RemoveRecord)(THIS_ DWORD dwRecordNumber) PURE;
     93     STDMETHOD_(HRESULT,RemoveStreamFromRecord)(THIS_ DWORD dwRecordNumber,WORD wStreamNumber) PURE;
     94     STDMETHOD_(HRESULT,SetType)(THIS_ REFGUID guidType) PURE;
     95 
     96     END_INTERFACE
     97 };
     98 #ifdef COBJMACROS
     99 #define IMFASFMutualExclusion_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    100 #define IMFASFMutualExclusion_AddRef(This) (This)->lpVtbl->AddRef(This)
    101 #define IMFASFMutualExclusion_Release(This) (This)->lpVtbl->Release(This)
    102 #define IMFASFMutualExclusion_AddRecord(This,pdwRecordNumber) (This)->lpVtbl->AddRecord(This,pdwRecordNumber)
    103 #define IMFASFMutualExclusion_AddStreamForRecord(This,dwRecordNumber,wStreamNumber) (This)->lpVtbl->AddStreamForRecord(This,dwRecordNumber,wStreamNumber)
    104 #define IMFASFMutualExclusion_Clone(This,ppIMutex) (This)->lpVtbl->Clone(This,ppIMutex)
    105 #define IMFASFMutualExclusion_GetRecordCount(This,pdwRecordCount) (This)->lpVtbl->GetRecordCount(This,pdwRecordCount)
    106 #define IMFASFMutualExclusion_GetStreamsForRecord(This,dwRecordNumber,pwStreamNumArray,pcStreams) (This)->lpVtbl->GetStreamsForRecord(This,dwRecordNumber,pwStreamNumArray,pcStreams)
    107 #define IMFASFMutualExclusion_GetType(This,pguidType) (This)->lpVtbl->GetType(This,pguidType)
    108 #define IMFASFMutualExclusion_RemoveRecord(This,dwRecordNumber) (This)->lpVtbl->RemoveRecord(This,dwRecordNumber)
    109 #define IMFASFMutualExclusion_RemoveStreamFromRecord(This,dwRecordNumber,wStreamNumber) (This)->lpVtbl->RemoveStreamFromRecord(This,dwRecordNumber,wStreamNumber)
    110 #define IMFASFMutualExclusion_SetType(This,guidType) (This)->lpVtbl->SetType(This,guidType)
    111 #endif /*COBJMACROS*/
    112 
    113 #undef  INTERFACE
    114 #define INTERFACE IMFASFStreamPrioritization
    115 #ifdef __GNUC__
    116 #warning COM interfaces layout in this header has not been verified.
    117 #warning COM interfaces with incorrect layout may not work at all.
    118 __MINGW_BROKEN_INTERFACE(INTERFACE)
    119 #endif
    120 DECLARE_INTERFACE_(IMFASFStreamPrioritization,IUnknown)
    121 {
    122     BEGIN_INTERFACE
    123 
    124     /* IUnknown methods */
    125     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    126     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    127     STDMETHOD_(ULONG, Release)(THIS) PURE;
    128 
    129     /* IMFASFStreamPrioritization methods */
    130     STDMETHOD_(HRESULT,AddStream)(THIS_ WORD wStreamNumber,WORD wStreamFlags) PURE;
    131     STDMETHOD_(HRESULT,Clone)(THIS_ IMFASFStreamPrioritization **ppIStreamPrioritization) PURE;
    132     STDMETHOD_(HRESULT,GetStream)(THIS_ DWORD dwStreamIndex,WORD *pwStreamNumber,WORD *pwStreamFlags) PURE;
    133     STDMETHOD_(HRESULT,GetStreamCount)(THIS_ DWORD dwStreamIndex) PURE;
    134     STDMETHOD_(HRESULT,RemoveStream)(THIS_ DWORD dwStreamIndex) PURE;
    135 
    136     END_INTERFACE
    137 };
    138 #ifdef COBJMACROS
    139 #define IMFASFStreamPrioritization_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    140 #define IMFASFStreamPrioritization_AddRef(This) (This)->lpVtbl->AddRef(This)
    141 #define IMFASFStreamPrioritization_Release(This) (This)->lpVtbl->Release(This)
    142 #define IMFASFStreamPrioritization_AddStream(This,wStreamNumber,wStreamFlags) (This)->lpVtbl->AddStream(This,wStreamNumber,wStreamFlags)
    143 #define IMFASFStreamPrioritization_Clone(This,ppIStreamPrioritization) (This)->lpVtbl->Clone(This,ppIStreamPrioritization)
    144 #define IMFASFStreamPrioritization_GetStream(This,dwStreamIndex,pwStreamNumber,pwStreamFlags) (This)->lpVtbl->GetStream(This,dwStreamIndex,pwStreamNumber,pwStreamFlags)
    145 #define IMFASFStreamPrioritization_GetStreamCount(This,dwStreamIndex) (This)->lpVtbl->GetStreamCount(This,dwStreamIndex)
    146 #define IMFASFStreamPrioritization_RemoveStream(This,dwStreamIndex) (This)->lpVtbl->RemoveStream(This,dwStreamIndex)
    147 #endif /*COBJMACROS*/
    148 
    149 
    150 #undef  INTERFACE
    151 #define INTERFACE IMFASFSplitter
    152 #ifdef __GNUC__
    153 #warning COM interfaces layout in this header has not been verified.
    154 #warning COM interfaces with incorrect layout may not work at all.
    155 __MINGW_BROKEN_INTERFACE(INTERFACE)
    156 #endif
    157 DECLARE_INTERFACE_(IMFASFSplitter,IUnknown)
    158 {
    159     BEGIN_INTERFACE
    160 
    161     /* IUnknown methods */
    162     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    163     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    164     STDMETHOD_(ULONG, Release)(THIS) PURE;
    165 
    166     /* IMFASFSplitter methods */
    167     STDMETHOD_(HRESULT,Flush)(THIS) PURE;
    168     STDMETHOD_(HRESULT,GetFlags)(THIS_ DWORD *pdwFlags) PURE;
    169     STDMETHOD_(HRESULT,GetLastSendTime)(THIS_ DWORD *pdwLastSendTime) PURE;
    170     STDMETHOD_(HRESULT,GetNextSample)(THIS_ DWORD *pdwStatusFlags,WORD *pwStreamNumber,IMFSample **ppISample) PURE;
    171     STDMETHOD_(HRESULT,GetSelectedStreams)(THIS_ WORD *pwStreamNumbers,WORD *pwNumStreams) PURE;
    172     STDMETHOD_(HRESULT,Initialize)(THIS_ IMFASFContentInfo *pIContentInfo) PURE;
    173     STDMETHOD_(HRESULT,ParseData)(THIS_ IMFMediaBuffer *pIBuffer,DWORD cbBufferOffset,DWORD cbLength) PURE;
    174     STDMETHOD_(HRESULT,SelectStreams)(THIS_ WORD *pwStreamNumbers,WORD wNumStreams) PURE;
    175     STDMETHOD_(HRESULT,SetFlags)(THIS_ DWORD dwFlags) PURE;
    176 
    177     END_INTERFACE
    178 };
    179 #ifdef COBJMACROS
    180 #define IMFASFSplitter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    181 #define IMFASFSplitter_AddRef(This) (This)->lpVtbl->AddRef(This)
    182 #define IMFASFSplitter_Release(This) (This)->lpVtbl->Release(This)
    183 #define IMFASFSplitter_Flush() (This)->lpVtbl->Flush(This)
    184 #define IMFASFSplitter_GetFlags(This,pdwFlags) (This)->lpVtbl->GetFlags(This,pdwFlags)
    185 #define IMFASFSplitter_GetLastSendTime(This,pdwLastSendTime) (This)->lpVtbl->GetLastSendTime(This,pdwLastSendTime)
    186 #define IMFASFSplitter_GetNextSample(This,pdwStatusFlags,pwStreamNumber,ppISample) (This)->lpVtbl->GetNextSample(This,pdwStatusFlags,pwStreamNumber,ppISample)
    187 #define IMFASFSplitter_GetSelectedStreams(This,pwStreamNumbers,pwNumStreams) (This)->lpVtbl->GetSelectedStreams(This,pwStreamNumbers,pwNumStreams)
    188 #define IMFASFSplitter_Initialize(This,pIContentInfo) (This)->lpVtbl->Initialize(This,pIContentInfo)
    189 #define IMFASFSplitter_ParseData(This,pIBuffer,cbBufferOffset,cbLength) (This)->lpVtbl->ParseData(This,pIBuffer,cbBufferOffset,cbLength)
    190 #define IMFASFSplitter_SelectStreams(This,pwStreamNumbers,wNumStreams) (This)->lpVtbl->SelectStreams(This,pwStreamNumbers,wNumStreams)
    191 #define IMFASFSplitter_SetFlags(This,dwFlags) (This)->lpVtbl->SetFlags(This,dwFlags)
    192 #endif /*COBJMACROS*/
    193 
    194 #undef  INTERFACE
    195 #define INTERFACE IMFASFContentInfo
    196 #ifdef __GNUC__
    197 #warning COM interfaces layout in this header has not been verified.
    198 #warning COM interfaces with incorrect layout may not work at all.
    199 __MINGW_BROKEN_INTERFACE(INTERFACE)
    200 #endif
    201 DECLARE_INTERFACE_(IMFASFContentInfo,IMFAttributes)
    202 {
    203     BEGIN_INTERFACE
    204 
    205     /* IUnknown methods */
    206     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    207     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    208     STDMETHOD_(ULONG, Release)(THIS) PURE;
    209 
    210     /* IMFAttributes methods */
    211     STDMETHOD_(HRESULT,Compare)(THIS_ IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,BOOL *pbResult) PURE;
    212     STDMETHOD_(HRESULT,CompareItem)(THIS_ REFGUID guidKey,REFPROPVARIANT Value,BOOL *pbResult) PURE;
    213     STDMETHOD_(HRESULT,CopyAllItems)(THIS_ IMFAttributes *pDest) PURE;
    214     STDMETHOD_(HRESULT,DeleteAllItems)(THIS) PURE;
    215     STDMETHOD_(HRESULT,DeleteItem)(THIS_ REFGUID guidKey) PURE;
    216     STDMETHOD_(HRESULT,GetAllocatedBlob)(THIS_ REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) PURE;
    217     STDMETHOD_(HRESULT,GetAllocatedString)(THIS_ REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) PURE;
    218     STDMETHOD_(HRESULT,GetBlob)(THIS_ REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) PURE;
    219     STDMETHOD_(HRESULT,GetBlobSize)(THIS_ REFGUID guidKey,UINT32 *pcbBlobSize) PURE;
    220     STDMETHOD_(HRESULT,GetCount)(THIS_ UINT32 *pcItems) PURE;
    221     STDMETHOD_(HRESULT,GetDouble)(THIS_ REFGUID guidKey,double *pfValue) PURE;
    222     STDMETHOD_(HRESULT,GetGUID)(THIS_ REFGUID guidKey,GUID *pguidValue) PURE;
    223     STDMETHOD_(HRESULT,GetItem)(THIS_ REFGUID guidKey,PROPVARIANT *pValue) PURE;
    224     STDMETHOD_(HRESULT,GetItemByIndex)(THIS_ UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) PURE;
    225     STDMETHOD_(HRESULT,GetItemType)(THIS_ REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) PURE;
    226     STDMETHOD_(HRESULT,GetString)(THIS_ REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) PURE;
    227     STDMETHOD_(HRESULT,GetStringLength)(THIS_ REFGUID guidKey,UINT32 *pcchLength) PURE;
    228     STDMETHOD_(HRESULT,GetUINT32)(THIS_ REFGUID guidKey,UINT32 *punValue) PURE;
    229     STDMETHOD_(HRESULT,GetUINT64)(THIS_ REFGUID guidKey,UINT64 *punValue) PURE;
    230     STDMETHOD_(HRESULT,GetUnknown)(THIS_ REFGUID guidKey,REFIID riid,LPVOID *ppv) PURE;
    231     STDMETHOD_(HRESULT,LockStore)(THIS) PURE;
    232     STDMETHOD_(HRESULT,SetBlob)(THIS_ REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) PURE;
    233     STDMETHOD_(HRESULT,SetDouble)(THIS_ REFGUID guidKey,double fValue) PURE;
    234     STDMETHOD_(HRESULT,SetGUID)(THIS_ REFGUID guidKey,REFGUID guidValue) PURE;
    235     STDMETHOD_(HRESULT,SetItem)(THIS_ REFGUID guidKey,REFPROPVARIANT Value) PURE;
    236     STDMETHOD_(HRESULT,SetString)(THIS_ REFGUID guidKey,LPCWSTR wszValue) PURE;
    237     STDMETHOD_(HRESULT,SetUINT32)(THIS_ REFGUID guidKey,UINT32 unValue) PURE;
    238     STDMETHOD_(HRESULT,SetUINT64)(THIS_ REFGUID guidKey,UINT64 unValue) PURE;
    239     STDMETHOD_(HRESULT,SetUnknown)(THIS_ REFGUID guidKey,IUnknown *pUnknown) PURE;
    240     STDMETHOD_(HRESULT,UnlockStore)(THIS) PURE;
    241 
    242     /* IMFASFContentInfo methods */
    243     STDMETHOD_(HRESULT,GenerateHeader)(THIS_ IMFMediaBuffer *pIHeader,DWORD *pcbHeader) PURE;
    244     STDMETHOD_(HRESULT,GeneratePresentationDescriptor)(THIS_ IMFPresentationDescriptor **ppIPresentationDescriptor) PURE;
    245     STDMETHOD_(HRESULT,GetEncodingConfigurationPropertyStore)(THIS_ WORD wStreamNumber,IPropertyStore **ppIStore) PURE;
    246     STDMETHOD_(HRESULT,GetHeaderSize)(THIS_ IMFMediaBuffer *pIStartOfContent,QWORD *cbHeaderSize) PURE;
    247     STDMETHOD_(HRESULT,GetProfile)(THIS_ IMFASFProfile **ppIProfile) PURE;
    248     STDMETHOD_(HRESULT,ParseHeader)(THIS_ IMFMediaBuffer *pIHeaderBuffer,QWORD cbOffsetWithinHeader) PURE;
    249     STDMETHOD_(HRESULT,SetProfile)(THIS_ IMFASFProfile *pIProfile) PURE;
    250 
    251     END_INTERFACE
    252 };
    253 #ifdef COBJMACROS
    254 #define IMFASFContentInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    255 #define IMFASFContentInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
    256 #define IMFASFContentInfo_Release(This) (This)->lpVtbl->Release(This)
    257 #define IMFASFContentInfo_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
    258 #define IMFASFContentInfo_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
    259 #define IMFASFContentInfo_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
    260 #define IMFASFContentInfo_DeleteAllItems() (This)->lpVtbl->DeleteAllItems(This)
    261 #define IMFASFContentInfo_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
    262 #define IMFASFContentInfo_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
    263 #define IMFASFContentInfo_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
    264 #define IMFASFContentInfo_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
    265 #define IMFASFContentInfo_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
    266 #define IMFASFContentInfo_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
    267 #define IMFASFContentInfo_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
    268 #define IMFASFContentInfo_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
    269 #define IMFASFContentInfo_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
    270 #define IMFASFContentInfo_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
    271 #define IMFASFContentInfo_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
    272 #define IMFASFContentInfo_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
    273 #define IMFASFContentInfo_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
    274 #define IMFASFContentInfo_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
    275 #define IMFASFContentInfo_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
    276 #define IMFASFContentInfo_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
    277 #define IMFASFContentInfo_LockStore() (This)->lpVtbl->LockStore(This)
    278 #define IMFASFContentInfo_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
    279 #define IMFASFContentInfo_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
    280 #define IMFASFContentInfo_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
    281 #define IMFASFContentInfo_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
    282 #define IMFASFContentInfo_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
    283 #define IMFASFContentInfo_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
    284 #define IMFASFContentInfo_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
    285 #define IMFASFContentInfo_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
    286 #define IMFASFContentInfo_UnlockStore() (This)->lpVtbl->UnlockStore(This)
    287 #define IMFASFContentInfo_GenerateHeader(This,pIHeader,pcbHeader) (This)->lpVtbl->GenerateHeader(This,pIHeader,pcbHeader)
    288 #define IMFASFContentInfo_GeneratePresentationDescriptor(This,ppIPresentationDescriptor) (This)->lpVtbl->GeneratePresentationDescriptor(This,ppIPresentationDescriptor)
    289 #define IMFASFContentInfo_GetEncodingConfigurationPropertyStore(This,wStreamNumber,ppIStore) (This)->lpVtbl->GetEncodingConfigurationPropertyStore(This,wStreamNumber,ppIStore)
    290 #define IMFASFContentInfo_GetHeaderSize(This,pIStartOfContent,cbHeaderSize) (This)->lpVtbl->GetHeaderSize(This,pIStartOfContent,cbHeaderSize)
    291 #define IMFASFContentInfo_GetProfile(This,ppIProfile) (This)->lpVtbl->GetProfile(This,ppIProfile)
    292 #define IMFASFContentInfo_ParseHeader(This,pIHeaderBuffer,cbOffsetWithinHeader) (This)->lpVtbl->ParseHeader(This,pIHeaderBuffer,cbOffsetWithinHeader)
    293 #define IMFASFContentInfo_SetProfile(This,pIProfile) (This)->lpVtbl->SetProfile(This,pIProfile)
    294 #endif /*COBJMACROS*/
    295 
    296 #undef  INTERFACE
    297 #define INTERFACE IMFASFStreamConfig
    298 #ifdef __GNUC__
    299 #warning COM interfaces layout in this header has not been verified.
    300 #warning COM interfaces with incorrect layout may not work at all.
    301 __MINGW_BROKEN_INTERFACE(INTERFACE)
    302 #endif
    303 DECLARE_INTERFACE_(IMFASFStreamConfig,IMFAttributes)
    304 {
    305     BEGIN_INTERFACE
    306 
    307     /* IUnknown methods */
    308     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    309     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    310     STDMETHOD_(ULONG, Release)(THIS) PURE;
    311 
    312     /* IMFAttributes methods */
    313     STDMETHOD_(HRESULT,Compare)(THIS_ IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,BOOL *pbResult) PURE;
    314     STDMETHOD_(HRESULT,CompareItem)(THIS_ REFGUID guidKey,REFPROPVARIANT Value,BOOL *pbResult) PURE;
    315     STDMETHOD_(HRESULT,CopyAllItems)(THIS_ IMFAttributes *pDest) PURE;
    316     STDMETHOD_(HRESULT,DeleteAllItems)(THIS) PURE;
    317     STDMETHOD_(HRESULT,DeleteItem)(THIS_ REFGUID guidKey) PURE;
    318     STDMETHOD_(HRESULT,GetAllocatedBlob)(THIS_ REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) PURE;
    319     STDMETHOD_(HRESULT,GetAllocatedString)(THIS_ REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) PURE;
    320     STDMETHOD_(HRESULT,GetBlob)(THIS_ REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) PURE;
    321     STDMETHOD_(HRESULT,GetBlobSize)(THIS_ REFGUID guidKey,UINT32 *pcbBlobSize) PURE;
    322     STDMETHOD_(HRESULT,GetCount)(THIS_ UINT32 *pcItems) PURE;
    323     STDMETHOD_(HRESULT,GetDouble)(THIS_ REFGUID guidKey,double *pfValue) PURE;
    324     STDMETHOD_(HRESULT,GetGUID)(THIS_ REFGUID guidKey,GUID *pguidValue) PURE;
    325     STDMETHOD_(HRESULT,GetItem)(THIS_ REFGUID guidKey,PROPVARIANT *pValue) PURE;
    326     STDMETHOD_(HRESULT,GetItemByIndex)(THIS_ UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) PURE;
    327     STDMETHOD_(HRESULT,GetItemType)(THIS_ REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) PURE;
    328     STDMETHOD_(HRESULT,GetString)(THIS_ REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) PURE;
    329     STDMETHOD_(HRESULT,GetStringLength)(THIS_ REFGUID guidKey,UINT32 *pcchLength) PURE;
    330     STDMETHOD_(HRESULT,GetUINT32)(THIS_ REFGUID guidKey,UINT32 *punValue) PURE;
    331     STDMETHOD_(HRESULT,GetUINT64)(THIS_ REFGUID guidKey,UINT64 *punValue) PURE;
    332     STDMETHOD_(HRESULT,GetUnknown)(THIS_ REFGUID guidKey,REFIID riid,LPVOID *ppv) PURE;
    333     STDMETHOD_(HRESULT,LockStore)(THIS) PURE;
    334     STDMETHOD_(HRESULT,SetBlob)(THIS_ REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) PURE;
    335     STDMETHOD_(HRESULT,SetDouble)(THIS_ REFGUID guidKey,double fValue) PURE;
    336     STDMETHOD_(HRESULT,SetGUID)(THIS_ REFGUID guidKey,REFGUID guidValue) PURE;
    337     STDMETHOD_(HRESULT,SetItem)(THIS_ REFGUID guidKey,REFPROPVARIANT Value) PURE;
    338     STDMETHOD_(HRESULT,SetString)(THIS_ REFGUID guidKey,LPCWSTR wszValue) PURE;
    339     STDMETHOD_(HRESULT,SetUINT32)(THIS_ REFGUID guidKey,UINT32 unValue) PURE;
    340     STDMETHOD_(HRESULT,SetUINT64)(THIS_ REFGUID guidKey,UINT64 unValue) PURE;
    341     STDMETHOD_(HRESULT,SetUnknown)(THIS_ REFGUID guidKey,IUnknown *pUnknown) PURE;
    342     STDMETHOD_(HRESULT,UnlockStore)(THIS) PURE;
    343 
    344     /* IMFASFStreamConfig methods */
    345     STDMETHOD_(HRESULT,AddPayloadExtension)(THIS_ GUID guidExtensionSystemID,WORD cbExtensionDataSize,BYTE *pbExtensionSystemInfo,DWORD cbExtensionSystemInfo) PURE;
    346     STDMETHOD_(HRESULT,Clone)(THIS_ IMFASFStreamConfig **ppIStreamConfig) PURE;
    347     STDMETHOD_(HRESULT,GetMediaType)(THIS_ IMFMediaType **ppIMediaType) PURE;
    348     STDMETHOD_(HRESULT,GetPayloadExtension)(THIS_ WORD wPayloadExtensionNumber,GUID *pguidExtensionSystemID,WORD *pcbExtensionDataSize,BYTE *pbExtensionSystemInfo,DWORD *pcbExtensionSystemInfo) PURE;
    349     STDMETHOD_(HRESULT,GetPayloadExtensionCount)(THIS_ WORD *pcPayloadExtensions) PURE;
    350     STDMETHOD_(WORD,GetStreamNumber)(THIS) PURE;
    351     STDMETHOD_(HRESULT,GetStreamType)(THIS_ GUID *pguidStreamType) PURE;
    352     STDMETHOD_(HRESULT,RemoveAllPayloadExtensions)(THIS) PURE;
    353     STDMETHOD_(HRESULT,SetMediaType)(THIS_ IMFMediaType *pIMediaType) PURE;
    354     STDMETHOD_(HRESULT,SetStreamNumber)(THIS_ WORD wStreamNum) PURE;
    355 
    356     END_INTERFACE
    357 };
    358 #ifdef COBJMACROS
    359 #define IMFASFStreamConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    360 #define IMFASFStreamConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
    361 #define IMFASFStreamConfig_Release(This) (This)->lpVtbl->Release(This)
    362 #define IMFASFStreamConfig_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
    363 #define IMFASFStreamConfig_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
    364 #define IMFASFStreamConfig_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
    365 #define IMFASFStreamConfig_DeleteAllItems() (This)->lpVtbl->DeleteAllItems(This)
    366 #define IMFASFStreamConfig_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
    367 #define IMFASFStreamConfig_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
    368 #define IMFASFStreamConfig_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
    369 #define IMFASFStreamConfig_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
    370 #define IMFASFStreamConfig_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
    371 #define IMFASFStreamConfig_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
    372 #define IMFASFStreamConfig_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
    373 #define IMFASFStreamConfig_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
    374 #define IMFASFStreamConfig_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
    375 #define IMFASFStreamConfig_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
    376 #define IMFASFStreamConfig_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
    377 #define IMFASFStreamConfig_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
    378 #define IMFASFStreamConfig_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
    379 #define IMFASFStreamConfig_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
    380 #define IMFASFStreamConfig_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
    381 #define IMFASFStreamConfig_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
    382 #define IMFASFStreamConfig_LockStore() (This)->lpVtbl->LockStore(This)
    383 #define IMFASFStreamConfig_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
    384 #define IMFASFStreamConfig_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
    385 #define IMFASFStreamConfig_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
    386 #define IMFASFStreamConfig_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
    387 #define IMFASFStreamConfig_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
    388 #define IMFASFStreamConfig_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
    389 #define IMFASFStreamConfig_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
    390 #define IMFASFStreamConfig_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
    391 #define IMFASFStreamConfig_UnlockStore() (This)->lpVtbl->UnlockStore(This)
    392 #define IMFASFStreamConfig_AddPayloadExtension(This,guidExtensionSystemID,cbExtensionDataSize,pbExtensionSystemInfo,cbExtensionSystemInfo) (This)->lpVtbl->AddPayloadExtension(This,guidExtensionSystemID,cbExtensionDataSize,pbExtensionSystemInfo,cbExtensionSystemInfo)
    393 #define IMFASFStreamConfig_Clone(This,ppIStreamConfig) (This)->lpVtbl->Clone(This,ppIStreamConfig)
    394 #define IMFASFStreamConfig_GetMediaType(This,ppIMediaType) (This)->lpVtbl->GetMediaType(This,ppIMediaType)
    395 #define IMFASFStreamConfig_GetPayloadExtension(This,wPayloadExtensionNumber,pguidExtensionSystemID,pcbExtensionDataSize,pbExtensionSystemInfo,pcbExtensionSystemInfo) (This)->lpVtbl->GetPayloadExtension(This,wPayloadExtensionNumber,pguidExtensionSystemID,pcbExtensionDataSize,pbExtensionSystemInfo,pcbExtensionSystemInfo)
    396 #define IMFASFStreamConfig_GetPayloadExtensionCount(This,pcPayloadExtensions) (This)->lpVtbl->GetPayloadExtensionCount(This,pcPayloadExtensions)
    397 #define IMFASFStreamConfig_GetStreamNumber() (This)->lpVtbl->GetStreamNumber(This)
    398 #define IMFASFStreamConfig_GetStreamType(This,pguidStreamType) (This)->lpVtbl->GetStreamType(This,pguidStreamType)
    399 #define IMFASFStreamConfig_RemoveAllPayloadExtensions() (This)->lpVtbl->RemoveAllPayloadExtensions(This)
    400 #define IMFASFStreamConfig_SetMediaType(This,pIMediaType) (This)->lpVtbl->SetMediaType(This,pIMediaType)
    401 #define IMFASFStreamConfig_SetStreamNumber(This,wStreamNum) (This)->lpVtbl->SetStreamNumber(This,wStreamNum)
    402 #endif /*COBJMACROS*/
    403 
    404 #undef  INTERFACE
    405 #define INTERFACE IMFASFProfile
    406 #ifdef __GNUC__
    407 #warning COM interfaces layout in this header has not been verified.
    408 #warning COM interfaces with incorrect layout may not work at all.
    409 __MINGW_BROKEN_INTERFACE(INTERFACE)
    410 #endif
    411 DECLARE_INTERFACE_(IMFASFProfile,IMFAttributes)
    412 {
    413     BEGIN_INTERFACE
    414 
    415     /* IUnknown methods */
    416     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    417     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    418     STDMETHOD_(ULONG, Release)(THIS) PURE;
    419 
    420     /* IMFAttributes methods */
    421     STDMETHOD_(HRESULT,Compare)(THIS_ IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,BOOL *pbResult) PURE;
    422     STDMETHOD_(HRESULT,CompareItem)(THIS_ REFGUID guidKey,REFPROPVARIANT Value,BOOL *pbResult) PURE;
    423     STDMETHOD_(HRESULT,CopyAllItems)(THIS_ IMFAttributes *pDest) PURE;
    424     STDMETHOD_(HRESULT,DeleteAllItems)(THIS) PURE;
    425     STDMETHOD_(HRESULT,DeleteItem)(THIS_ REFGUID guidKey) PURE;
    426     STDMETHOD_(HRESULT,GetAllocatedBlob)(THIS_ REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) PURE;
    427     STDMETHOD_(HRESULT,GetAllocatedString)(THIS_ REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) PURE;
    428     STDMETHOD_(HRESULT,GetBlob)(THIS_ REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) PURE;
    429     STDMETHOD_(HRESULT,GetBlobSize)(THIS_ REFGUID guidKey,UINT32 *pcbBlobSize) PURE;
    430     STDMETHOD_(HRESULT,GetCount)(THIS_ UINT32 *pcItems) PURE;
    431     STDMETHOD_(HRESULT,GetDouble)(THIS_ REFGUID guidKey,double *pfValue) PURE;
    432     STDMETHOD_(HRESULT,GetGUID)(THIS_ REFGUID guidKey,GUID *pguidValue) PURE;
    433     STDMETHOD_(HRESULT,GetItem)(THIS_ REFGUID guidKey,PROPVARIANT *pValue) PURE;
    434     STDMETHOD_(HRESULT,GetItemByIndex)(THIS_ UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) PURE;
    435     STDMETHOD_(HRESULT,GetItemType)(THIS_ REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) PURE;
    436     STDMETHOD_(HRESULT,GetString)(THIS_ REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) PURE;
    437     STDMETHOD_(HRESULT,GetStringLength)(THIS_ REFGUID guidKey,UINT32 *pcchLength) PURE;
    438     STDMETHOD_(HRESULT,GetUINT32)(THIS_ REFGUID guidKey,UINT32 *punValue) PURE;
    439     STDMETHOD_(HRESULT,GetUINT64)(THIS_ REFGUID guidKey,UINT64 *punValue) PURE;
    440     STDMETHOD_(HRESULT,GetUnknown)(THIS_ REFGUID guidKey,REFIID riid,LPVOID *ppv) PURE;
    441     STDMETHOD_(HRESULT,LockStore)(THIS) PURE;
    442     STDMETHOD_(HRESULT,SetBlob)(THIS_ REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) PURE;
    443     STDMETHOD_(HRESULT,SetDouble)(THIS_ REFGUID guidKey,double fValue) PURE;
    444     STDMETHOD_(HRESULT,SetGUID)(THIS_ REFGUID guidKey,REFGUID guidValue) PURE;
    445     STDMETHOD_(HRESULT,SetItem)(THIS_ REFGUID guidKey,REFPROPVARIANT Value) PURE;
    446     STDMETHOD_(HRESULT,SetString)(THIS_ REFGUID guidKey,LPCWSTR wszValue) PURE;
    447     STDMETHOD_(HRESULT,SetUINT32)(THIS_ REFGUID guidKey,UINT32 unValue) PURE;
    448     STDMETHOD_(HRESULT,SetUINT64)(THIS_ REFGUID guidKey,UINT64 unValue) PURE;
    449     STDMETHOD_(HRESULT,SetUnknown)(THIS_ REFGUID guidKey,IUnknown *pUnknown) PURE;
    450     STDMETHOD_(HRESULT,UnlockStore)(THIS) PURE;
    451 
    452     /* IMFASFProfile methods */
    453     STDMETHOD_(HRESULT,AddMutualExclusion)(THIS_ IMFASFMutualExclusion *pIMutex) PURE;
    454     STDMETHOD_(HRESULT,AddStreamPrioritization)(THIS_ IMFASFStreamPrioritization *pIStreamPrioritization) PURE;
    455     STDMETHOD_(HRESULT,Clone)(THIS_ IMFASFProfile **ppIProfile) PURE;
    456     STDMETHOD_(HRESULT,CreateMutualExclusion)(THIS_ IMFASFMutualExclusion **ppIMutex) PURE;
    457     STDMETHOD_(HRESULT,CreateStream)(THIS_ IMFMediaType *pIMediaType,IMFASFStreamConfig **ppIStream) PURE;
    458     STDMETHOD_(HRESULT,CreateStreamPrioritization)(THIS_ IMFASFStreamPrioritization **ppIStreamPrioritization) PURE;
    459     STDMETHOD_(HRESULT,GetMutualExclusion)(THIS_ DWORD dwMutexIndex,IMFASFMutualExclusion **ppIMutex) PURE;
    460     STDMETHOD_(HRESULT,GetMutualExclusionCount)(THIS_ DWORD *pcMutexs) PURE;
    461     STDMETHOD_(HRESULT,GetStream)(THIS_ DWORD dwStreamIndex,WORD *pwStreamNumber,IMFASFStreamConfig **ppIStream) PURE;
    462     STDMETHOD_(HRESULT,GetStreamByNumber)(THIS_ WORD wStreamNumber,IMFASFStreamConfig **ppIStream) PURE;
    463     STDMETHOD_(HRESULT,GetStreamCount)(THIS_ DWORD *pcStreams) PURE;
    464     STDMETHOD_(HRESULT,GetStreamPrioritization)(THIS_ IMFASFStreamPrioritization **ppIStreamPrioritization) PURE;
    465     STDMETHOD_(HRESULT,RemoveMutualExclusion)(THIS_ DWORD dwMutexIndex) PURE;
    466     STDMETHOD_(HRESULT,RemoveStream)(THIS_ WORD wStreamNumber) PURE;
    467     STDMETHOD_(HRESULT,RemoveStreamPrioritization)(THIS) PURE;
    468     STDMETHOD_(HRESULT,SetStream)(THIS_ IMFASFStreamConfig *pIStream) PURE;
    469 
    470     END_INTERFACE
    471 };
    472 #ifdef COBJMACROS
    473 #define IMFASFProfile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    474 #define IMFASFProfile_AddRef(This) (This)->lpVtbl->AddRef(This)
    475 #define IMFASFProfile_Release(This) (This)->lpVtbl->Release(This)
    476 #define IMFASFProfile_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
    477 #define IMFASFProfile_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
    478 #define IMFASFProfile_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
    479 #define IMFASFProfile_DeleteAllItems() (This)->lpVtbl->DeleteAllItems(This)
    480 #define IMFASFProfile_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
    481 #define IMFASFProfile_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
    482 #define IMFASFProfile_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
    483 #define IMFASFProfile_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
    484 #define IMFASFProfile_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
    485 #define IMFASFProfile_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
    486 #define IMFASFProfile_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
    487 #define IMFASFProfile_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
    488 #define IMFASFProfile_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
    489 #define IMFASFProfile_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
    490 #define IMFASFProfile_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
    491 #define IMFASFProfile_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
    492 #define IMFASFProfile_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
    493 #define IMFASFProfile_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
    494 #define IMFASFProfile_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
    495 #define IMFASFProfile_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
    496 #define IMFASFProfile_LockStore() (This)->lpVtbl->LockStore(This)
    497 #define IMFASFProfile_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
    498 #define IMFASFProfile_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
    499 #define IMFASFProfile_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
    500 #define IMFASFProfile_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
    501 #define IMFASFProfile_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
    502 #define IMFASFProfile_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
    503 #define IMFASFProfile_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
    504 #define IMFASFProfile_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
    505 #define IMFASFProfile_UnlockStore() (This)->lpVtbl->UnlockStore(This)
    506 #define IMFASFProfile_AddMutualExclusion(This,pIMutex) (This)->lpVtbl->AddMutualExclusion(This,pIMutex)
    507 #define IMFASFProfile_AddStreamPrioritization(This,pIStreamPrioritization) (This)->lpVtbl->AddStreamPrioritization(This,pIStreamPrioritization)
    508 #define IMFASFProfile_Clone(This,ppIProfile) (This)->lpVtbl->Clone(This,ppIProfile)
    509 #define IMFASFProfile_CreateMutualExclusion(This,ppIMutex) (This)->lpVtbl->CreateMutualExclusion(This,ppIMutex)
    510 #define IMFASFProfile_CreateStream(This,pIMediaType,ppIStream) (This)->lpVtbl->CreateStream(This,pIMediaType,ppIStream)
    511 #define IMFASFProfile_CreateStreamPrioritization(This,ppIStreamPrioritization) (This)->lpVtbl->CreateStreamPrioritization(This,ppIStreamPrioritization)
    512 #define IMFASFProfile_GetMutualExclusion(This,dwMutexIndex,ppIMutex) (This)->lpVtbl->GetMutualExclusion(This,dwMutexIndex,ppIMutex)
    513 #define IMFASFProfile_GetMutualExclusionCount(This,pcMutexs) (This)->lpVtbl->GetMutualExclusionCount(This,pcMutexs)
    514 #define IMFASFProfile_GetStream(This,dwStreamIndex,pwStreamNumber,ppIStream) (This)->lpVtbl->GetStream(This,dwStreamIndex,pwStreamNumber,ppIStream)
    515 #define IMFASFProfile_GetStreamByNumber(This,wStreamNumber,ppIStream) (This)->lpVtbl->GetStreamByNumber(This,wStreamNumber,ppIStream)
    516 #define IMFASFProfile_GetStreamCount(This,pcStreams) (This)->lpVtbl->GetStreamCount(This,pcStreams)
    517 #define IMFASFProfile_GetStreamPrioritization(This,ppIStreamPrioritization) (This)->lpVtbl->GetStreamPrioritization(This,ppIStreamPrioritization)
    518 #define IMFASFProfile_RemoveMutualExclusion(This,dwMutexIndex) (This)->lpVtbl->RemoveMutualExclusion(This,dwMutexIndex)
    519 #define IMFASFProfile_RemoveStream(This,wStreamNumber) (This)->lpVtbl->RemoveStream(This,wStreamNumber)
    520 #define IMFASFProfile_RemoveStreamPrioritization() (This)->lpVtbl->RemoveStreamPrioritization(This)
    521 #define IMFASFProfile_SetStream(This,pIStream) (This)->lpVtbl->SetStream(This,pIStream)
    522 #endif /*COBJMACROS*/
    523 
    524 #undef  INTERFACE
    525 #define INTERFACE IMFASFIndexer
    526 #ifdef __GNUC__
    527 #warning COM interfaces layout in this header has not been verified.
    528 #warning COM interfaces with incorrect layout may not work at all.
    529 __MINGW_BROKEN_INTERFACE(INTERFACE)
    530 #endif
    531 DECLARE_INTERFACE_(IMFASFIndexer,IUnknown)
    532 {
    533     BEGIN_INTERFACE
    534 
    535     /* IUnknown methods */
    536     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    537     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    538     STDMETHOD_(ULONG, Release)(THIS) PURE;
    539 
    540     /* IMFASFIndexer methods */
    541     STDMETHOD_(HRESULT,CommitIndex)(THIS_ IMFASFContentInfo *pIContentInfo) PURE;
    542     STDMETHOD_(HRESULT,GenerateIndexEntries)(THIS_ IMFSample *pIASFPacketSample) PURE;
    543     STDMETHOD_(HRESULT,GetCompletedIndex)(THIS_ IMFMediaBuffer *pIIndexBuffer,QWORD cbOffsetWithinIndex) PURE;
    544     STDMETHOD_(HRESULT,GetFlags)(THIS_ DWORD *pdwFlags) PURE;
    545     STDMETHOD_(HRESULT,GetIndexByteStreamCount)(THIS_ DWORD *pcByteStreams) PURE;
    546     STDMETHOD_(HRESULT,GetIndexPosition)(THIS_ IMFASFContentInfo *pIContentInfo,QWORD *pcbIndexOffset) PURE;
    547     STDMETHOD_(HRESULT,GetIndexStatus)(THIS_ ASF_INDEX_IDENTIFIER *pIndexIdentifier,WINBOOL *pfIsIndexed,BYTE *pbIndexDescriptor,DWORD *pcbIndexDescriptor) PURE;
    548     STDMETHOD_(HRESULT,GetIndexWriteSpace)(THIS_ QWORD *pcbIndexWriteSpace) PURE;
    549     STDMETHOD_(HRESULT,GetSeekPositionForValue)(THIS_ const PROPVARIANT *pvarValue,ASF_INDEX_IDENTIFIER *pIndexIdentifier,QWORD *pcbOffsetWithinData,MFTIME *phnsApproxTime,DWORD *pdwPayloadNumberOfStreamWithinPacket) PURE;
    550     STDMETHOD_(HRESULT,Initialize)(THIS_ IMFASFContentInfo *pIContentInfo) PURE;
    551     STDMETHOD_(HRESULT,SetFlags)(THIS_ DWORD dwFlags) PURE;
    552     STDMETHOD_(HRESULT,SetIndexByteStreams)(THIS_ IMFByteStream **ppIByteStreams,DWORD cByteStreams) PURE;
    553     STDMETHOD_(HRESULT,SetIndexStatus)(THIS_ BYTE *pIndexDescriptor,DWORD cbIndexDescriptor,WINBOOL fGenerateIndex) PURE;
    554 
    555     END_INTERFACE
    556 };
    557 #ifdef COBJMACROS
    558 #define IMFASFIndexer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    559 #define IMFASFIndexer_AddRef(This) (This)->lpVtbl->AddRef(This)
    560 #define IMFASFIndexer_Release(This) (This)->lpVtbl->Release(This)
    561 #define IMFASFIndexer_CommitIndex(This,pIContentInfo) (This)->lpVtbl->CommitIndex(This,pIContentInfo)
    562 #define IMFASFIndexer_GenerateIndexEntries(This,pIASFPacketSample) (This)->lpVtbl->GenerateIndexEntries(This,pIASFPacketSample)
    563 #define IMFASFIndexer_GetCompletedIndex(This,pIIndexBuffer,cbOffsetWithinIndex) (This)->lpVtbl->GetCompletedIndex(This,pIIndexBuffer,cbOffsetWithinIndex)
    564 #define IMFASFIndexer_GetFlags(This,pdwFlags) (This)->lpVtbl->GetFlags(This,pdwFlags)
    565 #define IMFASFIndexer_GetIndexByteStreamCount(This,pcByteStreams) (This)->lpVtbl->GetIndexByteStreamCount(This,pcByteStreams)
    566 #define IMFASFIndexer_GetIndexPosition(This,pIContentInfo,pcbIndexOffset) (This)->lpVtbl->GetIndexPosition(This,pIContentInfo,pcbIndexOffset)
    567 #define IMFASFIndexer_GetIndexStatus(This,pIndexIdentifier,pfIsIndexed,pbIndexDescriptor,pcbIndexDescriptor) (This)->lpVtbl->GetIndexStatus(This,pIndexIdentifier,pfIsIndexed,pbIndexDescriptor,pcbIndexDescriptor)
    568 #define IMFASFIndexer_GetIndexWriteSpace(This,pcbIndexWriteSpace) (This)->lpVtbl->GetIndexWriteSpace(This,pcbIndexWriteSpace)
    569 #define IMFASFIndexer_GetSeekPositionForValue(This,pvarValue,pIndexIdentifier,pcbOffsetWithinData,phnsApproxTime,pdwPayloadNumberOfStreamWithinPacket) (This)->lpVtbl->GetSeekPositionForValue(This,pvarValue,pIndexIdentifier,pcbOffsetWithinData,phnsApproxTime,pdwPayloadNumberOfStreamWithinPacket)
    570 #define IMFASFIndexer_Initialize(This,pIContentInfo) (This)->lpVtbl->Initialize(This,pIContentInfo)
    571 #define IMFASFIndexer_SetFlags(This,dwFlags) (This)->lpVtbl->SetFlags(This,dwFlags)
    572 #define IMFASFIndexer_SetIndexByteStreams(This,ppIByteStreams,cByteStreams) (This)->lpVtbl->SetIndexByteStreams(This,ppIByteStreams,cByteStreams)
    573 #define IMFASFIndexer_SetIndexStatus(This,pIndexDescriptor,cbIndexDescriptor,fGenerateIndex) (This)->lpVtbl->SetIndexStatus(This,pIndexDescriptor,cbIndexDescriptor,fGenerateIndex)
    574 #endif /*COBJMACROS*/
    575 
    576 #undef  INTERFACE
    577 #define INTERFACE IMFASFMultiplexer
    578 #ifdef __GNUC__
    579 #warning COM interfaces layout in this header has not been verified.
    580 #warning COM interfaces with incorrect layout may not work at all.
    581 __MINGW_BROKEN_INTERFACE(INTERFACE)
    582 #endif
    583 DECLARE_INTERFACE_(IMFASFMultiplexer,IUnknown)
    584 {
    585     BEGIN_INTERFACE
    586 
    587     /* IUnknown methods */
    588     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    589     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    590     STDMETHOD_(ULONG, Release)(THIS) PURE;
    591 
    592     /* IMFASFMultiplexer methods */
    593     STDMETHOD_(HRESULT,End)(THIS_ IMFASFContentInfo *pIContentInfo) PURE;
    594     STDMETHOD_(HRESULT,Flush)(THIS) PURE;
    595     STDMETHOD_(HRESULT,GetFlags)(THIS_ DWORD *pdwFlags) PURE;
    596     STDMETHOD_(HRESULT,GetNextPacket)(THIS_ DWORD *pdwStatusFlags,IMFSample **ppIPacket) PURE;
    597     STDMETHOD_(HRESULT,GetStatistics)(THIS_ WORD wStreamNumber,ASF_MUX_STATISTICS *pMuxStats) PURE;
    598     STDMETHOD_(HRESULT,Initialize)(THIS_ IMFASFContentInfo *pIContentInfo) PURE;
    599     STDMETHOD_(HRESULT,ProcessSample)(THIS_ WORD wStreamNumber,IMFSample *pISample,LONGLONG hnsTimestampAdjust) PURE;
    600     STDMETHOD_(HRESULT,SetFlags)(THIS_ DWORD dwFlags) PURE;
    601     STDMETHOD_(HRESULT,SetSyncTolerance)(THIS_ DWORD msSyncTolerance) PURE;
    602 
    603     END_INTERFACE
    604 };
    605 #ifdef COBJMACROS
    606 #define IMFASFMultiplexer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    607 #define IMFASFMultiplexer_AddRef(This) (This)->lpVtbl->AddRef(This)
    608 #define IMFASFMultiplexer_Release(This) (This)->lpVtbl->Release(This)
    609 #define IMFASFMultiplexer_End(This,pIContentInfo) (This)->lpVtbl->End(This,pIContentInfo)
    610 #define IMFASFMultiplexer_Flush() (This)->lpVtbl->Flush(This)
    611 #define IMFASFMultiplexer_GetFlags(This,pdwFlags) (This)->lpVtbl->GetFlags(This,pdwFlags)
    612 #define IMFASFMultiplexer_GetNextPacket(This,pdwStatusFlags,ppIPacket) (This)->lpVtbl->GetNextPacket(This,pdwStatusFlags,ppIPacket)
    613 #define IMFASFMultiplexer_GetStatistics(This,wStreamNumber,pMuxStats) (This)->lpVtbl->GetStatistics(This,wStreamNumber,pMuxStats)
    614 #define IMFASFMultiplexer_Initialize(This,pIContentInfo) (This)->lpVtbl->Initialize(This,pIContentInfo)
    615 #define IMFASFMultiplexer_ProcessSample(This,wStreamNumber,pISample,hnsTimestampAdjust) (This)->lpVtbl->ProcessSample(This,wStreamNumber,pISample,hnsTimestampAdjust)
    616 #define IMFASFMultiplexer_SetFlags(This,dwFlags) (This)->lpVtbl->SetFlags(This,dwFlags)
    617 #define IMFASFMultiplexer_SetSyncTolerance(This,msSyncTolerance) (This)->lpVtbl->SetSyncTolerance(This,msSyncTolerance)
    618 #endif /*COBJMACROS*/
    619 
    620 #ifdef __cplusplus
    621 extern "C" {
    622 #endif
    623 
    624 HRESULT WINAPI MFCreateASFSplitter(IMFASFSplitter **ppISplitter);
    625 HRESULT WINAPI MFCreateAttributes(IMFAttributes **ppMFAttributes,UINT32 cInitialSize);
    626 HRESULT WINAPI MFCreateWMAEncoderActivate(IMFMediaType *pMediaType,IPropertyStore *pEncodingConfigurationProperties,IMFActivate **ppActivate);
    627 HRESULT WINAPI MFCreateWMVEncoderActivate(IMFMediaType *pMediaType,IPropertyStore *pEncodingConfigurationProperties,IMFActivate **ppActivate);
    628 
    629 #ifdef __cplusplus
    630 }
    631 #endif
    632 
    633 #endif /* (_WIN32_WINNT >= 0x0600) */
    634 #endif /*_INC_WMCONTAINER*/
    635