master
   1/*** Autogenerated by WIDL 10.4 from include/mfreadwrite.idl - Do not edit ***/
   2
   3#ifdef _WIN32
   4#ifndef __REQUIRED_RPCNDR_H_VERSION__
   5#define __REQUIRED_RPCNDR_H_VERSION__ 475
   6#endif
   7#include <rpc.h>
   8#include <rpcndr.h>
   9#endif
  10
  11#ifndef COM_NO_WINDOWS_H
  12#include <windows.h>
  13#include <ole2.h>
  14#endif
  15
  16#ifndef __mfreadwrite_h__
  17#define __mfreadwrite_h__
  18
  19/* Forward declarations */
  20
  21#ifndef __IMFSourceReaderCallback_FWD_DEFINED__
  22#define __IMFSourceReaderCallback_FWD_DEFINED__
  23typedef interface IMFSourceReaderCallback IMFSourceReaderCallback;
  24#ifdef __cplusplus
  25interface IMFSourceReaderCallback;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IMFSourceReaderCallback2_FWD_DEFINED__
  30#define __IMFSourceReaderCallback2_FWD_DEFINED__
  31typedef interface IMFSourceReaderCallback2 IMFSourceReaderCallback2;
  32#ifdef __cplusplus
  33interface IMFSourceReaderCallback2;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IMFSourceReader_FWD_DEFINED__
  38#define __IMFSourceReader_FWD_DEFINED__
  39typedef interface IMFSourceReader IMFSourceReader;
  40#ifdef __cplusplus
  41interface IMFSourceReader;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IMFSourceReaderEx_FWD_DEFINED__
  46#define __IMFSourceReaderEx_FWD_DEFINED__
  47typedef interface IMFSourceReaderEx IMFSourceReaderEx;
  48#ifdef __cplusplus
  49interface IMFSourceReaderEx;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IMFSinkWriter_FWD_DEFINED__
  54#define __IMFSinkWriter_FWD_DEFINED__
  55typedef interface IMFSinkWriter IMFSinkWriter;
  56#ifdef __cplusplus
  57interface IMFSinkWriter;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IMFSinkWriterEx_FWD_DEFINED__
  62#define __IMFSinkWriterEx_FWD_DEFINED__
  63typedef interface IMFSinkWriterEx IMFSinkWriterEx;
  64#ifdef __cplusplus
  65interface IMFSinkWriterEx;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IMFSinkWriterEncoderConfig_FWD_DEFINED__
  70#define __IMFSinkWriterEncoderConfig_FWD_DEFINED__
  71typedef interface IMFSinkWriterEncoderConfig IMFSinkWriterEncoderConfig;
  72#ifdef __cplusplus
  73interface IMFSinkWriterEncoderConfig;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IMFSinkWriterCallback_FWD_DEFINED__
  78#define __IMFSinkWriterCallback_FWD_DEFINED__
  79typedef interface IMFSinkWriterCallback IMFSinkWriterCallback;
  80#ifdef __cplusplus
  81interface IMFSinkWriterCallback;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IMFSinkWriterCallback2_FWD_DEFINED__
  86#define __IMFSinkWriterCallback2_FWD_DEFINED__
  87typedef interface IMFSinkWriterCallback2 IMFSinkWriterCallback2;
  88#ifdef __cplusplus
  89interface IMFSinkWriterCallback2;
  90#endif /* __cplusplus */
  91#endif
  92
  93#ifndef __IMFReadWriteClassFactory_FWD_DEFINED__
  94#define __IMFReadWriteClassFactory_FWD_DEFINED__
  95typedef interface IMFReadWriteClassFactory IMFReadWriteClassFactory;
  96#ifdef __cplusplus
  97interface IMFReadWriteClassFactory;
  98#endif /* __cplusplus */
  99#endif
 100
 101/* Headers for imported files */
 102
 103#include <mfobjects.h>
 104#include <mftransform.h>
 105
 106#ifdef __cplusplus
 107extern "C" {
 108#endif
 109
 110typedef enum MF_SOURCE_READER_CONTROL_FLAG {
 111    MF_SOURCE_READER_CONTROLF_DRAIN = 0x1
 112} MF_SOURCE_READER_CONTROL_FLAG;
 113DEFINE_ENUM_FLAG_OPERATORS(MF_SOURCE_READER_CONTROL_FLAG)
 114enum {
 115    MF_SOURCE_READER_INVALID_STREAM_INDEX = 0xffffffff,
 116    MF_SOURCE_READER_ALL_STREAMS = 0xfffffffe,
 117    MF_SOURCE_READER_ANY_STREAM = 0xfffffffe,
 118    MF_SOURCE_READER_FIRST_AUDIO_STREAM = 0xfffffffd,
 119    MF_SOURCE_READER_FIRST_VIDEO_STREAM = 0xfffffffc,
 120    MF_SOURCE_READER_MEDIASOURCE = 0xffffffff,
 121    MF_SOURCE_READER_CURRENT_TYPE_INDEX = 0xffffffff
 122};
 123typedef enum MF_SOURCE_READER_FLAG {
 124    MF_SOURCE_READERF_ERROR = 0x1,
 125    MF_SOURCE_READERF_ENDOFSTREAM = 0x2,
 126    MF_SOURCE_READERF_NEWSTREAM = 0x4,
 127    MF_SOURCE_READERF_NATIVEMEDIATYPECHANGED = 0x10,
 128    MF_SOURCE_READERF_CURRENTMEDIATYPECHANGED = 0x20,
 129    MF_SOURCE_READERF_STREAMTICK = 0x100,
 130    MF_SOURCE_READERF_ALLEFFECTSREMOVED = 0x200
 131} MF_SOURCE_READER_FLAG;
 132DEFINE_ENUM_FLAG_OPERATORS(MF_SOURCE_READER_FLAG)
 133enum {
 134    MF_SINK_WRITER_INVALID_STREAM_INDEX = 0xffffffff,
 135    MF_SINK_WRITER_ALL_STREAMS = 0xfffffffe,
 136    MF_SINK_WRITER_MEDIASINK = 0xffffffff
 137};
 138typedef struct _MF_SINK_WRITER_STATISTICS {
 139    DWORD cb;
 140    LONGLONG llLastTimestampReceived;
 141    LONGLONG llLastTimestampEncoded;
 142    LONGLONG llLastTimestampProcessed;
 143    LONGLONG llLastStreamTickReceived;
 144    LONGLONG llLastSinkSampleRequest;
 145    QWORD qwNumSamplesReceived;
 146    QWORD qwNumSamplesEncoded;
 147    QWORD qwNumSamplesProcessed;
 148    QWORD qwNumStreamTicksReceived;
 149    DWORD dwByteCountQueued;
 150    QWORD qwByteCountProcessed;
 151    DWORD dwNumOutstandingSinkSampleRequests;
 152    DWORD dwAverageSampleRateReceived;
 153    DWORD dwAverageSampleRateEncoded;
 154    DWORD dwAverageSampleRateProcessed;
 155} MF_SINK_WRITER_STATISTICS;
 156EXTERN_GUID(CLSID_MFReadWriteClassFactory,           0x48e2ed0f, 0x98c2, 0x4a37, 0xbe, 0xd5, 0x16, 0x63, 0x12, 0xdd, 0xd8, 0x3f);
 157EXTERN_GUID(CLSID_MFSourceReader,                    0x1777133c, 0x0881, 0x411b, 0xa5, 0x77, 0xad, 0x54, 0x5f, 0x07, 0x14, 0xc4);
 158EXTERN_GUID(CLSID_MFSinkWriter,                      0xa3bbfb17, 0x8273, 0x4e52, 0x9e, 0x0e, 0x97, 0x39, 0xdc, 0x88, 0x79, 0x90);
 159EXTERN_GUID(MF_MEDIASINK_AUTOFINALIZE_SUPPORTED,     0x48c131be, 0x135a, 0x41cb, 0x82, 0x90, 0x03, 0x65, 0x25, 0x09, 0xc9, 0x99);
 160EXTERN_GUID(MF_MEDIASINK_ENABLE_AUTOFINALIZE,        0x34014265, 0xcb7e, 0x4cde, 0xac, 0x7c, 0xef, 0xfd, 0x3b, 0x3c, 0x25, 0x30);
 161EXTERN_GUID(MF_SINK_WRITER_ASYNC_CALLBACK,           0x48cb183e, 0x7b0b, 0x46f4, 0x82, 0x2e, 0x5e, 0x1d, 0x2d, 0xda, 0x43, 0x54);
 162EXTERN_GUID(MF_SINK_WRITER_DISABLE_THROTTLING,       0x08b845d8, 0x2b74, 0x4afe, 0x9d, 0x53, 0xbe, 0x16, 0xd2, 0xd5, 0xae, 0x4f);
 163EXTERN_GUID(MF_SINK_WRITER_D3D_MANAGER,              0xec822da2, 0xe1e9, 0x4b29, 0xa0, 0xd8, 0x56, 0x3c, 0x71, 0x9f, 0x52, 0x69);
 164EXTERN_GUID(MF_SINK_WRITER_ENCODER_CONFIG,           0xad91cd04, 0xa7cc, 0x4ac7, 0x99, 0xb6, 0xa5, 0x7b, 0x9a, 0x4a, 0x7c, 0x70);
 165EXTERN_GUID(MF_READWRITE_DISABLE_CONVERTERS,         0x98d5b065, 0x1374, 0x4847, 0x8d, 0x5d, 0x31, 0x52, 0x0f, 0xee, 0x71, 0x56);
 166EXTERN_GUID(MF_READWRITE_ENABLE_AUTOFINALIZE,        0xdd7ca129, 0x8cd1, 0x4dc5, 0x9d, 0xde, 0xce, 0x16, 0x86, 0x75, 0xde, 0x61);
 167EXTERN_GUID(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, 0xa634a91c, 0x822b, 0x41b9, 0xa4, 0x94, 0x4d, 0xe4, 0x64, 0x36, 0x12, 0xb0);
 168EXTERN_GUID(MF_READWRITE_MMCSS_CLASS,                0x39384300, 0xd0eb, 0x40b1, 0x87, 0xa0, 0x33, 0x18, 0x87, 0x1b, 0x5a, 0x53);
 169EXTERN_GUID(MF_READWRITE_MMCSS_PRIORITY,             0x43ad19ce, 0xf33f, 0x4ba9, 0xa5, 0x80, 0xe4, 0xcd, 0x12, 0xf2, 0xd1, 0x44);
 170EXTERN_GUID(MF_READWRITE_MMCSS_CLASS_AUDIO,          0x430847da, 0x0890, 0x4b0e, 0x93, 0x8c, 0x05, 0x43, 0x32, 0xc5, 0x47, 0xe1);
 171EXTERN_GUID(MF_READWRITE_MMCSS_PRIORITY_AUDIO,       0x273db885, 0x2de2, 0x4db2, 0xa6, 0xa7, 0xfd, 0xb6, 0x6f, 0xb4, 0x0b, 0x61);
 172EXTERN_GUID(MF_READWRITE_D3D_OPTIONAL,               0x216479d9, 0x3071, 0x42ca, 0xbb, 0x6c, 0x4c, 0x22, 0x10, 0x2e, 0x1d, 0x18);
 173EXTERN_GUID(MF_SOURCE_READER_ASYNC_CALLBACK,                     0x1e3dbeac, 0xbb43, 0x4c35, 0xb5, 0x07, 0xcd, 0x64, 0x44, 0x64, 0xc9, 0x65);
 174EXTERN_GUID(MF_SOURCE_READER_D3D_MANAGER,                        0xec822da2, 0xe1e9, 0x4b29, 0xa0, 0xd8, 0x56, 0x3c, 0x71, 0x9f, 0x52, 0x69);
 175EXTERN_GUID(MF_SOURCE_READER_D3D11_BIND_FLAGS,                   0x33f3197b, 0xf73a, 0x4e14, 0x8d, 0x85, 0x0e, 0x4c, 0x43, 0x68, 0x78, 0x8d);
 176EXTERN_GUID(MF_SOURCE_READER_DISABLE_CAMERA_PLUGINS,             0x9d3365dd, 0x058f, 0x4cfb, 0x9f, 0x97, 0xb3, 0x14, 0xcc, 0x99, 0xc8, 0xad);
 177EXTERN_GUID(MF_SOURCE_READER_DISABLE_DXVA,                       0xaa456cfd, 0x3943, 0x4a1e, 0xa7, 0x7d, 0x18, 0x38, 0xc0, 0xea, 0x2e, 0x35);
 178EXTERN_GUID(MF_SOURCE_READER_DISCONNECT_MEDIASOURCE_ON_SHUTDOWN, 0x56b67165, 0x219e, 0x456d, 0xa2, 0x2e, 0x2d, 0x30, 0x04, 0xc7, 0xfe, 0x56);
 179EXTERN_GUID(MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING,   0x0f81da2c, 0xb537, 0x4672, 0xa8, 0xb2, 0xa6, 0x81, 0xb1, 0x73, 0x07, 0xa3);
 180EXTERN_GUID(MF_SOURCE_READER_ENABLE_TRANSCODE_ONLY_TRANSFORMS,   0xdfd4f008, 0xb5fd, 0x4e78, 0xae, 0x44, 0x62, 0xa1, 0xe6, 0x7b, 0xbe, 0x27);
 181EXTERN_GUID(MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING,            0xfb394f3d, 0xccf1, 0x42ee, 0xbb, 0xb3, 0xf9, 0xb8, 0x45, 0xd5, 0x68, 0x1d);
 182EXTERN_GUID(MF_SOURCE_READER_MEDIASOURCE_CHARACTERISTICS,        0x6d23f5c8, 0xc5d7, 0x4a9b, 0x99, 0x71, 0x5d, 0x11, 0xf8, 0xbc, 0xa8, 0x80);
 183EXTERN_GUID(MF_SOURCE_READER_MEDIASOURCE_CONFIG,                 0x9085abeb, 0x0354, 0x48f9, 0xab, 0xb5, 0x20, 0x0d, 0xf8, 0x38, 0xc6, 0x8e);
 184/*****************************************************************************
 185 * IMFSourceReaderCallback interface
 186 */
 187#ifndef __IMFSourceReaderCallback_INTERFACE_DEFINED__
 188#define __IMFSourceReaderCallback_INTERFACE_DEFINED__
 189
 190DEFINE_GUID(IID_IMFSourceReaderCallback, 0xdeec8d99, 0xfa1d, 0x4d82, 0x84,0xc2, 0x2c,0x89,0x69,0x94,0x48,0x67);
 191#if defined(__cplusplus) && !defined(CINTERFACE)
 192MIDL_INTERFACE("deec8d99-fa1d-4d82-84c2-2c8969944867")
 193IMFSourceReaderCallback : public IUnknown
 194{
 195    virtual HRESULT STDMETHODCALLTYPE OnReadSample(
 196        HRESULT hr,
 197        DWORD stream_index,
 198        DWORD stream_flags,
 199        LONGLONG timestamp,
 200        IMFSample *sample) = 0;
 201
 202    virtual HRESULT STDMETHODCALLTYPE OnFlush(
 203        DWORD stream_index) = 0;
 204
 205    virtual HRESULT STDMETHODCALLTYPE OnEvent(
 206        DWORD stream_index,
 207        IMFMediaEvent *event) = 0;
 208
 209};
 210#ifdef __CRT_UUID_DECL
 211__CRT_UUID_DECL(IMFSourceReaderCallback, 0xdeec8d99, 0xfa1d, 0x4d82, 0x84,0xc2, 0x2c,0x89,0x69,0x94,0x48,0x67)
 212#endif
 213#else
 214typedef struct IMFSourceReaderCallbackVtbl {
 215    BEGIN_INTERFACE
 216
 217    /*** IUnknown methods ***/
 218    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 219        IMFSourceReaderCallback *This,
 220        REFIID riid,
 221        void **ppvObject);
 222
 223    ULONG (STDMETHODCALLTYPE *AddRef)(
 224        IMFSourceReaderCallback *This);
 225
 226    ULONG (STDMETHODCALLTYPE *Release)(
 227        IMFSourceReaderCallback *This);
 228
 229    /*** IMFSourceReaderCallback methods ***/
 230    HRESULT (STDMETHODCALLTYPE *OnReadSample)(
 231        IMFSourceReaderCallback *This,
 232        HRESULT hr,
 233        DWORD stream_index,
 234        DWORD stream_flags,
 235        LONGLONG timestamp,
 236        IMFSample *sample);
 237
 238    HRESULT (STDMETHODCALLTYPE *OnFlush)(
 239        IMFSourceReaderCallback *This,
 240        DWORD stream_index);
 241
 242    HRESULT (STDMETHODCALLTYPE *OnEvent)(
 243        IMFSourceReaderCallback *This,
 244        DWORD stream_index,
 245        IMFMediaEvent *event);
 246
 247    END_INTERFACE
 248} IMFSourceReaderCallbackVtbl;
 249
 250interface IMFSourceReaderCallback {
 251    CONST_VTBL IMFSourceReaderCallbackVtbl* lpVtbl;
 252};
 253
 254#ifdef COBJMACROS
 255#ifndef WIDL_C_INLINE_WRAPPERS
 256/*** IUnknown methods ***/
 257#define IMFSourceReaderCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 258#define IMFSourceReaderCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
 259#define IMFSourceReaderCallback_Release(This) (This)->lpVtbl->Release(This)
 260/*** IMFSourceReaderCallback methods ***/
 261#define IMFSourceReaderCallback_OnReadSample(This,hr,stream_index,stream_flags,timestamp,sample) (This)->lpVtbl->OnReadSample(This,hr,stream_index,stream_flags,timestamp,sample)
 262#define IMFSourceReaderCallback_OnFlush(This,stream_index) (This)->lpVtbl->OnFlush(This,stream_index)
 263#define IMFSourceReaderCallback_OnEvent(This,stream_index,event) (This)->lpVtbl->OnEvent(This,stream_index,event)
 264#else
 265/*** IUnknown methods ***/
 266static inline HRESULT IMFSourceReaderCallback_QueryInterface(IMFSourceReaderCallback* This,REFIID riid,void **ppvObject) {
 267    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 268}
 269static inline ULONG IMFSourceReaderCallback_AddRef(IMFSourceReaderCallback* This) {
 270    return This->lpVtbl->AddRef(This);
 271}
 272static inline ULONG IMFSourceReaderCallback_Release(IMFSourceReaderCallback* This) {
 273    return This->lpVtbl->Release(This);
 274}
 275/*** IMFSourceReaderCallback methods ***/
 276static inline HRESULT IMFSourceReaderCallback_OnReadSample(IMFSourceReaderCallback* This,HRESULT hr,DWORD stream_index,DWORD stream_flags,LONGLONG timestamp,IMFSample *sample) {
 277    return This->lpVtbl->OnReadSample(This,hr,stream_index,stream_flags,timestamp,sample);
 278}
 279static inline HRESULT IMFSourceReaderCallback_OnFlush(IMFSourceReaderCallback* This,DWORD stream_index) {
 280    return This->lpVtbl->OnFlush(This,stream_index);
 281}
 282static inline HRESULT IMFSourceReaderCallback_OnEvent(IMFSourceReaderCallback* This,DWORD stream_index,IMFMediaEvent *event) {
 283    return This->lpVtbl->OnEvent(This,stream_index,event);
 284}
 285#endif
 286#endif
 287
 288#endif
 289
 290
 291#endif  /* __IMFSourceReaderCallback_INTERFACE_DEFINED__ */
 292
 293/*****************************************************************************
 294 * IMFSourceReaderCallback2 interface
 295 */
 296#ifndef __IMFSourceReaderCallback2_INTERFACE_DEFINED__
 297#define __IMFSourceReaderCallback2_INTERFACE_DEFINED__
 298
 299DEFINE_GUID(IID_IMFSourceReaderCallback2, 0xcf839fe6, 0x8c2a, 0x4dd2, 0xb6,0xea, 0xc2,0x2d,0x69,0x61,0xaf,0x05);
 300#if defined(__cplusplus) && !defined(CINTERFACE)
 301MIDL_INTERFACE("cf839fe6-8c2a-4dd2-b6ea-c22d6961af05")
 302IMFSourceReaderCallback2 : public IMFSourceReaderCallback
 303{
 304    virtual HRESULT STDMETHODCALLTYPE OnTransformChange(
 305        ) = 0;
 306
 307    virtual HRESULT STDMETHODCALLTYPE OnStreamError(
 308        DWORD stream_index,
 309        HRESULT status) = 0;
 310
 311};
 312#ifdef __CRT_UUID_DECL
 313__CRT_UUID_DECL(IMFSourceReaderCallback2, 0xcf839fe6, 0x8c2a, 0x4dd2, 0xb6,0xea, 0xc2,0x2d,0x69,0x61,0xaf,0x05)
 314#endif
 315#else
 316typedef struct IMFSourceReaderCallback2Vtbl {
 317    BEGIN_INTERFACE
 318
 319    /*** IUnknown methods ***/
 320    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 321        IMFSourceReaderCallback2 *This,
 322        REFIID riid,
 323        void **ppvObject);
 324
 325    ULONG (STDMETHODCALLTYPE *AddRef)(
 326        IMFSourceReaderCallback2 *This);
 327
 328    ULONG (STDMETHODCALLTYPE *Release)(
 329        IMFSourceReaderCallback2 *This);
 330
 331    /*** IMFSourceReaderCallback methods ***/
 332    HRESULT (STDMETHODCALLTYPE *OnReadSample)(
 333        IMFSourceReaderCallback2 *This,
 334        HRESULT hr,
 335        DWORD stream_index,
 336        DWORD stream_flags,
 337        LONGLONG timestamp,
 338        IMFSample *sample);
 339
 340    HRESULT (STDMETHODCALLTYPE *OnFlush)(
 341        IMFSourceReaderCallback2 *This,
 342        DWORD stream_index);
 343
 344    HRESULT (STDMETHODCALLTYPE *OnEvent)(
 345        IMFSourceReaderCallback2 *This,
 346        DWORD stream_index,
 347        IMFMediaEvent *event);
 348
 349    /*** IMFSourceReaderCallback2 methods ***/
 350    HRESULT (STDMETHODCALLTYPE *OnTransformChange)(
 351        IMFSourceReaderCallback2 *This);
 352
 353    HRESULT (STDMETHODCALLTYPE *OnStreamError)(
 354        IMFSourceReaderCallback2 *This,
 355        DWORD stream_index,
 356        HRESULT status);
 357
 358    END_INTERFACE
 359} IMFSourceReaderCallback2Vtbl;
 360
 361interface IMFSourceReaderCallback2 {
 362    CONST_VTBL IMFSourceReaderCallback2Vtbl* lpVtbl;
 363};
 364
 365#ifdef COBJMACROS
 366#ifndef WIDL_C_INLINE_WRAPPERS
 367/*** IUnknown methods ***/
 368#define IMFSourceReaderCallback2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 369#define IMFSourceReaderCallback2_AddRef(This) (This)->lpVtbl->AddRef(This)
 370#define IMFSourceReaderCallback2_Release(This) (This)->lpVtbl->Release(This)
 371/*** IMFSourceReaderCallback methods ***/
 372#define IMFSourceReaderCallback2_OnReadSample(This,hr,stream_index,stream_flags,timestamp,sample) (This)->lpVtbl->OnReadSample(This,hr,stream_index,stream_flags,timestamp,sample)
 373#define IMFSourceReaderCallback2_OnFlush(This,stream_index) (This)->lpVtbl->OnFlush(This,stream_index)
 374#define IMFSourceReaderCallback2_OnEvent(This,stream_index,event) (This)->lpVtbl->OnEvent(This,stream_index,event)
 375/*** IMFSourceReaderCallback2 methods ***/
 376#define IMFSourceReaderCallback2_OnTransformChange(This) (This)->lpVtbl->OnTransformChange(This)
 377#define IMFSourceReaderCallback2_OnStreamError(This,stream_index,status) (This)->lpVtbl->OnStreamError(This,stream_index,status)
 378#else
 379/*** IUnknown methods ***/
 380static inline HRESULT IMFSourceReaderCallback2_QueryInterface(IMFSourceReaderCallback2* This,REFIID riid,void **ppvObject) {
 381    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 382}
 383static inline ULONG IMFSourceReaderCallback2_AddRef(IMFSourceReaderCallback2* This) {
 384    return This->lpVtbl->AddRef(This);
 385}
 386static inline ULONG IMFSourceReaderCallback2_Release(IMFSourceReaderCallback2* This) {
 387    return This->lpVtbl->Release(This);
 388}
 389/*** IMFSourceReaderCallback methods ***/
 390static inline HRESULT IMFSourceReaderCallback2_OnReadSample(IMFSourceReaderCallback2* This,HRESULT hr,DWORD stream_index,DWORD stream_flags,LONGLONG timestamp,IMFSample *sample) {
 391    return This->lpVtbl->OnReadSample(This,hr,stream_index,stream_flags,timestamp,sample);
 392}
 393static inline HRESULT IMFSourceReaderCallback2_OnFlush(IMFSourceReaderCallback2* This,DWORD stream_index) {
 394    return This->lpVtbl->OnFlush(This,stream_index);
 395}
 396static inline HRESULT IMFSourceReaderCallback2_OnEvent(IMFSourceReaderCallback2* This,DWORD stream_index,IMFMediaEvent *event) {
 397    return This->lpVtbl->OnEvent(This,stream_index,event);
 398}
 399/*** IMFSourceReaderCallback2 methods ***/
 400static inline HRESULT IMFSourceReaderCallback2_OnTransformChange(IMFSourceReaderCallback2* This) {
 401    return This->lpVtbl->OnTransformChange(This);
 402}
 403static inline HRESULT IMFSourceReaderCallback2_OnStreamError(IMFSourceReaderCallback2* This,DWORD stream_index,HRESULT status) {
 404    return This->lpVtbl->OnStreamError(This,stream_index,status);
 405}
 406#endif
 407#endif
 408
 409#endif
 410
 411
 412#endif  /* __IMFSourceReaderCallback2_INTERFACE_DEFINED__ */
 413
 414#ifndef __IMFMediaSource_FWD_DEFINED__
 415#define __IMFMediaSource_FWD_DEFINED__
 416typedef interface IMFMediaSource IMFMediaSource;
 417#ifdef __cplusplus
 418interface IMFMediaSource;
 419#endif /* __cplusplus */
 420#endif
 421
 422/*****************************************************************************
 423 * IMFSourceReader interface
 424 */
 425#ifndef __IMFSourceReader_INTERFACE_DEFINED__
 426#define __IMFSourceReader_INTERFACE_DEFINED__
 427
 428DEFINE_GUID(IID_IMFSourceReader, 0x70ae66f2, 0xc809, 0x4e4f, 0x89,0x15, 0xbd,0xcb,0x40,0x6b,0x79,0x93);
 429#if defined(__cplusplus) && !defined(CINTERFACE)
 430MIDL_INTERFACE("70ae66f2-c809-4e4f-8915-bdcb406b7993")
 431IMFSourceReader : public IUnknown
 432{
 433    virtual HRESULT STDMETHODCALLTYPE GetStreamSelection(
 434        DWORD index,
 435        WINBOOL *selected) = 0;
 436
 437    virtual HRESULT STDMETHODCALLTYPE SetStreamSelection(
 438        DWORD index,
 439        WINBOOL selected) = 0;
 440
 441    virtual HRESULT STDMETHODCALLTYPE GetNativeMediaType(
 442        DWORD index,
 443        DWORD typeindex,
 444        IMFMediaType **type) = 0;
 445
 446    virtual HRESULT STDMETHODCALLTYPE GetCurrentMediaType(
 447        DWORD index,
 448        IMFMediaType **type) = 0;
 449
 450    virtual HRESULT STDMETHODCALLTYPE SetCurrentMediaType(
 451        DWORD index,
 452        DWORD *reserved,
 453        IMFMediaType *type) = 0;
 454
 455    virtual HRESULT STDMETHODCALLTYPE SetCurrentPosition(
 456        REFGUID format,
 457        REFPROPVARIANT position) = 0;
 458
 459    virtual HRESULT STDMETHODCALLTYPE ReadSample(
 460        DWORD index,
 461        DWORD flags,
 462        DWORD *actualindex,
 463        DWORD *sampleflags,
 464        LONGLONG *timestamp,
 465        IMFSample **sample) = 0;
 466
 467    virtual HRESULT STDMETHODCALLTYPE Flush(
 468        DWORD index) = 0;
 469
 470    virtual HRESULT STDMETHODCALLTYPE GetServiceForStream(
 471        DWORD index,
 472        REFGUID service,
 473        REFIID riid,
 474        void **object) = 0;
 475
 476    virtual HRESULT STDMETHODCALLTYPE GetPresentationAttribute(
 477        DWORD index,
 478        REFGUID guid,
 479        PROPVARIANT *attr) = 0;
 480
 481};
 482#ifdef __CRT_UUID_DECL
 483__CRT_UUID_DECL(IMFSourceReader, 0x70ae66f2, 0xc809, 0x4e4f, 0x89,0x15, 0xbd,0xcb,0x40,0x6b,0x79,0x93)
 484#endif
 485#else
 486typedef struct IMFSourceReaderVtbl {
 487    BEGIN_INTERFACE
 488
 489    /*** IUnknown methods ***/
 490    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 491        IMFSourceReader *This,
 492        REFIID riid,
 493        void **ppvObject);
 494
 495    ULONG (STDMETHODCALLTYPE *AddRef)(
 496        IMFSourceReader *This);
 497
 498    ULONG (STDMETHODCALLTYPE *Release)(
 499        IMFSourceReader *This);
 500
 501    /*** IMFSourceReader methods ***/
 502    HRESULT (STDMETHODCALLTYPE *GetStreamSelection)(
 503        IMFSourceReader *This,
 504        DWORD index,
 505        WINBOOL *selected);
 506
 507    HRESULT (STDMETHODCALLTYPE *SetStreamSelection)(
 508        IMFSourceReader *This,
 509        DWORD index,
 510        WINBOOL selected);
 511
 512    HRESULT (STDMETHODCALLTYPE *GetNativeMediaType)(
 513        IMFSourceReader *This,
 514        DWORD index,
 515        DWORD typeindex,
 516        IMFMediaType **type);
 517
 518    HRESULT (STDMETHODCALLTYPE *GetCurrentMediaType)(
 519        IMFSourceReader *This,
 520        DWORD index,
 521        IMFMediaType **type);
 522
 523    HRESULT (STDMETHODCALLTYPE *SetCurrentMediaType)(
 524        IMFSourceReader *This,
 525        DWORD index,
 526        DWORD *reserved,
 527        IMFMediaType *type);
 528
 529    HRESULT (STDMETHODCALLTYPE *SetCurrentPosition)(
 530        IMFSourceReader *This,
 531        REFGUID format,
 532        REFPROPVARIANT position);
 533
 534    HRESULT (STDMETHODCALLTYPE *ReadSample)(
 535        IMFSourceReader *This,
 536        DWORD index,
 537        DWORD flags,
 538        DWORD *actualindex,
 539        DWORD *sampleflags,
 540        LONGLONG *timestamp,
 541        IMFSample **sample);
 542
 543    HRESULT (STDMETHODCALLTYPE *Flush)(
 544        IMFSourceReader *This,
 545        DWORD index);
 546
 547    HRESULT (STDMETHODCALLTYPE *GetServiceForStream)(
 548        IMFSourceReader *This,
 549        DWORD index,
 550        REFGUID service,
 551        REFIID riid,
 552        void **object);
 553
 554    HRESULT (STDMETHODCALLTYPE *GetPresentationAttribute)(
 555        IMFSourceReader *This,
 556        DWORD index,
 557        REFGUID guid,
 558        PROPVARIANT *attr);
 559
 560    END_INTERFACE
 561} IMFSourceReaderVtbl;
 562
 563interface IMFSourceReader {
 564    CONST_VTBL IMFSourceReaderVtbl* lpVtbl;
 565};
 566
 567#ifdef COBJMACROS
 568#ifndef WIDL_C_INLINE_WRAPPERS
 569/*** IUnknown methods ***/
 570#define IMFSourceReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 571#define IMFSourceReader_AddRef(This) (This)->lpVtbl->AddRef(This)
 572#define IMFSourceReader_Release(This) (This)->lpVtbl->Release(This)
 573/*** IMFSourceReader methods ***/
 574#define IMFSourceReader_GetStreamSelection(This,index,selected) (This)->lpVtbl->GetStreamSelection(This,index,selected)
 575#define IMFSourceReader_SetStreamSelection(This,index,selected) (This)->lpVtbl->SetStreamSelection(This,index,selected)
 576#define IMFSourceReader_GetNativeMediaType(This,index,typeindex,type) (This)->lpVtbl->GetNativeMediaType(This,index,typeindex,type)
 577#define IMFSourceReader_GetCurrentMediaType(This,index,type) (This)->lpVtbl->GetCurrentMediaType(This,index,type)
 578#define IMFSourceReader_SetCurrentMediaType(This,index,reserved,type) (This)->lpVtbl->SetCurrentMediaType(This,index,reserved,type)
 579#define IMFSourceReader_SetCurrentPosition(This,format,position) (This)->lpVtbl->SetCurrentPosition(This,format,position)
 580#define IMFSourceReader_ReadSample(This,index,flags,actualindex,sampleflags,timestamp,sample) (This)->lpVtbl->ReadSample(This,index,flags,actualindex,sampleflags,timestamp,sample)
 581#define IMFSourceReader_Flush(This,index) (This)->lpVtbl->Flush(This,index)
 582#define IMFSourceReader_GetServiceForStream(This,index,service,riid,object) (This)->lpVtbl->GetServiceForStream(This,index,service,riid,object)
 583#define IMFSourceReader_GetPresentationAttribute(This,index,guid,attr) (This)->lpVtbl->GetPresentationAttribute(This,index,guid,attr)
 584#else
 585/*** IUnknown methods ***/
 586static inline HRESULT IMFSourceReader_QueryInterface(IMFSourceReader* This,REFIID riid,void **ppvObject) {
 587    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 588}
 589static inline ULONG IMFSourceReader_AddRef(IMFSourceReader* This) {
 590    return This->lpVtbl->AddRef(This);
 591}
 592static inline ULONG IMFSourceReader_Release(IMFSourceReader* This) {
 593    return This->lpVtbl->Release(This);
 594}
 595/*** IMFSourceReader methods ***/
 596static inline HRESULT IMFSourceReader_GetStreamSelection(IMFSourceReader* This,DWORD index,WINBOOL *selected) {
 597    return This->lpVtbl->GetStreamSelection(This,index,selected);
 598}
 599static inline HRESULT IMFSourceReader_SetStreamSelection(IMFSourceReader* This,DWORD index,WINBOOL selected) {
 600    return This->lpVtbl->SetStreamSelection(This,index,selected);
 601}
 602static inline HRESULT IMFSourceReader_GetNativeMediaType(IMFSourceReader* This,DWORD index,DWORD typeindex,IMFMediaType **type) {
 603    return This->lpVtbl->GetNativeMediaType(This,index,typeindex,type);
 604}
 605static inline HRESULT IMFSourceReader_GetCurrentMediaType(IMFSourceReader* This,DWORD index,IMFMediaType **type) {
 606    return This->lpVtbl->GetCurrentMediaType(This,index,type);
 607}
 608static inline HRESULT IMFSourceReader_SetCurrentMediaType(IMFSourceReader* This,DWORD index,DWORD *reserved,IMFMediaType *type) {
 609    return This->lpVtbl->SetCurrentMediaType(This,index,reserved,type);
 610}
 611static inline HRESULT IMFSourceReader_SetCurrentPosition(IMFSourceReader* This,REFGUID format,REFPROPVARIANT position) {
 612    return This->lpVtbl->SetCurrentPosition(This,format,position);
 613}
 614static inline HRESULT IMFSourceReader_ReadSample(IMFSourceReader* This,DWORD index,DWORD flags,DWORD *actualindex,DWORD *sampleflags,LONGLONG *timestamp,IMFSample **sample) {
 615    return This->lpVtbl->ReadSample(This,index,flags,actualindex,sampleflags,timestamp,sample);
 616}
 617static inline HRESULT IMFSourceReader_Flush(IMFSourceReader* This,DWORD index) {
 618    return This->lpVtbl->Flush(This,index);
 619}
 620static inline HRESULT IMFSourceReader_GetServiceForStream(IMFSourceReader* This,DWORD index,REFGUID service,REFIID riid,void **object) {
 621    return This->lpVtbl->GetServiceForStream(This,index,service,riid,object);
 622}
 623static inline HRESULT IMFSourceReader_GetPresentationAttribute(IMFSourceReader* This,DWORD index,REFGUID guid,PROPVARIANT *attr) {
 624    return This->lpVtbl->GetPresentationAttribute(This,index,guid,attr);
 625}
 626#endif
 627#endif
 628
 629#endif
 630
 631
 632#endif  /* __IMFSourceReader_INTERFACE_DEFINED__ */
 633
 634/*****************************************************************************
 635 * IMFSourceReaderEx interface
 636 */
 637#ifndef __IMFSourceReaderEx_INTERFACE_DEFINED__
 638#define __IMFSourceReaderEx_INTERFACE_DEFINED__
 639
 640DEFINE_GUID(IID_IMFSourceReaderEx, 0x7b981cf0, 0x560e, 0x4116, 0x98,0x75, 0xb0,0x99,0x89,0x5f,0x23,0xd7);
 641#if defined(__cplusplus) && !defined(CINTERFACE)
 642MIDL_INTERFACE("7b981cf0-560e-4116-9875-b099895f23d7")
 643IMFSourceReaderEx : public IMFSourceReader
 644{
 645    virtual HRESULT STDMETHODCALLTYPE SetNativeMediaType(
 646        DWORD stream_index,
 647        IMFMediaType *media_type,
 648        DWORD *stream_flags) = 0;
 649
 650    virtual HRESULT STDMETHODCALLTYPE AddTransformForStream(
 651        DWORD stream_index,
 652        IUnknown *transform) = 0;
 653
 654    virtual HRESULT STDMETHODCALLTYPE RemoveAllTransformsForStream(
 655        DWORD stream_index) = 0;
 656
 657    virtual HRESULT STDMETHODCALLTYPE GetTransformForStream(
 658        DWORD stream_index,
 659        DWORD transform_index,
 660        GUID *category,
 661        IMFTransform **transform) = 0;
 662
 663};
 664#ifdef __CRT_UUID_DECL
 665__CRT_UUID_DECL(IMFSourceReaderEx, 0x7b981cf0, 0x560e, 0x4116, 0x98,0x75, 0xb0,0x99,0x89,0x5f,0x23,0xd7)
 666#endif
 667#else
 668typedef struct IMFSourceReaderExVtbl {
 669    BEGIN_INTERFACE
 670
 671    /*** IUnknown methods ***/
 672    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 673        IMFSourceReaderEx *This,
 674        REFIID riid,
 675        void **ppvObject);
 676
 677    ULONG (STDMETHODCALLTYPE *AddRef)(
 678        IMFSourceReaderEx *This);
 679
 680    ULONG (STDMETHODCALLTYPE *Release)(
 681        IMFSourceReaderEx *This);
 682
 683    /*** IMFSourceReader methods ***/
 684    HRESULT (STDMETHODCALLTYPE *GetStreamSelection)(
 685        IMFSourceReaderEx *This,
 686        DWORD index,
 687        WINBOOL *selected);
 688
 689    HRESULT (STDMETHODCALLTYPE *SetStreamSelection)(
 690        IMFSourceReaderEx *This,
 691        DWORD index,
 692        WINBOOL selected);
 693
 694    HRESULT (STDMETHODCALLTYPE *GetNativeMediaType)(
 695        IMFSourceReaderEx *This,
 696        DWORD index,
 697        DWORD typeindex,
 698        IMFMediaType **type);
 699
 700    HRESULT (STDMETHODCALLTYPE *GetCurrentMediaType)(
 701        IMFSourceReaderEx *This,
 702        DWORD index,
 703        IMFMediaType **type);
 704
 705    HRESULT (STDMETHODCALLTYPE *SetCurrentMediaType)(
 706        IMFSourceReaderEx *This,
 707        DWORD index,
 708        DWORD *reserved,
 709        IMFMediaType *type);
 710
 711    HRESULT (STDMETHODCALLTYPE *SetCurrentPosition)(
 712        IMFSourceReaderEx *This,
 713        REFGUID format,
 714        REFPROPVARIANT position);
 715
 716    HRESULT (STDMETHODCALLTYPE *ReadSample)(
 717        IMFSourceReaderEx *This,
 718        DWORD index,
 719        DWORD flags,
 720        DWORD *actualindex,
 721        DWORD *sampleflags,
 722        LONGLONG *timestamp,
 723        IMFSample **sample);
 724
 725    HRESULT (STDMETHODCALLTYPE *Flush)(
 726        IMFSourceReaderEx *This,
 727        DWORD index);
 728
 729    HRESULT (STDMETHODCALLTYPE *GetServiceForStream)(
 730        IMFSourceReaderEx *This,
 731        DWORD index,
 732        REFGUID service,
 733        REFIID riid,
 734        void **object);
 735
 736    HRESULT (STDMETHODCALLTYPE *GetPresentationAttribute)(
 737        IMFSourceReaderEx *This,
 738        DWORD index,
 739        REFGUID guid,
 740        PROPVARIANT *attr);
 741
 742    /*** IMFSourceReaderEx methods ***/
 743    HRESULT (STDMETHODCALLTYPE *SetNativeMediaType)(
 744        IMFSourceReaderEx *This,
 745        DWORD stream_index,
 746        IMFMediaType *media_type,
 747        DWORD *stream_flags);
 748
 749    HRESULT (STDMETHODCALLTYPE *AddTransformForStream)(
 750        IMFSourceReaderEx *This,
 751        DWORD stream_index,
 752        IUnknown *transform);
 753
 754    HRESULT (STDMETHODCALLTYPE *RemoveAllTransformsForStream)(
 755        IMFSourceReaderEx *This,
 756        DWORD stream_index);
 757
 758    HRESULT (STDMETHODCALLTYPE *GetTransformForStream)(
 759        IMFSourceReaderEx *This,
 760        DWORD stream_index,
 761        DWORD transform_index,
 762        GUID *category,
 763        IMFTransform **transform);
 764
 765    END_INTERFACE
 766} IMFSourceReaderExVtbl;
 767
 768interface IMFSourceReaderEx {
 769    CONST_VTBL IMFSourceReaderExVtbl* lpVtbl;
 770};
 771
 772#ifdef COBJMACROS
 773#ifndef WIDL_C_INLINE_WRAPPERS
 774/*** IUnknown methods ***/
 775#define IMFSourceReaderEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 776#define IMFSourceReaderEx_AddRef(This) (This)->lpVtbl->AddRef(This)
 777#define IMFSourceReaderEx_Release(This) (This)->lpVtbl->Release(This)
 778/*** IMFSourceReader methods ***/
 779#define IMFSourceReaderEx_GetStreamSelection(This,index,selected) (This)->lpVtbl->GetStreamSelection(This,index,selected)
 780#define IMFSourceReaderEx_SetStreamSelection(This,index,selected) (This)->lpVtbl->SetStreamSelection(This,index,selected)
 781#define IMFSourceReaderEx_GetNativeMediaType(This,index,typeindex,type) (This)->lpVtbl->GetNativeMediaType(This,index,typeindex,type)
 782#define IMFSourceReaderEx_GetCurrentMediaType(This,index,type) (This)->lpVtbl->GetCurrentMediaType(This,index,type)
 783#define IMFSourceReaderEx_SetCurrentMediaType(This,index,reserved,type) (This)->lpVtbl->SetCurrentMediaType(This,index,reserved,type)
 784#define IMFSourceReaderEx_SetCurrentPosition(This,format,position) (This)->lpVtbl->SetCurrentPosition(This,format,position)
 785#define IMFSourceReaderEx_ReadSample(This,index,flags,actualindex,sampleflags,timestamp,sample) (This)->lpVtbl->ReadSample(This,index,flags,actualindex,sampleflags,timestamp,sample)
 786#define IMFSourceReaderEx_Flush(This,index) (This)->lpVtbl->Flush(This,index)
 787#define IMFSourceReaderEx_GetServiceForStream(This,index,service,riid,object) (This)->lpVtbl->GetServiceForStream(This,index,service,riid,object)
 788#define IMFSourceReaderEx_GetPresentationAttribute(This,index,guid,attr) (This)->lpVtbl->GetPresentationAttribute(This,index,guid,attr)
 789/*** IMFSourceReaderEx methods ***/
 790#define IMFSourceReaderEx_SetNativeMediaType(This,stream_index,media_type,stream_flags) (This)->lpVtbl->SetNativeMediaType(This,stream_index,media_type,stream_flags)
 791#define IMFSourceReaderEx_AddTransformForStream(This,stream_index,transform) (This)->lpVtbl->AddTransformForStream(This,stream_index,transform)
 792#define IMFSourceReaderEx_RemoveAllTransformsForStream(This,stream_index) (This)->lpVtbl->RemoveAllTransformsForStream(This,stream_index)
 793#define IMFSourceReaderEx_GetTransformForStream(This,stream_index,transform_index,category,transform) (This)->lpVtbl->GetTransformForStream(This,stream_index,transform_index,category,transform)
 794#else
 795/*** IUnknown methods ***/
 796static inline HRESULT IMFSourceReaderEx_QueryInterface(IMFSourceReaderEx* This,REFIID riid,void **ppvObject) {
 797    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 798}
 799static inline ULONG IMFSourceReaderEx_AddRef(IMFSourceReaderEx* This) {
 800    return This->lpVtbl->AddRef(This);
 801}
 802static inline ULONG IMFSourceReaderEx_Release(IMFSourceReaderEx* This) {
 803    return This->lpVtbl->Release(This);
 804}
 805/*** IMFSourceReader methods ***/
 806static inline HRESULT IMFSourceReaderEx_GetStreamSelection(IMFSourceReaderEx* This,DWORD index,WINBOOL *selected) {
 807    return This->lpVtbl->GetStreamSelection(This,index,selected);
 808}
 809static inline HRESULT IMFSourceReaderEx_SetStreamSelection(IMFSourceReaderEx* This,DWORD index,WINBOOL selected) {
 810    return This->lpVtbl->SetStreamSelection(This,index,selected);
 811}
 812static inline HRESULT IMFSourceReaderEx_GetNativeMediaType(IMFSourceReaderEx* This,DWORD index,DWORD typeindex,IMFMediaType **type) {
 813    return This->lpVtbl->GetNativeMediaType(This,index,typeindex,type);
 814}
 815static inline HRESULT IMFSourceReaderEx_GetCurrentMediaType(IMFSourceReaderEx* This,DWORD index,IMFMediaType **type) {
 816    return This->lpVtbl->GetCurrentMediaType(This,index,type);
 817}
 818static inline HRESULT IMFSourceReaderEx_SetCurrentMediaType(IMFSourceReaderEx* This,DWORD index,DWORD *reserved,IMFMediaType *type) {
 819    return This->lpVtbl->SetCurrentMediaType(This,index,reserved,type);
 820}
 821static inline HRESULT IMFSourceReaderEx_SetCurrentPosition(IMFSourceReaderEx* This,REFGUID format,REFPROPVARIANT position) {
 822    return This->lpVtbl->SetCurrentPosition(This,format,position);
 823}
 824static inline HRESULT IMFSourceReaderEx_ReadSample(IMFSourceReaderEx* This,DWORD index,DWORD flags,DWORD *actualindex,DWORD *sampleflags,LONGLONG *timestamp,IMFSample **sample) {
 825    return This->lpVtbl->ReadSample(This,index,flags,actualindex,sampleflags,timestamp,sample);
 826}
 827static inline HRESULT IMFSourceReaderEx_Flush(IMFSourceReaderEx* This,DWORD index) {
 828    return This->lpVtbl->Flush(This,index);
 829}
 830static inline HRESULT IMFSourceReaderEx_GetServiceForStream(IMFSourceReaderEx* This,DWORD index,REFGUID service,REFIID riid,void **object) {
 831    return This->lpVtbl->GetServiceForStream(This,index,service,riid,object);
 832}
 833static inline HRESULT IMFSourceReaderEx_GetPresentationAttribute(IMFSourceReaderEx* This,DWORD index,REFGUID guid,PROPVARIANT *attr) {
 834    return This->lpVtbl->GetPresentationAttribute(This,index,guid,attr);
 835}
 836/*** IMFSourceReaderEx methods ***/
 837static inline HRESULT IMFSourceReaderEx_SetNativeMediaType(IMFSourceReaderEx* This,DWORD stream_index,IMFMediaType *media_type,DWORD *stream_flags) {
 838    return This->lpVtbl->SetNativeMediaType(This,stream_index,media_type,stream_flags);
 839}
 840static inline HRESULT IMFSourceReaderEx_AddTransformForStream(IMFSourceReaderEx* This,DWORD stream_index,IUnknown *transform) {
 841    return This->lpVtbl->AddTransformForStream(This,stream_index,transform);
 842}
 843static inline HRESULT IMFSourceReaderEx_RemoveAllTransformsForStream(IMFSourceReaderEx* This,DWORD stream_index) {
 844    return This->lpVtbl->RemoveAllTransformsForStream(This,stream_index);
 845}
 846static inline HRESULT IMFSourceReaderEx_GetTransformForStream(IMFSourceReaderEx* This,DWORD stream_index,DWORD transform_index,GUID *category,IMFTransform **transform) {
 847    return This->lpVtbl->GetTransformForStream(This,stream_index,transform_index,category,transform);
 848}
 849#endif
 850#endif
 851
 852#endif
 853
 854
 855#endif  /* __IMFSourceReaderEx_INTERFACE_DEFINED__ */
 856
 857/*****************************************************************************
 858 * IMFSinkWriter interface
 859 */
 860#ifndef __IMFSinkWriter_INTERFACE_DEFINED__
 861#define __IMFSinkWriter_INTERFACE_DEFINED__
 862
 863DEFINE_GUID(IID_IMFSinkWriter, 0x3137f1cd, 0xfe5e, 0x4805, 0xa5,0xd8, 0xfb,0x47,0x74,0x48,0xcb,0x3d);
 864#if defined(__cplusplus) && !defined(CINTERFACE)
 865MIDL_INTERFACE("3137f1cd-fe5e-4805-a5d8-fb477448cb3d")
 866IMFSinkWriter : public IUnknown
 867{
 868    virtual HRESULT STDMETHODCALLTYPE AddStream(
 869        IMFMediaType *type,
 870        DWORD *index) = 0;
 871
 872    virtual HRESULT STDMETHODCALLTYPE SetInputMediaType(
 873        DWORD index,
 874        IMFMediaType *type,
 875        IMFAttributes *parameters) = 0;
 876
 877    virtual HRESULT STDMETHODCALLTYPE BeginWriting(
 878        ) = 0;
 879
 880    virtual HRESULT STDMETHODCALLTYPE WriteSample(
 881        DWORD index,
 882        IMFSample *sample) = 0;
 883
 884    virtual HRESULT STDMETHODCALLTYPE SendStreamTick(
 885        DWORD index,
 886        LONGLONG timestamp) = 0;
 887
 888    virtual HRESULT STDMETHODCALLTYPE PlaceMarker(
 889        DWORD index,
 890        void *context) = 0;
 891
 892    virtual HRESULT STDMETHODCALLTYPE NotifyEndOfSegment(
 893        DWORD index) = 0;
 894
 895    virtual HRESULT STDMETHODCALLTYPE Flush(
 896        DWORD index) = 0;
 897
 898    virtual HRESULT STDMETHODCALLTYPE Finalize(
 899        ) = 0;
 900
 901    virtual HRESULT STDMETHODCALLTYPE GetServiceForStream(
 902        DWORD index,
 903        REFGUID service,
 904        REFIID riid,
 905        void **object) = 0;
 906
 907    virtual HRESULT STDMETHODCALLTYPE GetStatistics(
 908        DWORD index,
 909        MF_SINK_WRITER_STATISTICS *stats) = 0;
 910
 911};
 912#ifdef __CRT_UUID_DECL
 913__CRT_UUID_DECL(IMFSinkWriter, 0x3137f1cd, 0xfe5e, 0x4805, 0xa5,0xd8, 0xfb,0x47,0x74,0x48,0xcb,0x3d)
 914#endif
 915#else
 916typedef struct IMFSinkWriterVtbl {
 917    BEGIN_INTERFACE
 918
 919    /*** IUnknown methods ***/
 920    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 921        IMFSinkWriter *This,
 922        REFIID riid,
 923        void **ppvObject);
 924
 925    ULONG (STDMETHODCALLTYPE *AddRef)(
 926        IMFSinkWriter *This);
 927
 928    ULONG (STDMETHODCALLTYPE *Release)(
 929        IMFSinkWriter *This);
 930
 931    /*** IMFSinkWriter methods ***/
 932    HRESULT (STDMETHODCALLTYPE *AddStream)(
 933        IMFSinkWriter *This,
 934        IMFMediaType *type,
 935        DWORD *index);
 936
 937    HRESULT (STDMETHODCALLTYPE *SetInputMediaType)(
 938        IMFSinkWriter *This,
 939        DWORD index,
 940        IMFMediaType *type,
 941        IMFAttributes *parameters);
 942
 943    HRESULT (STDMETHODCALLTYPE *BeginWriting)(
 944        IMFSinkWriter *This);
 945
 946    HRESULT (STDMETHODCALLTYPE *WriteSample)(
 947        IMFSinkWriter *This,
 948        DWORD index,
 949        IMFSample *sample);
 950
 951    HRESULT (STDMETHODCALLTYPE *SendStreamTick)(
 952        IMFSinkWriter *This,
 953        DWORD index,
 954        LONGLONG timestamp);
 955
 956    HRESULT (STDMETHODCALLTYPE *PlaceMarker)(
 957        IMFSinkWriter *This,
 958        DWORD index,
 959        void *context);
 960
 961    HRESULT (STDMETHODCALLTYPE *NotifyEndOfSegment)(
 962        IMFSinkWriter *This,
 963        DWORD index);
 964
 965    HRESULT (STDMETHODCALLTYPE *Flush)(
 966        IMFSinkWriter *This,
 967        DWORD index);
 968
 969    HRESULT (STDMETHODCALLTYPE *Finalize)(
 970        IMFSinkWriter *This);
 971
 972    HRESULT (STDMETHODCALLTYPE *GetServiceForStream)(
 973        IMFSinkWriter *This,
 974        DWORD index,
 975        REFGUID service,
 976        REFIID riid,
 977        void **object);
 978
 979    HRESULT (STDMETHODCALLTYPE *GetStatistics)(
 980        IMFSinkWriter *This,
 981        DWORD index,
 982        MF_SINK_WRITER_STATISTICS *stats);
 983
 984    END_INTERFACE
 985} IMFSinkWriterVtbl;
 986
 987interface IMFSinkWriter {
 988    CONST_VTBL IMFSinkWriterVtbl* lpVtbl;
 989};
 990
 991#ifdef COBJMACROS
 992#ifndef WIDL_C_INLINE_WRAPPERS
 993/*** IUnknown methods ***/
 994#define IMFSinkWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 995#define IMFSinkWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
 996#define IMFSinkWriter_Release(This) (This)->lpVtbl->Release(This)
 997/*** IMFSinkWriter methods ***/
 998#define IMFSinkWriter_AddStream(This,type,index) (This)->lpVtbl->AddStream(This,type,index)
 999#define IMFSinkWriter_SetInputMediaType(This,index,type,parameters) (This)->lpVtbl->SetInputMediaType(This,index,type,parameters)
