mmstream.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580
  1. /*** Autogenerated by WIDL 7.7 from include/mmstream.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 __mmstream_h__
  14. #define __mmstream_h__
  15. /* Forward declarations */
  16. #ifndef __IMultiMediaStream_FWD_DEFINED__
  17. #define __IMultiMediaStream_FWD_DEFINED__
  18. typedef interface IMultiMediaStream IMultiMediaStream;
  19. #ifdef __cplusplus
  20. interface IMultiMediaStream;
  21. #endif /* __cplusplus */
  22. #endif
  23. #ifndef __IMediaStream_FWD_DEFINED__
  24. #define __IMediaStream_FWD_DEFINED__
  25. typedef interface IMediaStream IMediaStream;
  26. #ifdef __cplusplus
  27. interface IMediaStream;
  28. #endif /* __cplusplus */
  29. #endif
  30. #ifndef __IStreamSample_FWD_DEFINED__
  31. #define __IStreamSample_FWD_DEFINED__
  32. typedef interface IStreamSample IStreamSample;
  33. #ifdef __cplusplus
  34. interface IStreamSample;
  35. #endif /* __cplusplus */
  36. #endif
  37. /* Headers for imported files */
  38. #include <unknwn.h>
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42. #define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)
  43. #define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x)
  44. #define MS_S_PENDING MS_SUCCESS_CODE(1)
  45. #define MS_S_NOUPDATE MS_SUCCESS_CODE(2)
  46. #define MS_S_ENDOFSTREAM MS_SUCCESS_CODE(3)
  47. #define MS_E_SAMPLEALLOC MS_ERROR_CODE(1)
  48. #define MS_E_PURPOSEID MS_ERROR_CODE(2)
  49. #define MS_E_NOSTREAM MS_ERROR_CODE(3)
  50. #define MS_E_NOSEEKING MS_ERROR_CODE(4)
  51. #define MS_E_INCOMPATIBLE MS_ERROR_CODE(5)
  52. #define MS_E_BUSY MS_ERROR_CODE(6)
  53. #define MS_E_NOTINIT MS_ERROR_CODE(7)
  54. #define MS_E_SOURCEALREADYDEFINED MS_ERROR_CODE(8)
  55. #define MS_E_INVALIDSTREAMTYPE MS_ERROR_CODE(9)
  56. #define MS_E_NOTRUNNING MS_ERROR_CODE(10)
  57. DEFINE_GUID(MSPID_PrimaryVideo, 0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);
  58. DEFINE_GUID(MSPID_PrimaryAudio, 0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);
  59. #if 0
  60. typedef void *PAPCFUNC;
  61. #endif
  62. typedef LONGLONG STREAM_TIME;
  63. typedef GUID MSPID;
  64. typedef REFGUID REFMSPID;
  65. typedef enum __WIDL_mmstream_generated_name_0000000C {
  66. STREAMTYPE_READ = 0,
  67. STREAMTYPE_WRITE = 1,
  68. STREAMTYPE_TRANSFORM = 2
  69. } STREAM_TYPE;
  70. typedef enum __WIDL_mmstream_generated_name_0000000D {
  71. STREAMSTATE_STOP = 0,
  72. STREAMSTATE_RUN = 1
  73. } STREAM_STATE;
  74. typedef enum __WIDL_mmstream_generated_name_0000000E {
  75. COMPSTAT_NOUPDATEOK = 0x1,
  76. COMPSTAT_WAIT = 0x2,
  77. COMPSTAT_ABORT = 0x4
  78. } COMPLETION_STATUS_FLAGS;
  79. enum {
  80. MMSSF_HASCLOCK = 0x1,
  81. MMSSF_SUPPORTSEEK = 0x2,
  82. MMSSF_ASYNCHRONOUS = 0x4
  83. };
  84. enum {
  85. SSUPDATE_ASYNC = 0x1,
  86. SSUPDATE_CONTINUOUS = 0x2
  87. };
  88. #ifndef __IMultiMediaStream_FWD_DEFINED__
  89. #define __IMultiMediaStream_FWD_DEFINED__
  90. typedef interface IMultiMediaStream IMultiMediaStream;
  91. #ifdef __cplusplus
  92. interface IMultiMediaStream;
  93. #endif /* __cplusplus */
  94. #endif
  95. #ifndef __IMediaStream_FWD_DEFINED__
  96. #define __IMediaStream_FWD_DEFINED__
  97. typedef interface IMediaStream IMediaStream;
  98. #ifdef __cplusplus
  99. interface IMediaStream;
  100. #endif /* __cplusplus */
  101. #endif
  102. #ifndef __IStreamSample_FWD_DEFINED__
  103. #define __IStreamSample_FWD_DEFINED__
  104. typedef interface IStreamSample IStreamSample;
  105. #ifdef __cplusplus
  106. interface IStreamSample;
  107. #endif /* __cplusplus */
  108. #endif
  109. /*****************************************************************************
  110. * IMultiMediaStream interface
  111. */
  112. #ifndef __IMultiMediaStream_INTERFACE_DEFINED__
  113. #define __IMultiMediaStream_INTERFACE_DEFINED__
  114. DEFINE_GUID(IID_IMultiMediaStream, 0xb502d1bc, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
  115. #if defined(__cplusplus) && !defined(CINTERFACE)
  116. MIDL_INTERFACE("b502d1bc-9a57-11d0-8fde-00c04fd9189d")
  117. IMultiMediaStream : public IUnknown
  118. {
  119. virtual HRESULT STDMETHODCALLTYPE GetInformation(
  120. DWORD *pdwFlags,
  121. STREAM_TYPE *pStreamType) = 0;
  122. virtual HRESULT STDMETHODCALLTYPE GetMediaStream(
  123. REFMSPID idPurpose,
  124. IMediaStream **ppMediaStream) = 0;
  125. virtual HRESULT STDMETHODCALLTYPE EnumMediaStreams(
  126. LONG Index,
  127. IMediaStream **ppMediaStream) = 0;
  128. virtual HRESULT STDMETHODCALLTYPE GetState(
  129. STREAM_STATE *pCurrentState) = 0;
  130. virtual HRESULT STDMETHODCALLTYPE SetState(
  131. STREAM_STATE NewState) = 0;
  132. virtual HRESULT STDMETHODCALLTYPE GetTime(
  133. STREAM_TIME *pCurrentTime) = 0;
  134. virtual HRESULT STDMETHODCALLTYPE GetDuration(
  135. STREAM_TIME *pDuration) = 0;
  136. virtual HRESULT STDMETHODCALLTYPE Seek(
  137. STREAM_TIME SeekTime) = 0;
  138. virtual HRESULT STDMETHODCALLTYPE GetEndOfStreamEventHandle(
  139. HANDLE *phEOS) = 0;
  140. };
  141. #ifdef __CRT_UUID_DECL
  142. __CRT_UUID_DECL(IMultiMediaStream, 0xb502d1bc, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d)
  143. #endif
  144. #else
  145. typedef struct IMultiMediaStreamVtbl {
  146. BEGIN_INTERFACE
  147. /*** IUnknown methods ***/
  148. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  149. IMultiMediaStream *This,
  150. REFIID riid,
  151. void **ppvObject);
  152. ULONG (STDMETHODCALLTYPE *AddRef)(
  153. IMultiMediaStream *This);
  154. ULONG (STDMETHODCALLTYPE *Release)(
  155. IMultiMediaStream *This);
  156. /*** IMultiMediaStream methods ***/
  157. HRESULT (STDMETHODCALLTYPE *GetInformation)(
  158. IMultiMediaStream *This,
  159. DWORD *pdwFlags,
  160. STREAM_TYPE *pStreamType);
  161. HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
  162. IMultiMediaStream *This,
  163. REFMSPID idPurpose,
  164. IMediaStream **ppMediaStream);
  165. HRESULT (STDMETHODCALLTYPE *EnumMediaStreams)(
  166. IMultiMediaStream *This,
  167. LONG Index,
  168. IMediaStream **ppMediaStream);
  169. HRESULT (STDMETHODCALLTYPE *GetState)(
  170. IMultiMediaStream *This,
  171. STREAM_STATE *pCurrentState);
  172. HRESULT (STDMETHODCALLTYPE *SetState)(
  173. IMultiMediaStream *This,
  174. STREAM_STATE NewState);
  175. HRESULT (STDMETHODCALLTYPE *GetTime)(
  176. IMultiMediaStream *This,
  177. STREAM_TIME *pCurrentTime);
  178. HRESULT (STDMETHODCALLTYPE *GetDuration)(
  179. IMultiMediaStream *This,
  180. STREAM_TIME *pDuration);
  181. HRESULT (STDMETHODCALLTYPE *Seek)(
  182. IMultiMediaStream *This,
  183. STREAM_TIME SeekTime);
  184. HRESULT (STDMETHODCALLTYPE *GetEndOfStreamEventHandle)(
  185. IMultiMediaStream *This,
  186. HANDLE *phEOS);
  187. END_INTERFACE
  188. } IMultiMediaStreamVtbl;
  189. interface IMultiMediaStream {
  190. CONST_VTBL IMultiMediaStreamVtbl* lpVtbl;
  191. };
  192. #ifdef COBJMACROS
  193. #ifndef WIDL_C_INLINE_WRAPPERS
  194. /*** IUnknown methods ***/
  195. #define IMultiMediaStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  196. #define IMultiMediaStream_AddRef(This) (This)->lpVtbl->AddRef(This)
  197. #define IMultiMediaStream_Release(This) (This)->lpVtbl->Release(This)
  198. /*** IMultiMediaStream methods ***/
  199. #define IMultiMediaStream_GetInformation(This,pdwFlags,pStreamType) (This)->lpVtbl->GetInformation(This,pdwFlags,pStreamType)
  200. #define IMultiMediaStream_GetMediaStream(This,idPurpose,ppMediaStream) (This)->lpVtbl->GetMediaStream(This,idPurpose,ppMediaStream)
  201. #define IMultiMediaStream_EnumMediaStreams(This,Index,ppMediaStream) (This)->lpVtbl->EnumMediaStreams(This,Index,ppMediaStream)
  202. #define IMultiMediaStream_GetState(This,pCurrentState) (This)->lpVtbl->GetState(This,pCurrentState)
  203. #define IMultiMediaStream_SetState(This,NewState) (This)->lpVtbl->SetState(This,NewState)
  204. #define IMultiMediaStream_GetTime(This,pCurrentTime) (This)->lpVtbl->GetTime(This,pCurrentTime)
  205. #define IMultiMediaStream_GetDuration(This,pDuration) (This)->lpVtbl->GetDuration(This,pDuration)
  206. #define IMultiMediaStream_Seek(This,SeekTime) (This)->lpVtbl->Seek(This,SeekTime)
  207. #define IMultiMediaStream_GetEndOfStreamEventHandle(This,phEOS) (This)->lpVtbl->GetEndOfStreamEventHandle(This,phEOS)
  208. #else
  209. /*** IUnknown methods ***/
  210. static FORCEINLINE HRESULT IMultiMediaStream_QueryInterface(IMultiMediaStream* This,REFIID riid,void **ppvObject) {
  211. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  212. }
  213. static FORCEINLINE ULONG IMultiMediaStream_AddRef(IMultiMediaStream* This) {
  214. return This->lpVtbl->AddRef(This);
  215. }
  216. static FORCEINLINE ULONG IMultiMediaStream_Release(IMultiMediaStream* This) {
  217. return This->lpVtbl->Release(This);
  218. }
  219. /*** IMultiMediaStream methods ***/
  220. static FORCEINLINE HRESULT IMultiMediaStream_GetInformation(IMultiMediaStream* This,DWORD *pdwFlags,STREAM_TYPE *pStreamType) {
  221. return This->lpVtbl->GetInformation(This,pdwFlags,pStreamType);
  222. }
  223. static FORCEINLINE HRESULT IMultiMediaStream_GetMediaStream(IMultiMediaStream* This,REFMSPID idPurpose,IMediaStream **ppMediaStream) {
  224. return This->lpVtbl->GetMediaStream(This,idPurpose,ppMediaStream);
  225. }
  226. static FORCEINLINE HRESULT IMultiMediaStream_EnumMediaStreams(IMultiMediaStream* This,LONG Index,IMediaStream **ppMediaStream) {
  227. return This->lpVtbl->EnumMediaStreams(This,Index,ppMediaStream);
  228. }
  229. static FORCEINLINE HRESULT IMultiMediaStream_GetState(IMultiMediaStream* This,STREAM_STATE *pCurrentState) {
  230. return This->lpVtbl->GetState(This,pCurrentState);
  231. }
  232. static FORCEINLINE HRESULT IMultiMediaStream_SetState(IMultiMediaStream* This,STREAM_STATE NewState) {
  233. return This->lpVtbl->SetState(This,NewState);
  234. }
  235. static FORCEINLINE HRESULT IMultiMediaStream_GetTime(IMultiMediaStream* This,STREAM_TIME *pCurrentTime) {
  236. return This->lpVtbl->GetTime(This,pCurrentTime);
  237. }
  238. static FORCEINLINE HRESULT IMultiMediaStream_GetDuration(IMultiMediaStream* This,STREAM_TIME *pDuration) {
  239. return This->lpVtbl->GetDuration(This,pDuration);
  240. }
  241. static FORCEINLINE HRESULT IMultiMediaStream_Seek(IMultiMediaStream* This,STREAM_TIME SeekTime) {
  242. return This->lpVtbl->Seek(This,SeekTime);
  243. }
  244. static FORCEINLINE HRESULT IMultiMediaStream_GetEndOfStreamEventHandle(IMultiMediaStream* This,HANDLE *phEOS) {
  245. return This->lpVtbl->GetEndOfStreamEventHandle(This,phEOS);
  246. }
  247. #endif
  248. #endif
  249. #endif
  250. #endif /* __IMultiMediaStream_INTERFACE_DEFINED__ */
  251. /*****************************************************************************
  252. * IMediaStream interface
  253. */
  254. #ifndef __IMediaStream_INTERFACE_DEFINED__
  255. #define __IMediaStream_INTERFACE_DEFINED__
  256. DEFINE_GUID(IID_IMediaStream, 0xb502d1bd, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
  257. #if defined(__cplusplus) && !defined(CINTERFACE)
  258. MIDL_INTERFACE("b502d1bd-9a57-11d0-8fde-00c04fd9189d")
  259. IMediaStream : public IUnknown
  260. {
  261. virtual HRESULT STDMETHODCALLTYPE GetMultiMediaStream(
  262. IMultiMediaStream **ppMultiMediaStream) = 0;
  263. virtual HRESULT STDMETHODCALLTYPE GetInformation(
  264. MSPID *pPurposeId,
  265. STREAM_TYPE *pType) = 0;
  266. virtual HRESULT STDMETHODCALLTYPE SetSameFormat(
  267. IMediaStream *pStreamThatHasDesiredFormat,
  268. DWORD dwFlags) = 0;
  269. virtual HRESULT STDMETHODCALLTYPE AllocateSample(
  270. DWORD dwFlags,
  271. IStreamSample **ppSample) = 0;
  272. virtual HRESULT STDMETHODCALLTYPE CreateSharedSample(
  273. IStreamSample *pExistingSample,
  274. DWORD dwFlags,
  275. IStreamSample **ppNewSample) = 0;
  276. virtual HRESULT STDMETHODCALLTYPE SendEndOfStream(
  277. DWORD dwFlags) = 0;
  278. };
  279. #ifdef __CRT_UUID_DECL
  280. __CRT_UUID_DECL(IMediaStream, 0xb502d1bd, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d)
  281. #endif
  282. #else
  283. typedef struct IMediaStreamVtbl {
  284. BEGIN_INTERFACE
  285. /*** IUnknown methods ***/
  286. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  287. IMediaStream *This,
  288. REFIID riid,
  289. void **ppvObject);
  290. ULONG (STDMETHODCALLTYPE *AddRef)(
  291. IMediaStream *This);
  292. ULONG (STDMETHODCALLTYPE *Release)(
  293. IMediaStream *This);
  294. /*** IMediaStream methods ***/
  295. HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)(
  296. IMediaStream *This,
  297. IMultiMediaStream **ppMultiMediaStream);
  298. HRESULT (STDMETHODCALLTYPE *GetInformation)(
  299. IMediaStream *This,
  300. MSPID *pPurposeId,
  301. STREAM_TYPE *pType);
  302. HRESULT (STDMETHODCALLTYPE *SetSameFormat)(
  303. IMediaStream *This,
  304. IMediaStream *pStreamThatHasDesiredFormat,
  305. DWORD dwFlags);
  306. HRESULT (STDMETHODCALLTYPE *AllocateSample)(
  307. IMediaStream *This,
  308. DWORD dwFlags,
  309. IStreamSample **ppSample);
  310. HRESULT (STDMETHODCALLTYPE *CreateSharedSample)(
  311. IMediaStream *This,
  312. IStreamSample *pExistingSample,
  313. DWORD dwFlags,
  314. IStreamSample **ppNewSample);
  315. HRESULT (STDMETHODCALLTYPE *SendEndOfStream)(
  316. IMediaStream *This,
  317. DWORD dwFlags);
  318. END_INTERFACE
  319. } IMediaStreamVtbl;
  320. interface IMediaStream {
  321. CONST_VTBL IMediaStreamVtbl* lpVtbl;
  322. };
  323. #ifdef COBJMACROS
  324. #ifndef WIDL_C_INLINE_WRAPPERS
  325. /*** IUnknown methods ***/
  326. #define IMediaStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  327. #define IMediaStream_AddRef(This) (This)->lpVtbl->AddRef(This)
  328. #define IMediaStream_Release(This) (This)->lpVtbl->Release(This)
  329. /*** IMediaStream methods ***/
  330. #define IMediaStream_GetMultiMediaStream(This,ppMultiMediaStream) (This)->lpVtbl->GetMultiMediaStream(This,ppMultiMediaStream)
  331. #define IMediaStream_GetInformation(This,pPurposeId,pType) (This)->lpVtbl->GetInformation(This,pPurposeId,pType)
  332. #define IMediaStream_SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) (This)->lpVtbl->SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags)
  333. #define IMediaStream_AllocateSample(This,dwFlags,ppSample) (This)->lpVtbl->AllocateSample(This,dwFlags,ppSample)
  334. #define IMediaStream_CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) (This)->lpVtbl->CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample)
  335. #define IMediaStream_SendEndOfStream(This,dwFlags) (This)->lpVtbl->SendEndOfStream(This,dwFlags)
  336. #else
  337. /*** IUnknown methods ***/
  338. static FORCEINLINE HRESULT IMediaStream_QueryInterface(IMediaStream* This,REFIID riid,void **ppvObject) {
  339. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  340. }
  341. static FORCEINLINE ULONG IMediaStream_AddRef(IMediaStream* This) {
  342. return This->lpVtbl->AddRef(This);
  343. }
  344. static FORCEINLINE ULONG IMediaStream_Release(IMediaStream* This) {
  345. return This->lpVtbl->Release(This);
  346. }
  347. /*** IMediaStream methods ***/
  348. static FORCEINLINE HRESULT IMediaStream_GetMultiMediaStream(IMediaStream* This,IMultiMediaStream **ppMultiMediaStream) {
  349. return This->lpVtbl->GetMultiMediaStream(This,ppMultiMediaStream);
  350. }
  351. static FORCEINLINE HRESULT IMediaStream_GetInformation(IMediaStream* This,MSPID *pPurposeId,STREAM_TYPE *pType) {
  352. return This->lpVtbl->GetInformation(This,pPurposeId,pType);
  353. }
  354. static FORCEINLINE HRESULT IMediaStream_SetSameFormat(IMediaStream* This,IMediaStream *pStreamThatHasDesiredFormat,DWORD dwFlags) {
  355. return This->lpVtbl->SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags);
  356. }
  357. static FORCEINLINE HRESULT IMediaStream_AllocateSample(IMediaStream* This,DWORD dwFlags,IStreamSample **ppSample) {
  358. return This->lpVtbl->AllocateSample(This,dwFlags,ppSample);
  359. }
  360. static FORCEINLINE HRESULT IMediaStream_CreateSharedSample(IMediaStream* This,IStreamSample *pExistingSample,DWORD dwFlags,IStreamSample **ppNewSample) {
  361. return This->lpVtbl->CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample);
  362. }
  363. static FORCEINLINE HRESULT IMediaStream_SendEndOfStream(IMediaStream* This,DWORD dwFlags) {
  364. return This->lpVtbl->SendEndOfStream(This,dwFlags);
  365. }
  366. #endif
  367. #endif
  368. #endif
  369. #endif /* __IMediaStream_INTERFACE_DEFINED__ */
  370. /*****************************************************************************
  371. * IStreamSample interface
  372. */
  373. #ifndef __IStreamSample_INTERFACE_DEFINED__
  374. #define __IStreamSample_INTERFACE_DEFINED__
  375. DEFINE_GUID(IID_IStreamSample, 0xb502d1be, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
  376. #if defined(__cplusplus) && !defined(CINTERFACE)
  377. MIDL_INTERFACE("b502d1be-9a57-11d0-8fde-00c04fd9189d")
  378. IStreamSample : public IUnknown
  379. {
  380. virtual HRESULT STDMETHODCALLTYPE GetMediaStream(
  381. IMediaStream **ppMediaStream) = 0;
  382. virtual HRESULT STDMETHODCALLTYPE GetSampleTimes(
  383. STREAM_TIME *pStartTime,
  384. STREAM_TIME *pEndTime,
  385. STREAM_TIME *pCurrentTime) = 0;
  386. virtual HRESULT STDMETHODCALLTYPE SetSampleTimes(
  387. const STREAM_TIME *pStartTime,
  388. const STREAM_TIME *pEndTime) = 0;
  389. virtual HRESULT STDMETHODCALLTYPE Update(
  390. DWORD dwFlags,
  391. HANDLE hEvent,
  392. PAPCFUNC pfnAPC,
  393. DWORD dwAPCData) = 0;
  394. virtual HRESULT STDMETHODCALLTYPE CompletionStatus(
  395. DWORD dwFlags,
  396. DWORD dwMilliseconds) = 0;
  397. };
  398. #ifdef __CRT_UUID_DECL
  399. __CRT_UUID_DECL(IStreamSample, 0xb502d1be, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d)
  400. #endif
  401. #else
  402. typedef struct IStreamSampleVtbl {
  403. BEGIN_INTERFACE
  404. /*** IUnknown methods ***/
  405. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  406. IStreamSample *This,
  407. REFIID riid,
  408. void **ppvObject);
  409. ULONG (STDMETHODCALLTYPE *AddRef)(
  410. IStreamSample *This);
  411. ULONG (STDMETHODCALLTYPE *Release)(
  412. IStreamSample *This);
  413. /*** IStreamSample methods ***/
  414. HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
  415. IStreamSample *This,
  416. IMediaStream **ppMediaStream);
  417. HRESULT (STDMETHODCALLTYPE *GetSampleTimes)(
  418. IStreamSample *This,
  419. STREAM_TIME *pStartTime,
  420. STREAM_TIME *pEndTime,
  421. STREAM_TIME *pCurrentTime);
  422. HRESULT (STDMETHODCALLTYPE *SetSampleTimes)(
  423. IStreamSample *This,
  424. const STREAM_TIME *pStartTime,
  425. const STREAM_TIME *pEndTime);
  426. HRESULT (STDMETHODCALLTYPE *Update)(
  427. IStreamSample *This,
  428. DWORD dwFlags,
  429. HANDLE hEvent,
  430. PAPCFUNC pfnAPC,
  431. DWORD dwAPCData);
  432. HRESULT (STDMETHODCALLTYPE *CompletionStatus)(
  433. IStreamSample *This,
  434. DWORD dwFlags,
  435. DWORD dwMilliseconds);
  436. END_INTERFACE
  437. } IStreamSampleVtbl;
  438. interface IStreamSample {
  439. CONST_VTBL IStreamSampleVtbl* lpVtbl;
  440. };
  441. #ifdef COBJMACROS
  442. #ifndef WIDL_C_INLINE_WRAPPERS
  443. /*** IUnknown methods ***/
  444. #define IStreamSample_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  445. #define IStreamSample_AddRef(This) (This)->lpVtbl->AddRef(This)
  446. #define IStreamSample_Release(This) (This)->lpVtbl->Release(This)
  447. /*** IStreamSample methods ***/
  448. #define IStreamSample_GetMediaStream(This,ppMediaStream) (This)->lpVtbl->GetMediaStream(This,ppMediaStream)
  449. #define IStreamSample_GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) (This)->lpVtbl->GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime)
  450. #define IStreamSample_SetSampleTimes(This,pStartTime,pEndTime) (This)->lpVtbl->SetSampleTimes(This,pStartTime,pEndTime)
  451. #define IStreamSample_Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) (This)->lpVtbl->Update(This,dwFlags,hEvent,pfnAPC,dwAPCData)
  452. #define IStreamSample_CompletionStatus(This,dwFlags,dwMilliseconds) (This)->lpVtbl->CompletionStatus(This,dwFlags,dwMilliseconds)
  453. #else
  454. /*** IUnknown methods ***/
  455. static FORCEINLINE HRESULT IStreamSample_QueryInterface(IStreamSample* This,REFIID riid,void **ppvObject) {
  456. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  457. }
  458. static FORCEINLINE ULONG IStreamSample_AddRef(IStreamSample* This) {
  459. return This->lpVtbl->AddRef(This);
  460. }
  461. static FORCEINLINE ULONG IStreamSample_Release(IStreamSample* This) {
  462. return This->lpVtbl->Release(This);
  463. }
  464. /*** IStreamSample methods ***/
  465. static FORCEINLINE HRESULT IStreamSample_GetMediaStream(IStreamSample* This,IMediaStream **ppMediaStream) {
  466. return This->lpVtbl->GetMediaStream(This,ppMediaStream);
  467. }
  468. static FORCEINLINE HRESULT IStreamSample_GetSampleTimes(IStreamSample* This,STREAM_TIME *pStartTime,STREAM_TIME *pEndTime,STREAM_TIME *pCurrentTime) {
  469. return This->lpVtbl->GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime);
  470. }
  471. static FORCEINLINE HRESULT IStreamSample_SetSampleTimes(IStreamSample* This,const STREAM_TIME *pStartTime,const STREAM_TIME *pEndTime) {
  472. return This->lpVtbl->SetSampleTimes(This,pStartTime,pEndTime);
  473. }
  474. static FORCEINLINE HRESULT IStreamSample_Update(IStreamSample* This,DWORD dwFlags,HANDLE hEvent,PAPCFUNC pfnAPC,DWORD dwAPCData) {
  475. return This->lpVtbl->Update(This,dwFlags,hEvent,pfnAPC,dwAPCData);
  476. }
  477. static FORCEINLINE HRESULT IStreamSample_CompletionStatus(IStreamSample* This,DWORD dwFlags,DWORD dwMilliseconds) {
  478. return This->lpVtbl->CompletionStatus(This,dwFlags,dwMilliseconds);
  479. }
  480. #endif
  481. #endif
  482. #endif
  483. #endif /* __IStreamSample_INTERFACE_DEFINED__ */
  484. /* Begin additional prototypes for all interfaces */
  485. /* End additional prototypes */
  486. #ifdef __cplusplus
  487. }
  488. #endif
  489. #endif /* __mmstream_h__ */