mfreadwrite.h 65 KB

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