1000#define IMFSinkWriter_BeginWriting(This) (This)->lpVtbl->BeginWriting(This)
1001#define IMFSinkWriter_WriteSample(This,index,sample) (This)->lpVtbl->WriteSample(This,index,sample)
1002#define IMFSinkWriter_SendStreamTick(This,index,timestamp) (This)->lpVtbl->SendStreamTick(This,index,timestamp)
1003#define IMFSinkWriter_PlaceMarker(This,index,context) (This)->lpVtbl->PlaceMarker(This,index,context)
1004#define IMFSinkWriter_NotifyEndOfSegment(This,index) (This)->lpVtbl->NotifyEndOfSegment(This,index)
1005#define IMFSinkWriter_Flush(This,index) (This)->lpVtbl->Flush(This,index)
1006#define IMFSinkWriter_Finalize(This) (This)->lpVtbl->Finalize(This)
1007#define IMFSinkWriter_GetServiceForStream(This,index,service,riid,object) (This)->lpVtbl->GetServiceForStream(This,index,service,riid,object)
1008#define IMFSinkWriter_GetStatistics(This,index,stats) (This)->lpVtbl->GetStatistics(This,index,stats)
1009#else
1010/*** IUnknown methods ***/
1011static inline HRESULT IMFSinkWriter_QueryInterface(IMFSinkWriter* This,REFIID riid,void **ppvObject) {
1012    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1013}
1014static inline ULONG IMFSinkWriter_AddRef(IMFSinkWriter* This) {
1015    return This->lpVtbl->AddRef(This);
1016}
1017static inline ULONG IMFSinkWriter_Release(IMFSinkWriter* This) {
1018    return This->lpVtbl->Release(This);
1019}
1020/*** IMFSinkWriter methods ***/
1021static inline HRESULT IMFSinkWriter_AddStream(IMFSinkWriter* This,IMFMediaType *type,DWORD *index) {
1022    return This->lpVtbl->AddStream(This,type,index);
1023}
1024static inline HRESULT IMFSinkWriter_SetInputMediaType(IMFSinkWriter* This,DWORD index,IMFMediaType *type,IMFAttributes *parameters) {
1025    return This->lpVtbl->SetInputMediaType(This,index,type,parameters);
1026}
1027static inline HRESULT IMFSinkWriter_BeginWriting(IMFSinkWriter* This) {
1028    return This->lpVtbl->BeginWriting(This);
1029}
1030static inline HRESULT IMFSinkWriter_WriteSample(IMFSinkWriter* This,DWORD index,IMFSample *sample) {
1031    return This->lpVtbl->WriteSample(This,index,sample);
1032}
1033static inline HRESULT IMFSinkWriter_SendStreamTick(IMFSinkWriter* This,DWORD index,LONGLONG timestamp) {
1034    return This->lpVtbl->SendStreamTick(This,index,timestamp);
1035}
1036static inline HRESULT IMFSinkWriter_PlaceMarker(IMFSinkWriter* This,DWORD index,void *context) {
1037    return This->lpVtbl->PlaceMarker(This,index,context);
1038}
1039static inline HRESULT IMFSinkWriter_NotifyEndOfSegment(IMFSinkWriter* This,DWORD index) {
1040    return This->lpVtbl->NotifyEndOfSegment(This,index);
1041}
1042static inline HRESULT IMFSinkWriter_Flush(IMFSinkWriter* This,DWORD index) {
1043    return This->lpVtbl->Flush(This,index);
1044}
1045static inline HRESULT IMFSinkWriter_Finalize(IMFSinkWriter* This) {
1046    return This->lpVtbl->Finalize(This);
1047}
1048static inline HRESULT IMFSinkWriter_GetServiceForStream(IMFSinkWriter* This,DWORD index,REFGUID service,REFIID riid,void **object) {
1049    return This->lpVtbl->GetServiceForStream(This,index,service,riid,object);
1050}
1051static inline HRESULT IMFSinkWriter_GetStatistics(IMFSinkWriter* This,DWORD index,MF_SINK_WRITER_STATISTICS *stats) {
1052    return This->lpVtbl->GetStatistics(This,index,stats);
1053}
1054#endif
1055#endif
1056
1057#endif
1058
1059
1060#endif  /* __IMFSinkWriter_INTERFACE_DEFINED__ */
1061
1062/*****************************************************************************
1063 * IMFSinkWriterEx interface
1064 */
1065#ifndef __IMFSinkWriterEx_INTERFACE_DEFINED__
1066#define __IMFSinkWriterEx_INTERFACE_DEFINED__
1067
1068DEFINE_GUID(IID_IMFSinkWriterEx, 0x588d72ab, 0x5bc1, 0x496a, 0x87,0x14, 0xb7,0x06,0x17,0x14,0x1b,0x25);
1069#if defined(__cplusplus) && !defined(CINTERFACE)
1070MIDL_INTERFACE("588d72ab-5bc1-496a-8714-b70617141b25")
1071IMFSinkWriterEx : public IMFSinkWriter
1072{
1073    virtual HRESULT STDMETHODCALLTYPE GetTransformForStream(
1074        DWORD index,
1075        DWORD tindex,
1076        GUID *category,
1077        IMFTransform **transform) = 0;
1078
1079};
1080#ifdef __CRT_UUID_DECL
1081__CRT_UUID_DECL(IMFSinkWriterEx, 0x588d72ab, 0x5bc1, 0x496a, 0x87,0x14, 0xb7,0x06,0x17,0x14,0x1b,0x25)
1082#endif
1083#else
1084typedef struct IMFSinkWriterExVtbl {
1085    BEGIN_INTERFACE
1086
1087    /*** IUnknown methods ***/
1088    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1089        IMFSinkWriterEx *This,
1090        REFIID riid,
1091        void **ppvObject);
1092
1093    ULONG (STDMETHODCALLTYPE *AddRef)(
1094        IMFSinkWriterEx *This);
1095
1096    ULONG (STDMETHODCALLTYPE *Release)(
1097        IMFSinkWriterEx *This);
1098
1099    /*** IMFSinkWriter methods ***/
1100    HRESULT (STDMETHODCALLTYPE *AddStream)(
1101        IMFSinkWriterEx *This,
1102        IMFMediaType *type,
1103        DWORD *index);
1104
1105    HRESULT (STDMETHODCALLTYPE *SetInputMediaType)(
1106        IMFSinkWriterEx *This,
1107        DWORD index,
1108        IMFMediaType *type,
1109        IMFAttributes *parameters);
1110
1111    HRESULT (STDMETHODCALLTYPE *BeginWriting)(
1112        IMFSinkWriterEx *This);
1113
1114    HRESULT (STDMETHODCALLTYPE *WriteSample)(
1115        IMFSinkWriterEx *This,
1116        DWORD index,
1117        IMFSample *sample);
1118
1119    HRESULT (STDMETHODCALLTYPE *SendStreamTick)(
1120        IMFSinkWriterEx *This,
1121        DWORD index,
1122        LONGLONG timestamp);
1123
1124    HRESULT (STDMETHODCALLTYPE *PlaceMarker)(
1125        IMFSinkWriterEx *This,
1126        DWORD index,
1127        void *context);
1128
1129    HRESULT (STDMETHODCALLTYPE *NotifyEndOfSegment)(
1130        IMFSinkWriterEx *This,
1131        DWORD index);
1132
1133    HRESULT (STDMETHODCALLTYPE *Flush)(
1134        IMFSinkWriterEx *This,
1135        DWORD index);
1136
1137    HRESULT (STDMETHODCALLTYPE *Finalize)(
1138        IMFSinkWriterEx *This);
1139
1140    HRESULT (STDMETHODCALLTYPE *GetServiceForStream)(
1141        IMFSinkWriterEx *This,
1142        DWORD index,
1143        REFGUID service,
1144        REFIID riid,
1145        void **object);
1146
1147    HRESULT (STDMETHODCALLTYPE *GetStatistics)(
1148        IMFSinkWriterEx *This,
1149        DWORD index,
1150        MF_SINK_WRITER_STATISTICS *stats);
1151
1152    /*** IMFSinkWriterEx methods ***/
1153    HRESULT (STDMETHODCALLTYPE *GetTransformForStream)(
1154        IMFSinkWriterEx *This,
1155        DWORD index,
1156        DWORD tindex,
1157        GUID *category,
1158        IMFTransform **transform);
1159
1160    END_INTERFACE
1161} IMFSinkWriterExVtbl;
1162
1163interface IMFSinkWriterEx {
1164    CONST_VTBL IMFSinkWriterExVtbl* lpVtbl;
1165};
1166
1167#ifdef COBJMACROS
1168#ifndef WIDL_C_INLINE_WRAPPERS
1169/*** IUnknown methods ***/
1170#define IMFSinkWriterEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1171#define IMFSinkWriterEx_AddRef(This) (This)->lpVtbl->AddRef(This)
1172#define IMFSinkWriterEx_Release(This) (This)->lpVtbl->Release(This)
1173/*** IMFSinkWriter methods ***/
1174#define IMFSinkWriterEx_AddStream(This,type,index) (This)->lpVtbl->AddStream(This,type,index)
1175#define IMFSinkWriterEx_SetInputMediaType(This,index,type,parameters) (This)->lpVtbl->SetInputMediaType(This,index,type,parameters)
1176#define IMFSinkWriterEx_BeginWriting(This) (This)->lpVtbl->BeginWriting(This)
1177#define IMFSinkWriterEx_WriteSample(This,index,sample) (This)->lpVtbl->WriteSample(This,index,sample)
1178#define IMFSinkWriterEx_SendStreamTick(This,index,timestamp) (This)->lpVtbl->SendStreamTick(This,index,timestamp)
1179#define IMFSinkWriterEx_PlaceMarker(This,index,context) (This)->lpVtbl->PlaceMarker(This,index,context)
1180#define IMFSinkWriterEx_NotifyEndOfSegment(This,index) (This)->lpVtbl->NotifyEndOfSegment(This,index)
1181#define IMFSinkWriterEx_Flush(This,index) (This)->lpVtbl->Flush(This,index)
1182#define IMFSinkWriterEx_Finalize(This) (This)->lpVtbl->Finalize(This)
1183#define IMFSinkWriterEx_GetServiceForStream(This,index,service,riid,object) (This)->lpVtbl->GetServiceForStream(This,index,service,riid,object)
1184#define IMFSinkWriterEx_GetStatistics(This,index,stats) (This)->lpVtbl->GetStatistics(This,index,stats)
1185/*** IMFSinkWriterEx methods ***/
1186#define IMFSinkWriterEx_GetTransformForStream(This,index,tindex,category,transform) (This)->lpVtbl->GetTransformForStream(This,index,tindex,category,transform)
1187#else
1188/*** IUnknown methods ***/
1189static inline HRESULT IMFSinkWriterEx_QueryInterface(IMFSinkWriterEx* This,REFIID riid,void **ppvObject) {
1190    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1191}
1192static inline ULONG IMFSinkWriterEx_AddRef(IMFSinkWriterEx* This) {
1193    return This->lpVtbl->AddRef(This);
1194}
1195static inline ULONG IMFSinkWriterEx_Release(IMFSinkWriterEx* This) {
1196    return This->lpVtbl->Release(This);
1197}
1198/*** IMFSinkWriter methods ***/
1199static inline HRESULT IMFSinkWriterEx_AddStream(IMFSinkWriterEx* This,IMFMediaType *type,DWORD *index) {
1200    return This->lpVtbl->AddStream(This,type,index);
1201}
1202static inline HRESULT IMFSinkWriterEx_SetInputMediaType(IMFSinkWriterEx* This,DWORD index,IMFMediaType *type,IMFAttributes *parameters) {
1203    return This->lpVtbl->SetInputMediaType(This,index,type,parameters);
1204}
1205static inline HRESULT IMFSinkWriterEx_BeginWriting(IMFSinkWriterEx* This) {
1206    return This->lpVtbl->BeginWriting(This);
1207}
1208static inline HRESULT IMFSinkWriterEx_WriteSample(IMFSinkWriterEx* This,DWORD index,IMFSample *sample) {
1209    return This->lpVtbl->WriteSample(This,index,sample);
1210}
1211static inline HRESULT IMFSinkWriterEx_SendStreamTick(IMFSinkWriterEx* This,DWORD index,LONGLONG timestamp) {
1212    return This->lpVtbl->SendStreamTick(This,index,timestamp);
1213}
1214static inline HRESULT IMFSinkWriterEx_PlaceMarker(IMFSinkWriterEx* This,DWORD index,void *context) {
1215    return This->lpVtbl->PlaceMarker(This,index,context);
1216}
1217static inline HRESULT IMFSinkWriterEx_NotifyEndOfSegment(IMFSinkWriterEx* This,DWORD index) {
1218    return This->lpVtbl->NotifyEndOfSegment(This,index);
1219}
1220static inline HRESULT IMFSinkWriterEx_Flush(IMFSinkWriterEx* This,DWORD index) {
1221    return This->lpVtbl->Flush(This,index);
1222}
1223static inline HRESULT IMFSinkWriterEx_Finalize(IMFSinkWriterEx* This) {
1224    return This->lpVtbl->Finalize(This);
1225}
1226static inline HRESULT IMFSinkWriterEx_GetServiceForStream(IMFSinkWriterEx* This,DWORD index,REFGUID service,REFIID riid,void **object) {
1227    return This->lpVtbl->GetServiceForStream(This,index,service,riid,object);
1228}
1229static inline HRESULT IMFSinkWriterEx_GetStatistics(IMFSinkWriterEx* This,DWORD index,MF_SINK_WRITER_STATISTICS *stats) {
1230    return This->lpVtbl->GetStatistics(This,index,stats);
1231}
1232/*** IMFSinkWriterEx methods ***/
1233static inline HRESULT IMFSinkWriterEx_GetTransformForStream(IMFSinkWriterEx* This,DWORD index,DWORD tindex,GUID *category,IMFTransform **transform) {
1234    return This->lpVtbl->GetTransformForStream(This,index,tindex,category,transform);
1235}
1236#endif
1237#endif
1238
1239#endif
1240
1241
1242#endif  /* __IMFSinkWriterEx_INTERFACE_DEFINED__ */
1243
1244/*****************************************************************************
1245 * IMFSinkWriterEncoderConfig interface
1246 */
1247#ifndef __IMFSinkWriterEncoderConfig_INTERFACE_DEFINED__
1248#define __IMFSinkWriterEncoderConfig_INTERFACE_DEFINED__
1249
1250DEFINE_GUID(IID_IMFSinkWriterEncoderConfig, 0x17c3779e, 0x3cde, 0x4ede, 0x8c,0x60, 0x38,0x99,0xf5,0xf5,0x3a,0xd6);
1251#if defined(__cplusplus) && !defined(CINTERFACE)
1252MIDL_INTERFACE("17c3779e-3cde-4ede-8c60-3899f5f53ad6")
1253IMFSinkWriterEncoderConfig : public IUnknown
1254{
1255    virtual HRESULT STDMETHODCALLTYPE SetTargetMediaType(
1256        DWORD stream_index,
1257        IMFMediaType *media_type,
1258        IMFAttributes *encoding_parameters) = 0;
1259
1260    virtual HRESULT STDMETHODCALLTYPE PlaceEncodingParameters(
1261        DWORD stream_index,
1262        IMFAttributes *encoding_parameters) = 0;
1263
1264};
1265#ifdef __CRT_UUID_DECL
1266__CRT_UUID_DECL(IMFSinkWriterEncoderConfig, 0x17c3779e, 0x3cde, 0x4ede, 0x8c,0x60, 0x38,0x99,0xf5,0xf5,0x3a,0xd6)
1267#endif
1268#else
1269typedef struct IMFSinkWriterEncoderConfigVtbl {
1270    BEGIN_INTERFACE
1271
1272    /*** IUnknown methods ***/
1273    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1274        IMFSinkWriterEncoderConfig *This,
1275        REFIID riid,
1276        void **ppvObject);
1277
1278    ULONG (STDMETHODCALLTYPE *AddRef)(
1279        IMFSinkWriterEncoderConfig *This);
1280
1281    ULONG (STDMETHODCALLTYPE *Release)(
1282        IMFSinkWriterEncoderConfig *This);
1283
1284    /*** IMFSinkWriterEncoderConfig methods ***/
1285    HRESULT (STDMETHODCALLTYPE *SetTargetMediaType)(
1286        IMFSinkWriterEncoderConfig *This,
1287        DWORD stream_index,
1288        IMFMediaType *media_type,
1289        IMFAttributes *encoding_parameters);
1290
1291    HRESULT (STDMETHODCALLTYPE *PlaceEncodingParameters)(
1292        IMFSinkWriterEncoderConfig *This,
1293        DWORD stream_index,
1294        IMFAttributes *encoding_parameters);
1295
1296    END_INTERFACE
1297} IMFSinkWriterEncoderConfigVtbl;
1298
1299interface IMFSinkWriterEncoderConfig {
1300    CONST_VTBL IMFSinkWriterEncoderConfigVtbl* lpVtbl;
1301};
1302
1303#ifdef COBJMACROS
1304#ifndef WIDL_C_INLINE_WRAPPERS
1305/*** IUnknown methods ***/
1306#define IMFSinkWriterEncoderConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1307#define IMFSinkWriterEncoderConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
1308#define IMFSinkWriterEncoderConfig_Release(This) (This)->lpVtbl->Release(This)
1309/*** IMFSinkWriterEncoderConfig methods ***/
1310#define IMFSinkWriterEncoderConfig_SetTargetMediaType(This,stream_index,media_type,encoding_parameters) (This)->lpVtbl->SetTargetMediaType(This,stream_index,media_type,encoding_parameters)
1311#define IMFSinkWriterEncoderConfig_PlaceEncodingParameters(This,stream_index,encoding_parameters) (This)->lpVtbl->PlaceEncodingParameters(This,stream_index,encoding_parameters)
1312#else
1313/*** IUnknown methods ***/
1314static inline HRESULT IMFSinkWriterEncoderConfig_QueryInterface(IMFSinkWriterEncoderConfig* This,REFIID riid,void **ppvObject) {
1315    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1316}
1317static inline ULONG IMFSinkWriterEncoderConfig_AddRef(IMFSinkWriterEncoderConfig* This) {
1318    return This->lpVtbl->AddRef(This);
1319}
1320static inline ULONG IMFSinkWriterEncoderConfig_Release(IMFSinkWriterEncoderConfig* This) {
1321    return This->lpVtbl->Release(This);
1322}
1323/*** IMFSinkWriterEncoderConfig methods ***/
1324static inline HRESULT IMFSinkWriterEncoderConfig_SetTargetMediaType(IMFSinkWriterEncoderConfig* This,DWORD stream_index,IMFMediaType *media_type,IMFAttributes *encoding_parameters) {
1325    return This->lpVtbl->SetTargetMediaType(This,stream_index,media_type,encoding_parameters);
1326}
1327static inline HRESULT IMFSinkWriterEncoderConfig_PlaceEncodingParameters(IMFSinkWriterEncoderConfig* This,DWORD stream_index,IMFAttributes *encoding_parameters) {
1328    return This->lpVtbl->PlaceEncodingParameters(This,stream_index,encoding_parameters);
1329}
1330#endif
1331#endif
1332
1333#endif
1334
1335
1336#endif  /* __IMFSinkWriterEncoderConfig_INTERFACE_DEFINED__ */
1337
1338/*****************************************************************************
1339 * IMFSinkWriterCallback interface
1340 */
1341#ifndef __IMFSinkWriterCallback_INTERFACE_DEFINED__
1342#define __IMFSinkWriterCallback_INTERFACE_DEFINED__
1343
1344DEFINE_GUID(IID_IMFSinkWriterCallback, 0x666f76de, 0x33d2, 0x41b9, 0xa4,0x58, 0x29,0xed,0x0a,0x97,0x2c,0x58);
1345#if defined(__cplusplus) && !defined(CINTERFACE)
1346MIDL_INTERFACE("666f76de-33d2-41b9-a458-29ed0a972c58")
1347IMFSinkWriterCallback : public IUnknown
1348{
1349    virtual HRESULT STDMETHODCALLTYPE OnFinalize(
1350        HRESULT status) = 0;
1351
1352    virtual HRESULT STDMETHODCALLTYPE OnMarker(
1353        DWORD stream_index,
1354        void *context) = 0;
1355
1356};
1357#ifdef __CRT_UUID_DECL
1358__CRT_UUID_DECL(IMFSinkWriterCallback, 0x666f76de, 0x33d2, 0x41b9, 0xa4,0x58, 0x29,0xed,0x0a,0x97,0x2c,0x58)
1359#endif
1360#else
1361typedef struct IMFSinkWriterCallbackVtbl {
1362    BEGIN_INTERFACE
1363
1364    /*** IUnknown methods ***/
1365    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1366        IMFSinkWriterCallback *This,
1367        REFIID riid,
1368        void **ppvObject);
1369
1370    ULONG (STDMETHODCALLTYPE *AddRef)(
1371        IMFSinkWriterCallback *This);
1372
1373    ULONG (STDMETHODCALLTYPE *Release)(
1374        IMFSinkWriterCallback *This);
1375
1376    /*** IMFSinkWriterCallback methods ***/
1377    HRESULT (STDMETHODCALLTYPE *OnFinalize)(
1378        IMFSinkWriterCallback *This,
1379        HRESULT status);
1380
1381    HRESULT (STDMETHODCALLTYPE *OnMarker)(
1382        IMFSinkWriterCallback *This,
1383        DWORD stream_index,
1384        void *context);
1385
1386    END_INTERFACE
1387} IMFSinkWriterCallbackVtbl;
1388
1389interface IMFSinkWriterCallback {
1390    CONST_VTBL IMFSinkWriterCallbackVtbl* lpVtbl;
1391};
1392
1393#ifdef COBJMACROS
1394#ifndef WIDL_C_INLINE_WRAPPERS
1395/*** IUnknown methods ***/
1396#define IMFSinkWriterCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1397#define IMFSinkWriterCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
1398#define IMFSinkWriterCallback_Release(This) (This)->lpVtbl->Release(This)
1399/*** IMFSinkWriterCallback methods ***/
1400#define IMFSinkWriterCallback_OnFinalize(This,status) (This)->lpVtbl->OnFinalize(This,status)
1401#define IMFSinkWriterCallback_OnMarker(This,stream_index,context) (This)->lpVtbl->OnMarker(This,stream_index,context)
1402#else
1403/*** IUnknown methods ***/
1404static inline HRESULT IMFSinkWriterCallback_QueryInterface(IMFSinkWriterCallback* This,REFIID riid,void **ppvObject) {
1405    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1406}
1407static inline ULONG IMFSinkWriterCallback_AddRef(IMFSinkWriterCallback* This) {
1408    return This->lpVtbl->AddRef(This);
1409}
1410static inline ULONG IMFSinkWriterCallback_Release(IMFSinkWriterCallback* This) {
1411    return This->lpVtbl->Release(This);
1412}
1413/*** IMFSinkWriterCallback methods ***/
1414static inline HRESULT IMFSinkWriterCallback_OnFinalize(IMFSinkWriterCallback* This,HRESULT status) {
1415    return This->lpVtbl->OnFinalize(This,status);
1416}
1417static inline HRESULT IMFSinkWriterCallback_OnMarker(IMFSinkWriterCallback* This,DWORD stream_index,void *context) {
1418    return This->lpVtbl->OnMarker(This,stream_index,context);
1419}
1420#endif
1421#endif
1422
1423#endif
1424
1425
1426#endif  /* __IMFSinkWriterCallback_INTERFACE_DEFINED__ */
1427
1428/*****************************************************************************
1429 * IMFSinkWriterCallback2 interface
1430 */
1431#ifndef __IMFSinkWriterCallback2_INTERFACE_DEFINED__
1432#define __IMFSinkWriterCallback2_INTERFACE_DEFINED__
1433
1434DEFINE_GUID(IID_IMFSinkWriterCallback2, 0x2456bd58, 0xc067, 0x4513, 0x84,0xfe, 0x8d,0x0c,0x88,0xff,0xdc,0x61);
1435#if defined(__cplusplus) && !defined(CINTERFACE)
1436MIDL_INTERFACE("2456bd58-c067-4513-84fe-8d0c88ffdc61")
1437IMFSinkWriterCallback2 : public IMFSinkWriterCallback
1438{
1439    virtual HRESULT STDMETHODCALLTYPE OnTransformChange(
1440        ) = 0;
1441
1442    virtual HRESULT STDMETHODCALLTYPE OnStreamError(
1443        DWORD stream_index,
1444        HRESULT status) = 0;
1445
1446};
1447#ifdef __CRT_UUID_DECL
1448__CRT_UUID_DECL(IMFSinkWriterCallback2, 0x2456bd58, 0xc067, 0x4513, 0x84,0xfe, 0x8d,0x0c,0x88,0xff,0xdc,0x61)
1449#endif
1450#else
1451typedef struct IMFSinkWriterCallback2Vtbl {
1452    BEGIN_INTERFACE
1453
1454    /*** IUnknown methods ***/
1455    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1456        IMFSinkWriterCallback2 *This,
1457        REFIID riid,
1458        void **ppvObject);
1459
1460    ULONG (STDMETHODCALLTYPE *AddRef)(
1461        IMFSinkWriterCallback2 *This);
1462
1463    ULONG (STDMETHODCALLTYPE *Release)(
1464        IMFSinkWriterCallback2 *This);
1465
1466    /*** IMFSinkWriterCallback methods ***/
1467    HRESULT (STDMETHODCALLTYPE *OnFinalize)(
1468        IMFSinkWriterCallback2 *This,
1469        HRESULT status);
1470
1471    HRESULT (STDMETHODCALLTYPE *OnMarker)(
1472        IMFSinkWriterCallback2 *This,
1473        DWORD stream_index,
1474        void *context);
1475
1476    /*** IMFSinkWriterCallback2 methods ***/
1477    HRESULT (STDMETHODCALLTYPE *OnTransformChange)(
1478        IMFSinkWriterCallback2 *This);
1479
1480    HRESULT (STDMETHODCALLTYPE *OnStreamError)(
1481        IMFSinkWriterCallback2 *This,
1482        DWORD stream_index,
1483        HRESULT status);
1484
1485    END_INTERFACE
1486} IMFSinkWriterCallback2Vtbl;
1487
1488interface IMFSinkWriterCallback2 {
1489    CONST_VTBL IMFSinkWriterCallback2Vtbl* lpVtbl;
1490};
1491
1492#ifdef COBJMACROS
1493#ifndef WIDL_C_INLINE_WRAPPERS
1494/*** IUnknown methods ***/
1495#define IMFSinkWriterCallback2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1496#define IMFSinkWriterCallback2_AddRef(This) (This)->lpVtbl->AddRef(This)
1497#define IMFSinkWriterCallback2_Release(This) (This)->lpVtbl->Release(This)
1498/*** IMFSinkWriterCallback methods ***/
1499#define IMFSinkWriterCallback2_OnFinalize(This,status) (This)->lpVtbl->OnFinalize(This,status)
1500#define IMFSinkWriterCallback2_OnMarker(This,stream_index,context) (This)->lpVtbl->OnMarker(This,stream_index,context)
1501/*** IMFSinkWriterCallback2 methods ***/
1502#define IMFSinkWriterCallback2_OnTransformChange(This) (This)->lpVtbl->OnTransformChange(This)
1503#define IMFSinkWriterCallback2_OnStreamError(This,stream_index,status) (This)->lpVtbl->OnStreamError(This,stream_index,status)
1504#else
1505/*** IUnknown methods ***/
1506static inline HRESULT IMFSinkWriterCallback2_QueryInterface(IMFSinkWriterCallback2* This,REFIID riid,void **ppvObject) {
1507    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1508}
1509static inline ULONG IMFSinkWriterCallback2_AddRef(IMFSinkWriterCallback2* This) {
1510    return This->lpVtbl->AddRef(This);
1511}
1512static inline ULONG IMFSinkWriterCallback2_Release(IMFSinkWriterCallback2* This) {
1513    return This->lpVtbl->Release(This);
1514}
1515/*** IMFSinkWriterCallback methods ***/
1516static inline HRESULT IMFSinkWriterCallback2_OnFinalize(IMFSinkWriterCallback2* This,HRESULT status) {
1517    return This->lpVtbl->OnFinalize(This,status);
1518}
1519static inline HRESULT IMFSinkWriterCallback2_OnMarker(IMFSinkWriterCallback2* This,DWORD stream_index,void *context) {
1520    return This->lpVtbl->OnMarker(This,stream_index,context);
1521}
1522/*** IMFSinkWriterCallback2 methods ***/
1523static inline HRESULT IMFSinkWriterCallback2_OnTransformChange(IMFSinkWriterCallback2* This) {
1524    return This->lpVtbl->OnTransformChange(This);
1525}
1526static inline HRESULT IMFSinkWriterCallback2_OnStreamError(IMFSinkWriterCallback2* This,DWORD stream_index,HRESULT status) {
1527    return This->lpVtbl->OnStreamError(This,stream_index,status);
1528}
1529#endif
1530#endif
1531
1532#endif
1533
1534
1535#endif  /* __IMFSinkWriterCallback2_INTERFACE_DEFINED__ */
1536
1537/*****************************************************************************
1538 * IMFReadWriteClassFactory interface
1539 */
1540#ifndef __IMFReadWriteClassFactory_INTERFACE_DEFINED__
1541#define __IMFReadWriteClassFactory_INTERFACE_DEFINED__
1542
1543DEFINE_GUID(IID_IMFReadWriteClassFactory, 0xe7fe2e12, 0x661c, 0x40da, 0x92,0xf9, 0x4f,0x00,0x2a,0xb6,0x76,0x27);
1544#if defined(__cplusplus) && !defined(CINTERFACE)
1545MIDL_INTERFACE("e7fe2e12-661c-40da-92f9-4f002ab67627")
1546IMFReadWriteClassFactory : public IUnknown
1547{
1548    virtual HRESULT STDMETHODCALLTYPE CreateInstanceFromURL(
1549        REFCLSID clsid,
1550        LPCWSTR url,
1551        IMFAttributes *attributes,
1552        REFIID riid,
1553        void **object) = 0;
1554
1555    virtual HRESULT STDMETHODCALLTYPE CreateInstanceFromObject(
1556        REFCLSID clsid,
1557        IUnknown *unk,
1558        IMFAttributes *attributes,
1559        REFIID riid,
1560        void **object) = 0;
1561
1562};
1563#ifdef __CRT_UUID_DECL
1564__CRT_UUID_DECL(IMFReadWriteClassFactory, 0xe7fe2e12, 0x661c, 0x40da, 0x92,0xf9, 0x4f,0x00,0x2a,0xb6,0x76,0x27)
1565#endif
1566#else
1567typedef struct IMFReadWriteClassFactoryVtbl {
1568    BEGIN_INTERFACE
1569
1570    /*** IUnknown methods ***/
1571    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1572        IMFReadWriteClassFactory *This,
1573        REFIID riid,
1574        void **ppvObject);
1575
1576    ULONG (STDMETHODCALLTYPE *AddRef)(
1577        IMFReadWriteClassFactory *This);
1578
1579    ULONG (STDMETHODCALLTYPE *Release)(
1580        IMFReadWriteClassFactory *This);
1581
1582    /*** IMFReadWriteClassFactory methods ***/
1583    HRESULT (STDMETHODCALLTYPE *CreateInstanceFromURL)(
1584        IMFReadWriteClassFactory *This,
1585        REFCLSID clsid,
1586        LPCWSTR url,
1587        IMFAttributes *attributes,
1588        REFIID riid,
1589        void **object);
1590
1591    HRESULT (STDMETHODCALLTYPE *CreateInstanceFromObject)(
1592        IMFReadWriteClassFactory *This,
1593        REFCLSID clsid,
1594        IUnknown *unk,
1595        IMFAttributes *attributes,
1596        REFIID riid,
1597        void **object);
1598
1599    END_INTERFACE
1600} IMFReadWriteClassFactoryVtbl;
1601
1602interface IMFReadWriteClassFactory {
1603    CONST_VTBL IMFReadWriteClassFactoryVtbl* lpVtbl;
1604};
1605
1606#ifdef COBJMACROS
1607#ifndef WIDL_C_INLINE_WRAPPERS
1608/*** IUnknown methods ***/
1609#define IMFReadWriteClassFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1610#define IMFReadWriteClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
1611#define IMFReadWriteClassFactory_Release(This) (This)->lpVtbl->Release(This)
1612/*** IMFReadWriteClassFactory methods ***/
1613#define IMFReadWriteClassFactory_CreateInstanceFromURL(This,clsid,url,attributes,riid,object) (This)->lpVtbl->CreateInstanceFromURL(This,clsid,url,attributes,riid,object)
1614#define IMFReadWriteClassFactory_CreateInstanceFromObject(This,clsid,unk,attributes,riid,object) (This)->lpVtbl->CreateInstanceFromObject(This,clsid,unk,attributes,riid,object)
1615#else
1616/*** IUnknown methods ***/
1617static inline HRESULT IMFReadWriteClassFactory_QueryInterface(IMFReadWriteClassFactory* This,REFIID riid,void **ppvObject) {
1618    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1619}
1620static inline ULONG IMFReadWriteClassFactory_AddRef(IMFReadWriteClassFactory* This) {
1621    return This->lpVtbl->AddRef(This);
1622}
1623static inline ULONG IMFReadWriteClassFactory_Release(IMFReadWriteClassFactory* This) {
1624    return This->lpVtbl->Release(This);
1625}
1626/*** IMFReadWriteClassFactory methods ***/
1627static inline HRESULT IMFReadWriteClassFactory_CreateInstanceFromURL(IMFReadWriteClassFactory* This,REFCLSID clsid,LPCWSTR url,IMFAttributes *attributes,REFIID riid,void **object) {
1628    return This->lpVtbl->CreateInstanceFromURL(This,clsid,url,attributes,riid,object);
1629}
1630static inline HRESULT IMFReadWriteClassFactory_CreateInstanceFromObject(IMFReadWriteClassFactory* This,REFCLSID clsid,IUnknown *unk,IMFAttributes *attributes,REFIID riid,void **object) {
1631    return This->lpVtbl->CreateInstanceFromObject(This,clsid,unk,attributes,riid,object);
1632}
1633#endif
1634#endif
1635
1636#endif
1637
1638
1639#endif  /* __IMFReadWriteClassFactory_INTERFACE_DEFINED__ */
1640
1641HRESULT WINAPI MFCreateSinkWriterFromMediaSink(IMFMediaSink *sink, IMFAttributes *attributes,
1642        IMFSinkWriter **writer);
1643HRESULT WINAPI MFCreateSinkWriterFromURL(const WCHAR *url, IMFByteStream *bytestream,
1644        IMFAttributes *attributes, IMFSinkWriter **writer);
1645HRESULT WINAPI MFCreateSourceReaderFromByteStream(IMFByteStream *stream, IMFAttributes *attributes,
1646                                                  IMFSourceReader **reader);
1647HRESULT WINAPI MFCreateSourceReaderFromMediaSource(IMFMediaSource *source, IMFAttributes *attributes,
1648                                                   IMFSourceReader **reader);
1649HRESULT WINAPI MFCreateSourceReaderFromURL(const WCHAR *url, IMFAttributes *attributes, IMFSourceReader **reader);
1650/* Begin additional prototypes for all interfaces */
1651
1652
1653/* End additional prototypes */
1654
1655#ifdef __cplusplus
1656}
1657#endif
1658
1659#endif /* __mfreadwrite_h__ */