zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

mfreadwrite.h (65751B) - Raw


      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__
     23 typedef interface IMFSourceReaderCallback IMFSourceReaderCallback;
     24 #ifdef __cplusplus
     25 interface IMFSourceReaderCallback;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IMFSourceReaderCallback2_FWD_DEFINED__
     30 #define __IMFSourceReaderCallback2_FWD_DEFINED__
     31 typedef interface IMFSourceReaderCallback2 IMFSourceReaderCallback2;
     32 #ifdef __cplusplus
     33 interface IMFSourceReaderCallback2;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IMFSourceReader_FWD_DEFINED__
     38 #define __IMFSourceReader_FWD_DEFINED__
     39 typedef interface IMFSourceReader IMFSourceReader;
     40 #ifdef __cplusplus
     41 interface IMFSourceReader;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IMFSourceReaderEx_FWD_DEFINED__
     46 #define __IMFSourceReaderEx_FWD_DEFINED__
     47 typedef interface IMFSourceReaderEx IMFSourceReaderEx;
     48 #ifdef __cplusplus
     49 interface IMFSourceReaderEx;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IMFSinkWriter_FWD_DEFINED__
     54 #define __IMFSinkWriter_FWD_DEFINED__
     55 typedef interface IMFSinkWriter IMFSinkWriter;
     56 #ifdef __cplusplus
     57 interface IMFSinkWriter;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IMFSinkWriterEx_FWD_DEFINED__
     62 #define __IMFSinkWriterEx_FWD_DEFINED__
     63 typedef interface IMFSinkWriterEx IMFSinkWriterEx;
     64 #ifdef __cplusplus
     65 interface IMFSinkWriterEx;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IMFSinkWriterEncoderConfig_FWD_DEFINED__
     70 #define __IMFSinkWriterEncoderConfig_FWD_DEFINED__
     71 typedef interface IMFSinkWriterEncoderConfig IMFSinkWriterEncoderConfig;
     72 #ifdef __cplusplus
     73 interface IMFSinkWriterEncoderConfig;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IMFSinkWriterCallback_FWD_DEFINED__
     78 #define __IMFSinkWriterCallback_FWD_DEFINED__
     79 typedef interface IMFSinkWriterCallback IMFSinkWriterCallback;
     80 #ifdef __cplusplus
     81 interface IMFSinkWriterCallback;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IMFSinkWriterCallback2_FWD_DEFINED__
     86 #define __IMFSinkWriterCallback2_FWD_DEFINED__
     87 typedef interface IMFSinkWriterCallback2 IMFSinkWriterCallback2;
     88 #ifdef __cplusplus
     89 interface IMFSinkWriterCallback2;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IMFReadWriteClassFactory_FWD_DEFINED__
     94 #define __IMFReadWriteClassFactory_FWD_DEFINED__
     95 typedef interface IMFReadWriteClassFactory IMFReadWriteClassFactory;
     96 #ifdef __cplusplus
     97 interface 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
    107 extern "C" {
    108 #endif
    109 
    110 typedef enum MF_SOURCE_READER_CONTROL_FLAG {
    111     MF_SOURCE_READER_CONTROLF_DRAIN = 0x1
    112 } MF_SOURCE_READER_CONTROL_FLAG;
    113 DEFINE_ENUM_FLAG_OPERATORS(MF_SOURCE_READER_CONTROL_FLAG)
    114 enum {
    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 };
    123 typedef 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;
    132 DEFINE_ENUM_FLAG_OPERATORS(MF_SOURCE_READER_FLAG)
    133 enum {
    134     MF_SINK_WRITER_INVALID_STREAM_INDEX = 0xffffffff,
    135     MF_SINK_WRITER_ALL_STREAMS = 0xfffffffe,
    136     MF_SINK_WRITER_MEDIASINK = 0xffffffff
    137 };
    138 typedef 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;
    156 EXTERN_GUID(CLSID_MFReadWriteClassFactory,           0x48e2ed0f, 0x98c2, 0x4a37, 0xbe, 0xd5, 0x16, 0x63, 0x12, 0xdd, 0xd8, 0x3f);
    157 EXTERN_GUID(CLSID_MFSourceReader,                    0x1777133c, 0x0881, 0x411b, 0xa5, 0x77, 0xad, 0x54, 0x5f, 0x07, 0x14, 0xc4);
    158 EXTERN_GUID(CLSID_MFSinkWriter,                      0xa3bbfb17, 0x8273, 0x4e52, 0x9e, 0x0e, 0x97, 0x39, 0xdc, 0x88, 0x79, 0x90);
    159 EXTERN_GUID(MF_MEDIASINK_AUTOFINALIZE_SUPPORTED,     0x48c131be, 0x135a, 0x41cb, 0x82, 0x90, 0x03, 0x65, 0x25, 0x09, 0xc9, 0x99);
    160 EXTERN_GUID(MF_MEDIASINK_ENABLE_AUTOFINALIZE,        0x34014265, 0xcb7e, 0x4cde, 0xac, 0x7c, 0xef, 0xfd, 0x3b, 0x3c, 0x25, 0x30);
    161 EXTERN_GUID(MF_SINK_WRITER_ASYNC_CALLBACK,           0x48cb183e, 0x7b0b, 0x46f4, 0x82, 0x2e, 0x5e, 0x1d, 0x2d, 0xda, 0x43, 0x54);
    162 EXTERN_GUID(MF_SINK_WRITER_DISABLE_THROTTLING,       0x08b845d8, 0x2b74, 0x4afe, 0x9d, 0x53, 0xbe, 0x16, 0xd2, 0xd5, 0xae, 0x4f);
    163 EXTERN_GUID(MF_SINK_WRITER_D3D_MANAGER,              0xec822da2, 0xe1e9, 0x4b29, 0xa0, 0xd8, 0x56, 0x3c, 0x71, 0x9f, 0x52, 0x69);
    164 EXTERN_GUID(MF_SINK_WRITER_ENCODER_CONFIG,           0xad91cd04, 0xa7cc, 0x4ac7, 0x99, 0xb6, 0xa5, 0x7b, 0x9a, 0x4a, 0x7c, 0x70);
    165 EXTERN_GUID(MF_READWRITE_DISABLE_CONVERTERS,         0x98d5b065, 0x1374, 0x4847, 0x8d, 0x5d, 0x31, 0x52, 0x0f, 0xee, 0x71, 0x56);
    166 EXTERN_GUID(MF_READWRITE_ENABLE_AUTOFINALIZE,        0xdd7ca129, 0x8cd1, 0x4dc5, 0x9d, 0xde, 0xce, 0x16, 0x86, 0x75, 0xde, 0x61);
    167 EXTERN_GUID(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, 0xa634a91c, 0x822b, 0x41b9, 0xa4, 0x94, 0x4d, 0xe4, 0x64, 0x36, 0x12, 0xb0);
    168 EXTERN_GUID(MF_READWRITE_MMCSS_CLASS,                0x39384300, 0xd0eb, 0x40b1, 0x87, 0xa0, 0x33, 0x18, 0x87, 0x1b, 0x5a, 0x53);
    169 EXTERN_GUID(MF_READWRITE_MMCSS_PRIORITY,             0x43ad19ce, 0xf33f, 0x4ba9, 0xa5, 0x80, 0xe4, 0xcd, 0x12, 0xf2, 0xd1, 0x44);
    170 EXTERN_GUID(MF_READWRITE_MMCSS_CLASS_AUDIO,          0x430847da, 0x0890, 0x4b0e, 0x93, 0x8c, 0x05, 0x43, 0x32, 0xc5, 0x47, 0xe1);
    171 EXTERN_GUID(MF_READWRITE_MMCSS_PRIORITY_AUDIO,       0x273db885, 0x2de2, 0x4db2, 0xa6, 0xa7, 0xfd, 0xb6, 0x6f, 0xb4, 0x0b, 0x61);
    172 EXTERN_GUID(MF_READWRITE_D3D_OPTIONAL,               0x216479d9, 0x3071, 0x42ca, 0xbb, 0x6c, 0x4c, 0x22, 0x10, 0x2e, 0x1d, 0x18);
    173 EXTERN_GUID(MF_SOURCE_READER_ASYNC_CALLBACK,                     0x1e3dbeac, 0xbb43, 0x4c35, 0xb5, 0x07, 0xcd, 0x64, 0x44, 0x64, 0xc9, 0x65);
    174 EXTERN_GUID(MF_SOURCE_READER_D3D_MANAGER,                        0xec822da2, 0xe1e9, 0x4b29, 0xa0, 0xd8, 0x56, 0x3c, 0x71, 0x9f, 0x52, 0x69);
    175 EXTERN_GUID(MF_SOURCE_READER_D3D11_BIND_FLAGS,                   0x33f3197b, 0xf73a, 0x4e14, 0x8d, 0x85, 0x0e, 0x4c, 0x43, 0x68, 0x78, 0x8d);
    176 EXTERN_GUID(MF_SOURCE_READER_DISABLE_CAMERA_PLUGINS,             0x9d3365dd, 0x058f, 0x4cfb, 0x9f, 0x97, 0xb3, 0x14, 0xcc, 0x99, 0xc8, 0xad);
    177 EXTERN_GUID(MF_SOURCE_READER_DISABLE_DXVA,                       0xaa456cfd, 0x3943, 0x4a1e, 0xa7, 0x7d, 0x18, 0x38, 0xc0, 0xea, 0x2e, 0x35);
    178 EXTERN_GUID(MF_SOURCE_READER_DISCONNECT_MEDIASOURCE_ON_SHUTDOWN, 0x56b67165, 0x219e, 0x456d, 0xa2, 0x2e, 0x2d, 0x30, 0x04, 0xc7, 0xfe, 0x56);
    179 EXTERN_GUID(MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING,   0x0f81da2c, 0xb537, 0x4672, 0xa8, 0xb2, 0xa6, 0x81, 0xb1, 0x73, 0x07, 0xa3);
    180 EXTERN_GUID(MF_SOURCE_READER_ENABLE_TRANSCODE_ONLY_TRANSFORMS,   0xdfd4f008, 0xb5fd, 0x4e78, 0xae, 0x44, 0x62, 0xa1, 0xe6, 0x7b, 0xbe, 0x27);
    181 EXTERN_GUID(MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING,            0xfb394f3d, 0xccf1, 0x42ee, 0xbb, 0xb3, 0xf9, 0xb8, 0x45, 0xd5, 0x68, 0x1d);
    182 EXTERN_GUID(MF_SOURCE_READER_MEDIASOURCE_CHARACTERISTICS,        0x6d23f5c8, 0xc5d7, 0x4a9b, 0x99, 0x71, 0x5d, 0x11, 0xf8, 0xbc, 0xa8, 0x80);
    183 EXTERN_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 
    190 DEFINE_GUID(IID_IMFSourceReaderCallback, 0xdeec8d99, 0xfa1d, 0x4d82, 0x84,0xc2, 0x2c,0x89,0x69,0x94,0x48,0x67);
    191 #if defined(__cplusplus) && !defined(CINTERFACE)
    192 MIDL_INTERFACE("deec8d99-fa1d-4d82-84c2-2c8969944867")
    193 IMFSourceReaderCallback : 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
    214 typedef 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 
    250 interface 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 ***/
    266 static inline HRESULT IMFSourceReaderCallback_QueryInterface(IMFSourceReaderCallback* This,REFIID riid,void **ppvObject) {
    267     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    268 }
    269 static inline ULONG IMFSourceReaderCallback_AddRef(IMFSourceReaderCallback* This) {
    270     return This->lpVtbl->AddRef(This);
    271 }
    272 static inline ULONG IMFSourceReaderCallback_Release(IMFSourceReaderCallback* This) {
    273     return This->lpVtbl->Release(This);
    274 }
    275 /*** IMFSourceReaderCallback methods ***/
    276 static 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 }
    279 static inline HRESULT IMFSourceReaderCallback_OnFlush(IMFSourceReaderCallback* This,DWORD stream_index) {
    280     return This->lpVtbl->OnFlush(This,stream_index);
    281 }
    282 static 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 
    299 DEFINE_GUID(IID_IMFSourceReaderCallback2, 0xcf839fe6, 0x8c2a, 0x4dd2, 0xb6,0xea, 0xc2,0x2d,0x69,0x61,0xaf,0x05);
    300 #if defined(__cplusplus) && !defined(CINTERFACE)
    301 MIDL_INTERFACE("cf839fe6-8c2a-4dd2-b6ea-c22d6961af05")
    302 IMFSourceReaderCallback2 : 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
    316 typedef 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 
    361 interface 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 ***/
    380 static inline HRESULT IMFSourceReaderCallback2_QueryInterface(IMFSourceReaderCallback2* This,REFIID riid,void **ppvObject) {
    381     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    382 }
    383 static inline ULONG IMFSourceReaderCallback2_AddRef(IMFSourceReaderCallback2* This) {
    384     return This->lpVtbl->AddRef(This);
    385 }
    386 static inline ULONG IMFSourceReaderCallback2_Release(IMFSourceReaderCallback2* This) {
    387     return This->lpVtbl->Release(This);
    388 }
    389 /*** IMFSourceReaderCallback methods ***/
    390 static 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 }
    393 static inline HRESULT IMFSourceReaderCallback2_OnFlush(IMFSourceReaderCallback2* This,DWORD stream_index) {
    394     return This->lpVtbl->OnFlush(This,stream_index);
    395 }
    396 static inline HRESULT IMFSourceReaderCallback2_OnEvent(IMFSourceReaderCallback2* This,DWORD stream_index,IMFMediaEvent *event) {
    397     return This->lpVtbl->OnEvent(This,stream_index,event);
    398 }
    399 /*** IMFSourceReaderCallback2 methods ***/
    400 static inline HRESULT IMFSourceReaderCallback2_OnTransformChange(IMFSourceReaderCallback2* This) {
    401     return This->lpVtbl->OnTransformChange(This);
    402 }
    403 static 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__
    416 typedef interface IMFMediaSource IMFMediaSource;
    417 #ifdef __cplusplus
    418 interface IMFMediaSource;
    419 #endif /* __cplusplus */
    420 #endif
    421 
    422 /*****************************************************************************
    423  * IMFSourceReader interface
    424  */
    425 #ifndef __IMFSourceReader_INTERFACE_DEFINED__
    426 #define __IMFSourceReader_INTERFACE_DEFINED__
    427 
    428 DEFINE_GUID(IID_IMFSourceReader, 0x70ae66f2, 0xc809, 0x4e4f, 0x89,0x15, 0xbd,0xcb,0x40,0x6b,0x79,0x93);
    429 #if defined(__cplusplus) && !defined(CINTERFACE)
    430 MIDL_INTERFACE("70ae66f2-c809-4e4f-8915-bdcb406b7993")
    431 IMFSourceReader : 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
    486 typedef 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 
    563 interface 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 ***/
    586 static inline HRESULT IMFSourceReader_QueryInterface(IMFSourceReader* This,REFIID riid,void **ppvObject) {
    587     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    588 }
    589 static inline ULONG IMFSourceReader_AddRef(IMFSourceReader* This) {
    590     return This->lpVtbl->AddRef(This);
    591 }
    592 static inline ULONG IMFSourceReader_Release(IMFSourceReader* This) {
    593     return This->lpVtbl->Release(This);
    594 }
    595 /*** IMFSourceReader methods ***/
    596 static inline HRESULT IMFSourceReader_GetStreamSelection(IMFSourceReader* This,DWORD index,WINBOOL *selected) {
    597     return This->lpVtbl->GetStreamSelection(This,index,selected);
    598 }
    599 static inline HRESULT IMFSourceReader_SetStreamSelection(IMFSourceReader* This,DWORD index,WINBOOL selected) {
    600     return This->lpVtbl->SetStreamSelection(This,index,selected);
    601 }
    602 static inline HRESULT IMFSourceReader_GetNativeMediaType(IMFSourceReader* This,DWORD index,DWORD typeindex,IMFMediaType **type) {
    603     return This->lpVtbl->GetNativeMediaType(This,index,typeindex,type);
    604 }
    605 static inline HRESULT IMFSourceReader_GetCurrentMediaType(IMFSourceReader* This,DWORD index,IMFMediaType **type) {
    606     return This->lpVtbl->GetCurrentMediaType(This,index,type);
    607 }
    608 static inline HRESULT IMFSourceReader_SetCurrentMediaType(IMFSourceReader* This,DWORD index,DWORD *reserved,IMFMediaType *type) {
    609     return This->lpVtbl->SetCurrentMediaType(This,index,reserved,type);
    610 }
    611 static inline HRESULT IMFSourceReader_SetCurrentPosition(IMFSourceReader* This,REFGUID format,REFPROPVARIANT position) {
    612     return This->lpVtbl->SetCurrentPosition(This,format,position);
    613 }
    614 static 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 }
    617 static inline HRESULT IMFSourceReader_Flush(IMFSourceReader* This,DWORD index) {
    618     return This->lpVtbl->Flush(This,index);
    619 }
    620 static 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 }
    623 static 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 
    640 DEFINE_GUID(IID_IMFSourceReaderEx, 0x7b981cf0, 0x560e, 0x4116, 0x98,0x75, 0xb0,0x99,0x89,0x5f,0x23,0xd7);
    641 #if defined(__cplusplus) && !defined(CINTERFACE)
    642 MIDL_INTERFACE("7b981cf0-560e-4116-9875-b099895f23d7")
    643 IMFSourceReaderEx : 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
    668 typedef 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 
    768 interface 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 ***/
    796 static inline HRESULT IMFSourceReaderEx_QueryInterface(IMFSourceReaderEx* This,REFIID riid,void **ppvObject) {
    797     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    798 }
    799 static inline ULONG IMFSourceReaderEx_AddRef(IMFSourceReaderEx* This) {
    800     return This->lpVtbl->AddRef(This);
    801 }
    802 static inline ULONG IMFSourceReaderEx_Release(IMFSourceReaderEx* This) {
    803     return This->lpVtbl->Release(This);
    804 }
    805 /*** IMFSourceReader methods ***/
    806 static inline HRESULT IMFSourceReaderEx_GetStreamSelection(IMFSourceReaderEx* This,DWORD index,WINBOOL *selected) {
    807     return This->lpVtbl->GetStreamSelection(This,index,selected);
    808 }
    809 static inline HRESULT IMFSourceReaderEx_SetStreamSelection(IMFSourceReaderEx* This,DWORD index,WINBOOL selected) {
    810     return This->lpVtbl->SetStreamSelection(This,index,selected);
    811 }
    812 static inline HRESULT IMFSourceReaderEx_GetNativeMediaType(IMFSourceReaderEx* This,DWORD index,DWORD typeindex,IMFMediaType **type) {
    813     return This->lpVtbl->GetNativeMediaType(This,index,typeindex,type);
    814 }
    815 static inline HRESULT IMFSourceReaderEx_GetCurrentMediaType(IMFSourceReaderEx* This,DWORD index,IMFMediaType **type) {
    816     return This->lpVtbl->GetCurrentMediaType(This,index,type);
    817 }
    818 static inline HRESULT IMFSourceReaderEx_SetCurrentMediaType(IMFSourceReaderEx* This,DWORD index,DWORD *reserved,IMFMediaType *type) {
    819     return This->lpVtbl->SetCurrentMediaType(This,index,reserved,type);
    820 }
    821 static inline HRESULT IMFSourceReaderEx_SetCurrentPosition(IMFSourceReaderEx* This,REFGUID format,REFPROPVARIANT position) {
    822     return This->lpVtbl->SetCurrentPosition(This,format,position);
    823 }
    824 static 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 }
    827 static inline HRESULT IMFSourceReaderEx_Flush(IMFSourceReaderEx* This,DWORD index) {
    828     return This->lpVtbl->Flush(This,index);
    829 }
    830 static 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 }
    833 static 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 ***/
    837 static 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 }
    840 static inline HRESULT IMFSourceReaderEx_AddTransformForStream(IMFSourceReaderEx* This,DWORD stream_index,IUnknown *transform) {
    841     return This->lpVtbl->AddTransformForStream(This,stream_index,transform);
    842 }
    843 static inline HRESULT IMFSourceReaderEx_RemoveAllTransformsForStream(IMFSourceReaderEx* This,DWORD stream_index) {
    844     return This->lpVtbl->RemoveAllTransformsForStream(This,stream_index);
    845 }
    846 static 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 
    863 DEFINE_GUID(IID_IMFSinkWriter, 0x3137f1cd, 0xfe5e, 0x4805, 0xa5,0xd8, 0xfb,0x47,0x74,0x48,0xcb,0x3d);
    864 #if defined(__cplusplus) && !defined(CINTERFACE)
    865 MIDL_INTERFACE("3137f1cd-fe5e-4805-a5d8-fb477448cb3d")
    866 IMFSinkWriter : 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
    916 typedef 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 
    987 interface 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 ***/
   1011 static inline HRESULT IMFSinkWriter_QueryInterface(IMFSinkWriter* This,REFIID riid,void **ppvObject) {
   1012     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1013 }
   1014 static inline ULONG IMFSinkWriter_AddRef(IMFSinkWriter* This) {
   1015     return This->lpVtbl->AddRef(This);
   1016 }
   1017 static inline ULONG IMFSinkWriter_Release(IMFSinkWriter* This) {
   1018     return This->lpVtbl->Release(This);
   1019 }
   1020 /*** IMFSinkWriter methods ***/
   1021 static inline HRESULT IMFSinkWriter_AddStream(IMFSinkWriter* This,IMFMediaType *type,DWORD *index) {
   1022     return This->lpVtbl->AddStream(This,type,index);
   1023 }
   1024 static inline HRESULT IMFSinkWriter_SetInputMediaType(IMFSinkWriter* This,DWORD index,IMFMediaType *type,IMFAttributes *parameters) {
   1025     return This->lpVtbl->SetInputMediaType(This,index,type,parameters);
   1026 }
   1027 static inline HRESULT IMFSinkWriter_BeginWriting(IMFSinkWriter* This) {
   1028     return This->lpVtbl->BeginWriting(This);
   1029 }
   1030 static inline HRESULT IMFSinkWriter_WriteSample(IMFSinkWriter* This,DWORD index,IMFSample *sample) {
   1031     return This->lpVtbl->WriteSample(This,index,sample);
   1032 }
   1033 static inline HRESULT IMFSinkWriter_SendStreamTick(IMFSinkWriter* This,DWORD index,LONGLONG timestamp) {
   1034     return This->lpVtbl->SendStreamTick(This,index,timestamp);
   1035 }
   1036 static inline HRESULT IMFSinkWriter_PlaceMarker(IMFSinkWriter* This,DWORD index,void *context) {
   1037     return This->lpVtbl->PlaceMarker(This,index,context);
   1038 }
   1039 static inline HRESULT IMFSinkWriter_NotifyEndOfSegment(IMFSinkWriter* This,DWORD index) {
   1040     return This->lpVtbl->NotifyEndOfSegment(This,index);
   1041 }
   1042 static inline HRESULT IMFSinkWriter_Flush(IMFSinkWriter* This,DWORD index) {
   1043     return This->lpVtbl->Flush(This,index);
   1044 }
   1045 static inline HRESULT IMFSinkWriter_Finalize(IMFSinkWriter* This) {
   1046     return This->lpVtbl->Finalize(This);
   1047 }
   1048 static 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 }
   1051 static 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 
   1068 DEFINE_GUID(IID_IMFSinkWriterEx, 0x588d72ab, 0x5bc1, 0x496a, 0x87,0x14, 0xb7,0x06,0x17,0x14,0x1b,0x25);
   1069 #if defined(__cplusplus) && !defined(CINTERFACE)
   1070 MIDL_INTERFACE("588d72ab-5bc1-496a-8714-b70617141b25")
   1071 IMFSinkWriterEx : 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
   1084 typedef 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 
   1163 interface 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 ***/
   1189 static inline HRESULT IMFSinkWriterEx_QueryInterface(IMFSinkWriterEx* This,REFIID riid,void **ppvObject) {
   1190     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1191 }
   1192 static inline ULONG IMFSinkWriterEx_AddRef(IMFSinkWriterEx* This) {
   1193     return This->lpVtbl->AddRef(This);
   1194 }
   1195 static inline ULONG IMFSinkWriterEx_Release(IMFSinkWriterEx* This) {
   1196     return This->lpVtbl->Release(This);
   1197 }
   1198 /*** IMFSinkWriter methods ***/
   1199 static inline HRESULT IMFSinkWriterEx_AddStream(IMFSinkWriterEx* This,IMFMediaType *type,DWORD *index) {
   1200     return This->lpVtbl->AddStream(This,type,index);
   1201 }
   1202 static inline HRESULT IMFSinkWriterEx_SetInputMediaType(IMFSinkWriterEx* This,DWORD index,IMFMediaType *type,IMFAttributes *parameters) {
   1203     return This->lpVtbl->SetInputMediaType(This,index,type,parameters);
   1204 }
   1205 static inline HRESULT IMFSinkWriterEx_BeginWriting(IMFSinkWriterEx* This) {
   1206     return This->lpVtbl->BeginWriting(This);
   1207 }
   1208 static inline HRESULT IMFSinkWriterEx_WriteSample(IMFSinkWriterEx* This,DWORD index,IMFSample *sample) {
   1209     return This->lpVtbl->WriteSample(This,index,sample);
   1210 }
   1211 static inline HRESULT IMFSinkWriterEx_SendStreamTick(IMFSinkWriterEx* This,DWORD index,LONGLONG timestamp) {
   1212     return This->lpVtbl->SendStreamTick(This,index,timestamp);
   1213 }
   1214 static inline HRESULT IMFSinkWriterEx_PlaceMarker(IMFSinkWriterEx* This,DWORD index,void *context) {
   1215     return This->lpVtbl->PlaceMarker(This,index,context);
   1216 }
   1217 static inline HRESULT IMFSinkWriterEx_NotifyEndOfSegment(IMFSinkWriterEx* This,DWORD index) {
   1218     return This->lpVtbl->NotifyEndOfSegment(This,index);
   1219 }
   1220 static inline HRESULT IMFSinkWriterEx_Flush(IMFSinkWriterEx* This,DWORD index) {
   1221     return This->lpVtbl->Flush(This,index);
   1222 }
   1223 static inline HRESULT IMFSinkWriterEx_Finalize(IMFSinkWriterEx* This) {
   1224     return This->lpVtbl->Finalize(This);
   1225 }
   1226 static 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 }
   1229 static 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 ***/
   1233 static 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 
   1250 DEFINE_GUID(IID_IMFSinkWriterEncoderConfig, 0x17c3779e, 0x3cde, 0x4ede, 0x8c,0x60, 0x38,0x99,0xf5,0xf5,0x3a,0xd6);
   1251 #if defined(__cplusplus) && !defined(CINTERFACE)
   1252 MIDL_INTERFACE("17c3779e-3cde-4ede-8c60-3899f5f53ad6")
   1253 IMFSinkWriterEncoderConfig : 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
   1269 typedef 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 
   1299 interface 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 ***/
   1314 static inline HRESULT IMFSinkWriterEncoderConfig_QueryInterface(IMFSinkWriterEncoderConfig* This,REFIID riid,void **ppvObject) {
   1315     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1316 }
   1317 static inline ULONG IMFSinkWriterEncoderConfig_AddRef(IMFSinkWriterEncoderConfig* This) {
   1318     return This->lpVtbl->AddRef(This);
   1319 }
   1320 static inline ULONG IMFSinkWriterEncoderConfig_Release(IMFSinkWriterEncoderConfig* This) {
   1321     return This->lpVtbl->Release(This);
   1322 }
   1323 /*** IMFSinkWriterEncoderConfig methods ***/
   1324 static 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 }
   1327 static 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 
   1344 DEFINE_GUID(IID_IMFSinkWriterCallback, 0x666f76de, 0x33d2, 0x41b9, 0xa4,0x58, 0x29,0xed,0x0a,0x97,0x2c,0x58);
   1345 #if defined(__cplusplus) && !defined(CINTERFACE)
   1346 MIDL_INTERFACE("666f76de-33d2-41b9-a458-29ed0a972c58")
   1347 IMFSinkWriterCallback : 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
   1361 typedef 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 
   1389 interface 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 ***/
   1404 static inline HRESULT IMFSinkWriterCallback_QueryInterface(IMFSinkWriterCallback* This,REFIID riid,void **ppvObject) {
   1405     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1406 }
   1407 static inline ULONG IMFSinkWriterCallback_AddRef(IMFSinkWriterCallback* This) {
   1408     return This->lpVtbl->AddRef(This);
   1409 }
   1410 static inline ULONG IMFSinkWriterCallback_Release(IMFSinkWriterCallback* This) {
   1411     return This->lpVtbl->Release(This);
   1412 }
   1413 /*** IMFSinkWriterCallback methods ***/
   1414 static inline HRESULT IMFSinkWriterCallback_OnFinalize(IMFSinkWriterCallback* This,HRESULT status) {
   1415     return This->lpVtbl->OnFinalize(This,status);
   1416 }
   1417 static 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 
   1434 DEFINE_GUID(IID_IMFSinkWriterCallback2, 0x2456bd58, 0xc067, 0x4513, 0x84,0xfe, 0x8d,0x0c,0x88,0xff,0xdc,0x61);
   1435 #if defined(__cplusplus) && !defined(CINTERFACE)
   1436 MIDL_INTERFACE("2456bd58-c067-4513-84fe-8d0c88ffdc61")
   1437 IMFSinkWriterCallback2 : 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
   1451 typedef 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 
   1488 interface 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 ***/
   1506 static inline HRESULT IMFSinkWriterCallback2_QueryInterface(IMFSinkWriterCallback2* This,REFIID riid,void **ppvObject) {
   1507     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1508 }
   1509 static inline ULONG IMFSinkWriterCallback2_AddRef(IMFSinkWriterCallback2* This) {
   1510     return This->lpVtbl->AddRef(This);
   1511 }
   1512 static inline ULONG IMFSinkWriterCallback2_Release(IMFSinkWriterCallback2* This) {
   1513     return This->lpVtbl->Release(This);
   1514 }
   1515 /*** IMFSinkWriterCallback methods ***/
   1516 static inline HRESULT IMFSinkWriterCallback2_OnFinalize(IMFSinkWriterCallback2* This,HRESULT status) {
   1517     return This->lpVtbl->OnFinalize(This,status);
   1518 }
   1519 static inline HRESULT IMFSinkWriterCallback2_OnMarker(IMFSinkWriterCallback2* This,DWORD stream_index,void *context) {
   1520     return This->lpVtbl->OnMarker(This,stream_index,context);
   1521 }
   1522 /*** IMFSinkWriterCallback2 methods ***/
   1523 static inline HRESULT IMFSinkWriterCallback2_OnTransformChange(IMFSinkWriterCallback2* This) {
   1524     return This->lpVtbl->OnTransformChange(This);
   1525 }
   1526 static 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 
   1543 DEFINE_GUID(IID_IMFReadWriteClassFactory, 0xe7fe2e12, 0x661c, 0x40da, 0x92,0xf9, 0x4f,0x00,0x2a,0xb6,0x76,0x27);
   1544 #if defined(__cplusplus) && !defined(CINTERFACE)
   1545 MIDL_INTERFACE("e7fe2e12-661c-40da-92f9-4f002ab67627")
   1546 IMFReadWriteClassFactory : 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
   1567 typedef 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 
   1602 interface 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 ***/
   1617 static inline HRESULT IMFReadWriteClassFactory_QueryInterface(IMFReadWriteClassFactory* This,REFIID riid,void **ppvObject) {
   1618     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1619 }
   1620 static inline ULONG IMFReadWriteClassFactory_AddRef(IMFReadWriteClassFactory* This) {
   1621     return This->lpVtbl->AddRef(This);
   1622 }
   1623 static inline ULONG IMFReadWriteClassFactory_Release(IMFReadWriteClassFactory* This) {
   1624     return This->lpVtbl->Release(This);
   1625 }
   1626 /*** IMFReadWriteClassFactory methods ***/
   1627 static 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 }
   1630 static 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 
   1641 HRESULT WINAPI MFCreateSinkWriterFromMediaSink(IMFMediaSink *sink, IMFAttributes *attributes,
   1642         IMFSinkWriter **writer);
   1643 HRESULT WINAPI MFCreateSinkWriterFromURL(const WCHAR *url, IMFByteStream *bytestream,
   1644         IMFAttributes *attributes, IMFSinkWriter **writer);
   1645 HRESULT WINAPI MFCreateSourceReaderFromByteStream(IMFByteStream *stream, IMFAttributes *attributes,
   1646                                                   IMFSourceReader **reader);
   1647 HRESULT WINAPI MFCreateSourceReaderFromMediaSource(IMFMediaSource *source, IMFAttributes *attributes,
   1648                                                    IMFSourceReader **reader);
   1649 HRESULT 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__ */