mediaobj.h 36 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025
  1. /*** Autogenerated by WIDL 7.7 from include/mediaobj.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 __mediaobj_h__
  14. #define __mediaobj_h__
  15. /* Forward declarations */
  16. #ifndef __IEnumDMO_FWD_DEFINED__
  17. #define __IEnumDMO_FWD_DEFINED__
  18. typedef interface IEnumDMO IEnumDMO;
  19. #ifdef __cplusplus
  20. interface IEnumDMO;
  21. #endif /* __cplusplus */
  22. #endif
  23. #ifndef __IMediaBuffer_FWD_DEFINED__
  24. #define __IMediaBuffer_FWD_DEFINED__
  25. typedef interface IMediaBuffer IMediaBuffer;
  26. #ifdef __cplusplus
  27. interface IMediaBuffer;
  28. #endif /* __cplusplus */
  29. #endif
  30. #ifndef __IMediaObject_FWD_DEFINED__
  31. #define __IMediaObject_FWD_DEFINED__
  32. typedef interface IMediaObject IMediaObject;
  33. #ifdef __cplusplus
  34. interface IMediaObject;
  35. #endif /* __cplusplus */
  36. #endif
  37. #ifndef __IMediaObjectInPlace_FWD_DEFINED__
  38. #define __IMediaObjectInPlace_FWD_DEFINED__
  39. typedef interface IMediaObjectInPlace IMediaObjectInPlace;
  40. #ifdef __cplusplus
  41. interface IMediaObjectInPlace;
  42. #endif /* __cplusplus */
  43. #endif
  44. #ifndef __IDMOQualityControl_FWD_DEFINED__
  45. #define __IDMOQualityControl_FWD_DEFINED__
  46. typedef interface IDMOQualityControl IDMOQualityControl;
  47. #ifdef __cplusplus
  48. interface IDMOQualityControl;
  49. #endif /* __cplusplus */
  50. #endif
  51. #ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__
  52. #define __IDMOVideoOutputOptimizations_FWD_DEFINED__
  53. typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations;
  54. #ifdef __cplusplus
  55. interface IDMOVideoOutputOptimizations;
  56. #endif /* __cplusplus */
  57. #endif
  58. /* Headers for imported files */
  59. #include <unknwn.h>
  60. #include <objidl.h>
  61. #include <strmif.h>
  62. #ifdef __cplusplus
  63. extern "C" {
  64. #endif
  65. typedef struct _DMOMediaType {
  66. GUID majortype;
  67. GUID subtype;
  68. WINBOOL bFixedSizeSamples;
  69. WINBOOL bTemporalCompression;
  70. ULONG lSampleSize;
  71. GUID formattype;
  72. IUnknown *pUnk;
  73. ULONG cbFormat;
  74. BYTE *pbFormat;
  75. } DMO_MEDIA_TYPE;
  76. /*****************************************************************************
  77. * IEnumDMO interface
  78. */
  79. #ifndef __IEnumDMO_INTERFACE_DEFINED__
  80. #define __IEnumDMO_INTERFACE_DEFINED__
  81. DEFINE_GUID(IID_IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f);
  82. #if defined(__cplusplus) && !defined(CINTERFACE)
  83. MIDL_INTERFACE("2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f")
  84. IEnumDMO : public IUnknown
  85. {
  86. virtual HRESULT STDMETHODCALLTYPE Next(
  87. DWORD cItemsToFetch,
  88. CLSID *pCLSID,
  89. WCHAR **Names,
  90. DWORD *pcItemsFetched) = 0;
  91. virtual HRESULT STDMETHODCALLTYPE Skip(
  92. DWORD cItemsToSkip) = 0;
  93. virtual HRESULT STDMETHODCALLTYPE Reset(
  94. ) = 0;
  95. virtual HRESULT STDMETHODCALLTYPE Clone(
  96. IEnumDMO **ppEnum) = 0;
  97. };
  98. #ifdef __CRT_UUID_DECL
  99. __CRT_UUID_DECL(IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f)
  100. #endif
  101. #else
  102. typedef struct IEnumDMOVtbl {
  103. BEGIN_INTERFACE
  104. /*** IUnknown methods ***/
  105. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  106. IEnumDMO *This,
  107. REFIID riid,
  108. void **ppvObject);
  109. ULONG (STDMETHODCALLTYPE *AddRef)(
  110. IEnumDMO *This);
  111. ULONG (STDMETHODCALLTYPE *Release)(
  112. IEnumDMO *This);
  113. /*** IEnumDMO methods ***/
  114. HRESULT (STDMETHODCALLTYPE *Next)(
  115. IEnumDMO *This,
  116. DWORD cItemsToFetch,
  117. CLSID *pCLSID,
  118. WCHAR **Names,
  119. DWORD *pcItemsFetched);
  120. HRESULT (STDMETHODCALLTYPE *Skip)(
  121. IEnumDMO *This,
  122. DWORD cItemsToSkip);
  123. HRESULT (STDMETHODCALLTYPE *Reset)(
  124. IEnumDMO *This);
  125. HRESULT (STDMETHODCALLTYPE *Clone)(
  126. IEnumDMO *This,
  127. IEnumDMO **ppEnum);
  128. END_INTERFACE
  129. } IEnumDMOVtbl;
  130. interface IEnumDMO {
  131. CONST_VTBL IEnumDMOVtbl* lpVtbl;
  132. };
  133. #ifdef COBJMACROS
  134. #ifndef WIDL_C_INLINE_WRAPPERS
  135. /*** IUnknown methods ***/
  136. #define IEnumDMO_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  137. #define IEnumDMO_AddRef(This) (This)->lpVtbl->AddRef(This)
  138. #define IEnumDMO_Release(This) (This)->lpVtbl->Release(This)
  139. /*** IEnumDMO methods ***/
  140. #define IEnumDMO_Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched) (This)->lpVtbl->Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched)
  141. #define IEnumDMO_Skip(This,cItemsToSkip) (This)->lpVtbl->Skip(This,cItemsToSkip)
  142. #define IEnumDMO_Reset(This) (This)->lpVtbl->Reset(This)
  143. #define IEnumDMO_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
  144. #else
  145. /*** IUnknown methods ***/
  146. static FORCEINLINE HRESULT IEnumDMO_QueryInterface(IEnumDMO* This,REFIID riid,void **ppvObject) {
  147. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  148. }
  149. static FORCEINLINE ULONG IEnumDMO_AddRef(IEnumDMO* This) {
  150. return This->lpVtbl->AddRef(This);
  151. }
  152. static FORCEINLINE ULONG IEnumDMO_Release(IEnumDMO* This) {
  153. return This->lpVtbl->Release(This);
  154. }
  155. /*** IEnumDMO methods ***/
  156. static FORCEINLINE HRESULT IEnumDMO_Next(IEnumDMO* This,DWORD cItemsToFetch,CLSID *pCLSID,WCHAR **Names,DWORD *pcItemsFetched) {
  157. return This->lpVtbl->Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched);
  158. }
  159. static FORCEINLINE HRESULT IEnumDMO_Skip(IEnumDMO* This,DWORD cItemsToSkip) {
  160. return This->lpVtbl->Skip(This,cItemsToSkip);
  161. }
  162. static FORCEINLINE HRESULT IEnumDMO_Reset(IEnumDMO* This) {
  163. return This->lpVtbl->Reset(This);
  164. }
  165. static FORCEINLINE HRESULT IEnumDMO_Clone(IEnumDMO* This,IEnumDMO **ppEnum) {
  166. return This->lpVtbl->Clone(This,ppEnum);
  167. }
  168. #endif
  169. #endif
  170. #endif
  171. #endif /* __IEnumDMO_INTERFACE_DEFINED__ */
  172. /*****************************************************************************
  173. * IMediaBuffer interface
  174. */
  175. #ifndef __IMediaBuffer_INTERFACE_DEFINED__
  176. #define __IMediaBuffer_INTERFACE_DEFINED__
  177. DEFINE_GUID(IID_IMediaBuffer, 0x59eff8b9, 0x938c, 0x4a26, 0x82,0xf2, 0x95,0xcb,0x84,0xcd,0xc8,0x37);
  178. #if defined(__cplusplus) && !defined(CINTERFACE)
  179. MIDL_INTERFACE("59eff8b9-938c-4a26-82f2-95cb84cdc837")
  180. IMediaBuffer : public IUnknown
  181. {
  182. virtual HRESULT STDMETHODCALLTYPE SetLength(
  183. DWORD cbLength) = 0;
  184. virtual HRESULT STDMETHODCALLTYPE GetMaxLength(
  185. DWORD *pcbMaxLength) = 0;
  186. virtual HRESULT STDMETHODCALLTYPE GetBufferAndLength(
  187. BYTE **ppBuffer,
  188. DWORD *pcbLength) = 0;
  189. };
  190. #ifdef __CRT_UUID_DECL
  191. __CRT_UUID_DECL(IMediaBuffer, 0x59eff8b9, 0x938c, 0x4a26, 0x82,0xf2, 0x95,0xcb,0x84,0xcd,0xc8,0x37)
  192. #endif
  193. #else
  194. typedef struct IMediaBufferVtbl {
  195. BEGIN_INTERFACE
  196. /*** IUnknown methods ***/
  197. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  198. IMediaBuffer *This,
  199. REFIID riid,
  200. void **ppvObject);
  201. ULONG (STDMETHODCALLTYPE *AddRef)(
  202. IMediaBuffer *This);
  203. ULONG (STDMETHODCALLTYPE *Release)(
  204. IMediaBuffer *This);
  205. /*** IMediaBuffer methods ***/
  206. HRESULT (STDMETHODCALLTYPE *SetLength)(
  207. IMediaBuffer *This,
  208. DWORD cbLength);
  209. HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
  210. IMediaBuffer *This,
  211. DWORD *pcbMaxLength);
  212. HRESULT (STDMETHODCALLTYPE *GetBufferAndLength)(
  213. IMediaBuffer *This,
  214. BYTE **ppBuffer,
  215. DWORD *pcbLength);
  216. END_INTERFACE
  217. } IMediaBufferVtbl;
  218. interface IMediaBuffer {
  219. CONST_VTBL IMediaBufferVtbl* lpVtbl;
  220. };
  221. #ifdef COBJMACROS
  222. #ifndef WIDL_C_INLINE_WRAPPERS
  223. /*** IUnknown methods ***/
  224. #define IMediaBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  225. #define IMediaBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
  226. #define IMediaBuffer_Release(This) (This)->lpVtbl->Release(This)
  227. /*** IMediaBuffer methods ***/
  228. #define IMediaBuffer_SetLength(This,cbLength) (This)->lpVtbl->SetLength(This,cbLength)
  229. #define IMediaBuffer_GetMaxLength(This,pcbMaxLength) (This)->lpVtbl->GetMaxLength(This,pcbMaxLength)
  230. #define IMediaBuffer_GetBufferAndLength(This,ppBuffer,pcbLength) (This)->lpVtbl->GetBufferAndLength(This,ppBuffer,pcbLength)
  231. #else
  232. /*** IUnknown methods ***/
  233. static FORCEINLINE HRESULT IMediaBuffer_QueryInterface(IMediaBuffer* This,REFIID riid,void **ppvObject) {
  234. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  235. }
  236. static FORCEINLINE ULONG IMediaBuffer_AddRef(IMediaBuffer* This) {
  237. return This->lpVtbl->AddRef(This);
  238. }
  239. static FORCEINLINE ULONG IMediaBuffer_Release(IMediaBuffer* This) {
  240. return This->lpVtbl->Release(This);
  241. }
  242. /*** IMediaBuffer methods ***/
  243. static FORCEINLINE HRESULT IMediaBuffer_SetLength(IMediaBuffer* This,DWORD cbLength) {
  244. return This->lpVtbl->SetLength(This,cbLength);
  245. }
  246. static FORCEINLINE HRESULT IMediaBuffer_GetMaxLength(IMediaBuffer* This,DWORD *pcbMaxLength) {
  247. return This->lpVtbl->GetMaxLength(This,pcbMaxLength);
  248. }
  249. static FORCEINLINE HRESULT IMediaBuffer_GetBufferAndLength(IMediaBuffer* This,BYTE **ppBuffer,DWORD *pcbLength) {
  250. return This->lpVtbl->GetBufferAndLength(This,ppBuffer,pcbLength);
  251. }
  252. #endif
  253. #endif
  254. #endif
  255. #endif /* __IMediaBuffer_INTERFACE_DEFINED__ */
  256. enum _DMO_INPUT_STATUS_FLAGS {
  257. DMO_INPUT_STATUSF_ACCEPT_DATA = 0x1
  258. };
  259. enum _DMO_INPUT_DATA_BUFFER_FLAGS {
  260. DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
  261. DMO_INPUT_DATA_BUFFERF_TIME = 0x2,
  262. DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x4
  263. };
  264. enum _DMO_PROCESS_OUTPUT_FLAGS {
  265. DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x1
  266. };
  267. typedef struct _DMO_OUTPUT_DATA_BUFFER {
  268. IMediaBuffer *pBuffer;
  269. DWORD dwStatus;
  270. REFERENCE_TIME rtTimestamp;
  271. REFERENCE_TIME rtTimelength;
  272. } DMO_OUTPUT_DATA_BUFFER;
  273. typedef struct _DMO_OUTPUT_DATA_BUFFER *PDMO_OUTPUT_DATA_BUFFER;
  274. enum _DMO_INPLACE_PROCESS_FLAGS {
  275. DMO_INPLACE_NORMAL = 0x0,
  276. DMO_INPLACE_ZERO = 0x1
  277. };
  278. enum _DMO_SET_TYPE_FLAGS {
  279. DMO_SET_TYPEF_TEST_ONLY = 0x1,
  280. DMO_SET_TYPEF_CLEAR = 0x2
  281. };
  282. enum _DMO_OUTPUT_DATA_BUFFERF_FLAGS {
  283. DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
  284. DMO_OUTPUT_DATA_BUFFERF_TIME = 0x2,
  285. DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x4,
  286. DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x1000000
  287. };
  288. /*****************************************************************************
  289. * IMediaObject interface
  290. */
  291. #ifndef __IMediaObject_INTERFACE_DEFINED__
  292. #define __IMediaObject_INTERFACE_DEFINED__
  293. DEFINE_GUID(IID_IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4);
  294. #if defined(__cplusplus) && !defined(CINTERFACE)
  295. MIDL_INTERFACE("d8ad0f58-5494-4102-97c5-ec798e59bcf4")
  296. IMediaObject : public IUnknown
  297. {
  298. virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
  299. DWORD *pcInputStreams,
  300. DWORD *pcOutputStreams) = 0;
  301. virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo(
  302. DWORD dwInputStreamIndex,
  303. DWORD *pdwFlags) = 0;
  304. virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo(
  305. DWORD dwOutputStreamIndex,
  306. DWORD *pdwFlags) = 0;
  307. virtual HRESULT STDMETHODCALLTYPE GetInputType(
  308. DWORD dwInputStreamIndex,
  309. DWORD dwTypeIndex,
  310. DMO_MEDIA_TYPE *pmt) = 0;
  311. virtual HRESULT STDMETHODCALLTYPE GetOutputType(
  312. DWORD dwOutputStreamIndex,
  313. DWORD dwTypeIndex,
  314. DMO_MEDIA_TYPE *pmt) = 0;
  315. virtual HRESULT STDMETHODCALLTYPE SetInputType(
  316. DWORD dwInputStreamIndex,
  317. const DMO_MEDIA_TYPE *pmt,
  318. DWORD dwFlags) = 0;
  319. virtual HRESULT STDMETHODCALLTYPE SetOutputType(
  320. DWORD dwOutputStreamIndex,
  321. const DMO_MEDIA_TYPE *pmt,
  322. DWORD dwFlags) = 0;
  323. virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType(
  324. DWORD dwInputStreamIndex,
  325. DMO_MEDIA_TYPE *pmt) = 0;
  326. virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType(
  327. DWORD dwOutputStreamIndex,
  328. DMO_MEDIA_TYPE *pmt) = 0;
  329. virtual HRESULT STDMETHODCALLTYPE GetInputSizeInfo(
  330. DWORD dwInputStreamIndex,
  331. DWORD *pcbSize,
  332. DWORD *pcbMaxLookahead,
  333. DWORD *pcbAlignment) = 0;
  334. virtual HRESULT STDMETHODCALLTYPE GetOutputSizeInfo(
  335. DWORD dwOutputStreamIndex,
  336. DWORD *pcbSize,
  337. DWORD *pcbAlignment) = 0;
  338. virtual HRESULT STDMETHODCALLTYPE GetInputMaxLatency(
  339. DWORD dwInputStreamIndex,
  340. REFERENCE_TIME *prtMaxLatency) = 0;
  341. virtual HRESULT STDMETHODCALLTYPE SetInputMaxLatency(
  342. DWORD dwInputStreamIndex,
  343. REFERENCE_TIME rtMaxLatency) = 0;
  344. virtual HRESULT STDMETHODCALLTYPE Flush(
  345. ) = 0;
  346. virtual HRESULT STDMETHODCALLTYPE Discontinuity(
  347. DWORD dwInputStreamIndex) = 0;
  348. virtual HRESULT STDMETHODCALLTYPE AllocateStreamingResources(
  349. ) = 0;
  350. virtual HRESULT STDMETHODCALLTYPE FreeStreamingResources(
  351. ) = 0;
  352. virtual HRESULT STDMETHODCALLTYPE GetInputStatus(
  353. DWORD dwInputStreamIndex,
  354. DWORD *dwFlags) = 0;
  355. virtual HRESULT STDMETHODCALLTYPE ProcessInput(
  356. DWORD dwInputStreamIndex,
  357. IMediaBuffer *pBuffer,
  358. DWORD dwFlags,
  359. REFERENCE_TIME rtTimestamp,
  360. REFERENCE_TIME rtTimelength) = 0;
  361. virtual HRESULT STDMETHODCALLTYPE ProcessOutput(
  362. DWORD dwFlags,
  363. DWORD cOutputBufferCount,
  364. DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
  365. DWORD *pdwStatus) = 0;
  366. virtual HRESULT STDMETHODCALLTYPE Lock(
  367. LONG bLock) = 0;
  368. };
  369. #ifdef __CRT_UUID_DECL
  370. __CRT_UUID_DECL(IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4)
  371. #endif
  372. #else
  373. typedef struct IMediaObjectVtbl {
  374. BEGIN_INTERFACE
  375. /*** IUnknown methods ***/
  376. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  377. IMediaObject *This,
  378. REFIID riid,
  379. void **ppvObject);
  380. ULONG (STDMETHODCALLTYPE *AddRef)(
  381. IMediaObject *This);
  382. ULONG (STDMETHODCALLTYPE *Release)(
  383. IMediaObject *This);
  384. /*** IMediaObject methods ***/
  385. HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
  386. IMediaObject *This,
  387. DWORD *pcInputStreams,
  388. DWORD *pcOutputStreams);
  389. HRESULT (STDMETHODCALLTYPE *GetInputStreamInfo)(
  390. IMediaObject *This,
  391. DWORD dwInputStreamIndex,
  392. DWORD *pdwFlags);
  393. HRESULT (STDMETHODCALLTYPE *GetOutputStreamInfo)(
  394. IMediaObject *This,
  395. DWORD dwOutputStreamIndex,
  396. DWORD *pdwFlags);
  397. HRESULT (STDMETHODCALLTYPE *GetInputType)(
  398. IMediaObject *This,
  399. DWORD dwInputStreamIndex,
  400. DWORD dwTypeIndex,
  401. DMO_MEDIA_TYPE *pmt);
  402. HRESULT (STDMETHODCALLTYPE *GetOutputType)(
  403. IMediaObject *This,
  404. DWORD dwOutputStreamIndex,
  405. DWORD dwTypeIndex,
  406. DMO_MEDIA_TYPE *pmt);
  407. HRESULT (STDMETHODCALLTYPE *SetInputType)(
  408. IMediaObject *This,
  409. DWORD dwInputStreamIndex,
  410. const DMO_MEDIA_TYPE *pmt,
  411. DWORD dwFlags);
  412. HRESULT (STDMETHODCALLTYPE *SetOutputType)(
  413. IMediaObject *This,
  414. DWORD dwOutputStreamIndex,
  415. const DMO_MEDIA_TYPE *pmt,
  416. DWORD dwFlags);
  417. HRESULT (STDMETHODCALLTYPE *GetInputCurrentType)(
  418. IMediaObject *This,
  419. DWORD dwInputStreamIndex,
  420. DMO_MEDIA_TYPE *pmt);
  421. HRESULT (STDMETHODCALLTYPE *GetOutputCurrentType)(
  422. IMediaObject *This,
  423. DWORD dwOutputStreamIndex,
  424. DMO_MEDIA_TYPE *pmt);
  425. HRESULT (STDMETHODCALLTYPE *GetInputSizeInfo)(
  426. IMediaObject *This,
  427. DWORD dwInputStreamIndex,
  428. DWORD *pcbSize,
  429. DWORD *pcbMaxLookahead,
  430. DWORD *pcbAlignment);
  431. HRESULT (STDMETHODCALLTYPE *GetOutputSizeInfo)(
  432. IMediaObject *This,
  433. DWORD dwOutputStreamIndex,
  434. DWORD *pcbSize,
  435. DWORD *pcbAlignment);
  436. HRESULT (STDMETHODCALLTYPE *GetInputMaxLatency)(
  437. IMediaObject *This,
  438. DWORD dwInputStreamIndex,
  439. REFERENCE_TIME *prtMaxLatency);
  440. HRESULT (STDMETHODCALLTYPE *SetInputMaxLatency)(
  441. IMediaObject *This,
  442. DWORD dwInputStreamIndex,
  443. REFERENCE_TIME rtMaxLatency);
  444. HRESULT (STDMETHODCALLTYPE *Flush)(
  445. IMediaObject *This);
  446. HRESULT (STDMETHODCALLTYPE *Discontinuity)(
  447. IMediaObject *This,
  448. DWORD dwInputStreamIndex);
  449. HRESULT (STDMETHODCALLTYPE *AllocateStreamingResources)(
  450. IMediaObject *This);
  451. HRESULT (STDMETHODCALLTYPE *FreeStreamingResources)(
  452. IMediaObject *This);
  453. HRESULT (STDMETHODCALLTYPE *GetInputStatus)(
  454. IMediaObject *This,
  455. DWORD dwInputStreamIndex,
  456. DWORD *dwFlags);
  457. HRESULT (STDMETHODCALLTYPE *ProcessInput)(
  458. IMediaObject *This,
  459. DWORD dwInputStreamIndex,
  460. IMediaBuffer *pBuffer,
  461. DWORD dwFlags,
  462. REFERENCE_TIME rtTimestamp,
  463. REFERENCE_TIME rtTimelength);
  464. HRESULT (STDMETHODCALLTYPE *ProcessOutput)(
  465. IMediaObject *This,
  466. DWORD dwFlags,
  467. DWORD cOutputBufferCount,
  468. DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
  469. DWORD *pdwStatus);
  470. HRESULT (STDMETHODCALLTYPE *Lock)(
  471. IMediaObject *This,
  472. LONG bLock);
  473. END_INTERFACE
  474. } IMediaObjectVtbl;
  475. interface IMediaObject {
  476. CONST_VTBL IMediaObjectVtbl* lpVtbl;
  477. };
  478. #ifdef COBJMACROS
  479. #ifndef WIDL_C_INLINE_WRAPPERS
  480. /*** IUnknown methods ***/
  481. #define IMediaObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  482. #define IMediaObject_AddRef(This) (This)->lpVtbl->AddRef(This)
  483. #define IMediaObject_Release(This) (This)->lpVtbl->Release(This)
  484. /*** IMediaObject methods ***/
  485. #define IMediaObject_GetStreamCount(This,pcInputStreams,pcOutputStreams) (This)->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams)
  486. #define IMediaObject_GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) (This)->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags)
  487. #define IMediaObject_GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) (This)->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags)
  488. #define IMediaObject_GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt)
  489. #define IMediaObject_GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt)
  490. #define IMediaObject_SetInputType(This,dwInputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags)
  491. #define IMediaObject_SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags)
  492. #define IMediaObject_GetInputCurrentType(This,dwInputStreamIndex,pmt) (This)->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt)
  493. #define IMediaObject_GetOutputCurrentType(This,dwOutputStreamIndex,pmt) (This)->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt)
  494. #define IMediaObject_GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) (This)->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment)
  495. #define IMediaObject_GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) (This)->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment)
  496. #define IMediaObject_GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) (This)->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency)
  497. #define IMediaObject_SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) (This)->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency)
  498. #define IMediaObject_Flush(This) (This)->lpVtbl->Flush(This)
  499. #define IMediaObject_Discontinuity(This,dwInputStreamIndex) (This)->lpVtbl->Discontinuity(This,dwInputStreamIndex)
  500. #define IMediaObject_AllocateStreamingResources(This) (This)->lpVtbl->AllocateStreamingResources(This)
  501. #define IMediaObject_FreeStreamingResources(This) (This)->lpVtbl->FreeStreamingResources(This)
  502. #define IMediaObject_GetInputStatus(This,dwInputStreamIndex,dwFlags) (This)->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags)
  503. #define IMediaObject_ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) (This)->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength)
  504. #define IMediaObject_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) (This)->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus)
  505. #define IMediaObject_Lock(This,bLock) (This)->lpVtbl->Lock(This,bLock)
  506. #else
  507. /*** IUnknown methods ***/
  508. static FORCEINLINE HRESULT IMediaObject_QueryInterface(IMediaObject* This,REFIID riid,void **ppvObject) {
  509. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  510. }
  511. static FORCEINLINE ULONG IMediaObject_AddRef(IMediaObject* This) {
  512. return This->lpVtbl->AddRef(This);
  513. }
  514. static FORCEINLINE ULONG IMediaObject_Release(IMediaObject* This) {
  515. return This->lpVtbl->Release(This);
  516. }
  517. /*** IMediaObject methods ***/
  518. static FORCEINLINE HRESULT IMediaObject_GetStreamCount(IMediaObject* This,DWORD *pcInputStreams,DWORD *pcOutputStreams) {
  519. return This->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams);
  520. }
  521. static FORCEINLINE HRESULT IMediaObject_GetInputStreamInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pdwFlags) {
  522. return This->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags);
  523. }
  524. static FORCEINLINE HRESULT IMediaObject_GetOutputStreamInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pdwFlags) {
  525. return This->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags);
  526. }
  527. static FORCEINLINE HRESULT IMediaObject_GetInputType(IMediaObject* This,DWORD dwInputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) {
  528. return This->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt);
  529. }
  530. static FORCEINLINE HRESULT IMediaObject_GetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) {
  531. return This->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt);
  532. }
  533. static FORCEINLINE HRESULT IMediaObject_SetInputType(IMediaObject* This,DWORD dwInputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) {
  534. return This->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags);
  535. }
  536. static FORCEINLINE HRESULT IMediaObject_SetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) {
  537. return This->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags);
  538. }
  539. static FORCEINLINE HRESULT IMediaObject_GetInputCurrentType(IMediaObject* This,DWORD dwInputStreamIndex,DMO_MEDIA_TYPE *pmt) {
  540. return This->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt);
  541. }
  542. static FORCEINLINE HRESULT IMediaObject_GetOutputCurrentType(IMediaObject* This,DWORD dwOutputStreamIndex,DMO_MEDIA_TYPE *pmt) {
  543. return This->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt);
  544. }
  545. static FORCEINLINE HRESULT IMediaObject_GetInputSizeInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pcbSize,DWORD *pcbMaxLookahead,DWORD *pcbAlignment) {
  546. return This->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment);
  547. }
  548. static FORCEINLINE HRESULT IMediaObject_GetOutputSizeInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pcbSize,DWORD *pcbAlignment) {
  549. return This->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment);
  550. }
  551. static FORCEINLINE HRESULT IMediaObject_GetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME *prtMaxLatency) {
  552. return This->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency);
  553. }
  554. static FORCEINLINE HRESULT IMediaObject_SetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME rtMaxLatency) {
  555. return This->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency);
  556. }
  557. static FORCEINLINE HRESULT IMediaObject_Flush(IMediaObject* This) {
  558. return This->lpVtbl->Flush(This);
  559. }
  560. static FORCEINLINE HRESULT IMediaObject_Discontinuity(IMediaObject* This,DWORD dwInputStreamIndex) {
  561. return This->lpVtbl->Discontinuity(This,dwInputStreamIndex);
  562. }
  563. static FORCEINLINE HRESULT IMediaObject_AllocateStreamingResources(IMediaObject* This) {
  564. return This->lpVtbl->AllocateStreamingResources(This);
  565. }
  566. static FORCEINLINE HRESULT IMediaObject_FreeStreamingResources(IMediaObject* This) {
  567. return This->lpVtbl->FreeStreamingResources(This);
  568. }
  569. static FORCEINLINE HRESULT IMediaObject_GetInputStatus(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *dwFlags) {
  570. return This->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags);
  571. }
  572. static FORCEINLINE HRESULT IMediaObject_ProcessInput(IMediaObject* This,DWORD dwInputStreamIndex,IMediaBuffer *pBuffer,DWORD dwFlags,REFERENCE_TIME rtTimestamp,REFERENCE_TIME rtTimelength) {
  573. return This->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength);
  574. }
  575. static FORCEINLINE HRESULT IMediaObject_ProcessOutput(IMediaObject* This,DWORD dwFlags,DWORD cOutputBufferCount,DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,DWORD *pdwStatus) {
  576. return This->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus);
  577. }
  578. static FORCEINLINE HRESULT IMediaObject_Lock(IMediaObject* This,LONG bLock) {
  579. return This->lpVtbl->Lock(This,bLock);
  580. }
  581. #endif
  582. #endif
  583. #endif
  584. #endif /* __IMediaObject_INTERFACE_DEFINED__ */
  585. /*****************************************************************************
  586. * IMediaObjectInPlace interface
  587. */
  588. #ifndef __IMediaObjectInPlace_INTERFACE_DEFINED__
  589. #define __IMediaObjectInPlace_INTERFACE_DEFINED__
  590. DEFINE_GUID(IID_IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41);
  591. #if defined(__cplusplus) && !defined(CINTERFACE)
  592. MIDL_INTERFACE("651b9ad0-0fc7-4aa9-9538-d89931010741")
  593. IMediaObjectInPlace : public IUnknown
  594. {
  595. virtual HRESULT STDMETHODCALLTYPE Process(
  596. ULONG ulSize,
  597. BYTE *pData,
  598. REFERENCE_TIME refTimeStart,
  599. DWORD dwFlags) = 0;
  600. virtual HRESULT STDMETHODCALLTYPE Clone(
  601. IMediaObjectInPlace **ppMediaObject) = 0;
  602. virtual HRESULT STDMETHODCALLTYPE GetLatency(
  603. REFERENCE_TIME *pLatencyTime) = 0;
  604. };
  605. #ifdef __CRT_UUID_DECL
  606. __CRT_UUID_DECL(IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41)
  607. #endif
  608. #else
  609. typedef struct IMediaObjectInPlaceVtbl {
  610. BEGIN_INTERFACE
  611. /*** IUnknown methods ***/
  612. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  613. IMediaObjectInPlace *This,
  614. REFIID riid,
  615. void **ppvObject);
  616. ULONG (STDMETHODCALLTYPE *AddRef)(
  617. IMediaObjectInPlace *This);
  618. ULONG (STDMETHODCALLTYPE *Release)(
  619. IMediaObjectInPlace *This);
  620. /*** IMediaObjectInPlace methods ***/
  621. HRESULT (STDMETHODCALLTYPE *Process)(
  622. IMediaObjectInPlace *This,
  623. ULONG ulSize,
  624. BYTE *pData,
  625. REFERENCE_TIME refTimeStart,
  626. DWORD dwFlags);
  627. HRESULT (STDMETHODCALLTYPE *Clone)(
  628. IMediaObjectInPlace *This,
  629. IMediaObjectInPlace **ppMediaObject);
  630. HRESULT (STDMETHODCALLTYPE *GetLatency)(
  631. IMediaObjectInPlace *This,
  632. REFERENCE_TIME *pLatencyTime);
  633. END_INTERFACE
  634. } IMediaObjectInPlaceVtbl;
  635. interface IMediaObjectInPlace {
  636. CONST_VTBL IMediaObjectInPlaceVtbl* lpVtbl;
  637. };
  638. #ifdef COBJMACROS
  639. #ifndef WIDL_C_INLINE_WRAPPERS
  640. /*** IUnknown methods ***/
  641. #define IMediaObjectInPlace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  642. #define IMediaObjectInPlace_AddRef(This) (This)->lpVtbl->AddRef(This)
  643. #define IMediaObjectInPlace_Release(This) (This)->lpVtbl->Release(This)
  644. /*** IMediaObjectInPlace methods ***/
  645. #define IMediaObjectInPlace_Process(This,ulSize,pData,refTimeStart,dwFlags) (This)->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags)
  646. #define IMediaObjectInPlace_Clone(This,ppMediaObject) (This)->lpVtbl->Clone(This,ppMediaObject)
  647. #define IMediaObjectInPlace_GetLatency(This,pLatencyTime) (This)->lpVtbl->GetLatency(This,pLatencyTime)
  648. #else
  649. /*** IUnknown methods ***/
  650. static FORCEINLINE HRESULT IMediaObjectInPlace_QueryInterface(IMediaObjectInPlace* This,REFIID riid,void **ppvObject) {
  651. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  652. }
  653. static FORCEINLINE ULONG IMediaObjectInPlace_AddRef(IMediaObjectInPlace* This) {
  654. return This->lpVtbl->AddRef(This);
  655. }
  656. static FORCEINLINE ULONG IMediaObjectInPlace_Release(IMediaObjectInPlace* This) {
  657. return This->lpVtbl->Release(This);
  658. }
  659. /*** IMediaObjectInPlace methods ***/
  660. static FORCEINLINE HRESULT IMediaObjectInPlace_Process(IMediaObjectInPlace* This,ULONG ulSize,BYTE *pData,REFERENCE_TIME refTimeStart,DWORD dwFlags) {
  661. return This->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags);
  662. }
  663. static FORCEINLINE HRESULT IMediaObjectInPlace_Clone(IMediaObjectInPlace* This,IMediaObjectInPlace **ppMediaObject) {
  664. return This->lpVtbl->Clone(This,ppMediaObject);
  665. }
  666. static FORCEINLINE HRESULT IMediaObjectInPlace_GetLatency(IMediaObjectInPlace* This,REFERENCE_TIME *pLatencyTime) {
  667. return This->lpVtbl->GetLatency(This,pLatencyTime);
  668. }
  669. #endif
  670. #endif
  671. #endif
  672. #endif /* __IMediaObjectInPlace_INTERFACE_DEFINED__ */
  673. enum _DMO_QUALITY_STATUS_FLAGS {
  674. DMO_QUALITY_STATUS_ENABLED = 0x1
  675. };
  676. /*****************************************************************************
  677. * IDMOQualityControl interface
  678. */
  679. #ifndef __IDMOQualityControl_INTERFACE_DEFINED__
  680. #define __IDMOQualityControl_INTERFACE_DEFINED__
  681. DEFINE_GUID(IID_IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60);
  682. #if defined(__cplusplus) && !defined(CINTERFACE)
  683. MIDL_INTERFACE("65abea96-cf36-453f-af8a-705e98f16260")
  684. IDMOQualityControl : public IUnknown
  685. {
  686. virtual HRESULT STDMETHODCALLTYPE SetNow(
  687. REFERENCE_TIME now) = 0;
  688. virtual HRESULT STDMETHODCALLTYPE SetStatus(
  689. DWORD flags) = 0;
  690. virtual HRESULT STDMETHODCALLTYPE GetStatus(
  691. DWORD *flags) = 0;
  692. };
  693. #ifdef __CRT_UUID_DECL
  694. __CRT_UUID_DECL(IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60)
  695. #endif
  696. #else
  697. typedef struct IDMOQualityControlVtbl {
  698. BEGIN_INTERFACE
  699. /*** IUnknown methods ***/
  700. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  701. IDMOQualityControl *This,
  702. REFIID riid,
  703. void **ppvObject);
  704. ULONG (STDMETHODCALLTYPE *AddRef)(
  705. IDMOQualityControl *This);
  706. ULONG (STDMETHODCALLTYPE *Release)(
  707. IDMOQualityControl *This);
  708. /*** IDMOQualityControl methods ***/
  709. HRESULT (STDMETHODCALLTYPE *SetNow)(
  710. IDMOQualityControl *This,
  711. REFERENCE_TIME now);
  712. HRESULT (STDMETHODCALLTYPE *SetStatus)(
  713. IDMOQualityControl *This,
  714. DWORD flags);
  715. HRESULT (STDMETHODCALLTYPE *GetStatus)(
  716. IDMOQualityControl *This,
  717. DWORD *flags);
  718. END_INTERFACE
  719. } IDMOQualityControlVtbl;
  720. interface IDMOQualityControl {
  721. CONST_VTBL IDMOQualityControlVtbl* lpVtbl;
  722. };
  723. #ifdef COBJMACROS
  724. #ifndef WIDL_C_INLINE_WRAPPERS
  725. /*** IUnknown methods ***/
  726. #define IDMOQualityControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  727. #define IDMOQualityControl_AddRef(This) (This)->lpVtbl->AddRef(This)
  728. #define IDMOQualityControl_Release(This) (This)->lpVtbl->Release(This)
  729. /*** IDMOQualityControl methods ***/
  730. #define IDMOQualityControl_SetNow(This,now) (This)->lpVtbl->SetNow(This,now)
  731. #define IDMOQualityControl_SetStatus(This,flags) (This)->lpVtbl->SetStatus(This,flags)
  732. #define IDMOQualityControl_GetStatus(This,flags) (This)->lpVtbl->GetStatus(This,flags)
  733. #else
  734. /*** IUnknown methods ***/
  735. static FORCEINLINE HRESULT IDMOQualityControl_QueryInterface(IDMOQualityControl* This,REFIID riid,void **ppvObject) {
  736. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  737. }
  738. static FORCEINLINE ULONG IDMOQualityControl_AddRef(IDMOQualityControl* This) {
  739. return This->lpVtbl->AddRef(This);
  740. }
  741. static FORCEINLINE ULONG IDMOQualityControl_Release(IDMOQualityControl* This) {
  742. return This->lpVtbl->Release(This);
  743. }
  744. /*** IDMOQualityControl methods ***/
  745. static FORCEINLINE HRESULT IDMOQualityControl_SetNow(IDMOQualityControl* This,REFERENCE_TIME now) {
  746. return This->lpVtbl->SetNow(This,now);
  747. }
  748. static FORCEINLINE HRESULT IDMOQualityControl_SetStatus(IDMOQualityControl* This,DWORD flags) {
  749. return This->lpVtbl->SetStatus(This,flags);
  750. }
  751. static FORCEINLINE HRESULT IDMOQualityControl_GetStatus(IDMOQualityControl* This,DWORD *flags) {
  752. return This->lpVtbl->GetStatus(This,flags);
  753. }
  754. #endif
  755. #endif
  756. #endif
  757. #endif /* __IDMOQualityControl_INTERFACE_DEFINED__ */
  758. enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS {
  759. DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x1
  760. };
  761. /*****************************************************************************
  762. * IDMOVideoOutputOptimizations interface
  763. */
  764. #ifndef __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
  765. #define __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
  766. DEFINE_GUID(IID_IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac);
  767. #if defined(__cplusplus) && !defined(CINTERFACE)
  768. MIDL_INTERFACE("be8f4f4e-5b16-4d29-b350-7f6b5d9298ac")
  769. IDMOVideoOutputOptimizations : public IUnknown
  770. {
  771. virtual HRESULT STDMETHODCALLTYPE QueryOperationModePreferences(
  772. ULONG index,
  773. DWORD *flags) = 0;
  774. virtual HRESULT STDMETHODCALLTYPE SetOperationMode(
  775. ULONG index,
  776. DWORD flags) = 0;
  777. virtual HRESULT STDMETHODCALLTYPE GetCurrentOperationMode(
  778. ULONG index,
  779. DWORD *flags) = 0;
  780. virtual HRESULT STDMETHODCALLTYPE GetCurrentSampleRequirements(
  781. ULONG index,
  782. DWORD *flags) = 0;
  783. };
  784. #ifdef __CRT_UUID_DECL
  785. __CRT_UUID_DECL(IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac)
  786. #endif
  787. #else
  788. typedef struct IDMOVideoOutputOptimizationsVtbl {
  789. BEGIN_INTERFACE
  790. /*** IUnknown methods ***/
  791. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  792. IDMOVideoOutputOptimizations *This,
  793. REFIID riid,
  794. void **ppvObject);
  795. ULONG (STDMETHODCALLTYPE *AddRef)(
  796. IDMOVideoOutputOptimizations *This);
  797. ULONG (STDMETHODCALLTYPE *Release)(
  798. IDMOVideoOutputOptimizations *This);
  799. /*** IDMOVideoOutputOptimizations methods ***/
  800. HRESULT (STDMETHODCALLTYPE *QueryOperationModePreferences)(
  801. IDMOVideoOutputOptimizations *This,
  802. ULONG index,
  803. DWORD *flags);
  804. HRESULT (STDMETHODCALLTYPE *SetOperationMode)(
  805. IDMOVideoOutputOptimizations *This,
  806. ULONG index,
  807. DWORD flags);
  808. HRESULT (STDMETHODCALLTYPE *GetCurrentOperationMode)(
  809. IDMOVideoOutputOptimizations *This,
  810. ULONG index,
  811. DWORD *flags);
  812. HRESULT (STDMETHODCALLTYPE *GetCurrentSampleRequirements)(
  813. IDMOVideoOutputOptimizations *This,
  814. ULONG index,
  815. DWORD *flags);
  816. END_INTERFACE
  817. } IDMOVideoOutputOptimizationsVtbl;
  818. interface IDMOVideoOutputOptimizations {
  819. CONST_VTBL IDMOVideoOutputOptimizationsVtbl* lpVtbl;
  820. };
  821. #ifdef COBJMACROS
  822. #ifndef WIDL_C_INLINE_WRAPPERS
  823. /*** IUnknown methods ***/
  824. #define IDMOVideoOutputOptimizations_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  825. #define IDMOVideoOutputOptimizations_AddRef(This) (This)->lpVtbl->AddRef(This)
  826. #define IDMOVideoOutputOptimizations_Release(This) (This)->lpVtbl->Release(This)
  827. /*** IDMOVideoOutputOptimizations methods ***/
  828. #define IDMOVideoOutputOptimizations_QueryOperationModePreferences(This,index,flags) (This)->lpVtbl->QueryOperationModePreferences(This,index,flags)
  829. #define IDMOVideoOutputOptimizations_SetOperationMode(This,index,flags) (This)->lpVtbl->SetOperationMode(This,index,flags)
  830. #define IDMOVideoOutputOptimizations_GetCurrentOperationMode(This,index,flags) (This)->lpVtbl->GetCurrentOperationMode(This,index,flags)
  831. #define IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(This,index,flags) (This)->lpVtbl->GetCurrentSampleRequirements(This,index,flags)
  832. #else
  833. /*** IUnknown methods ***/
  834. static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_QueryInterface(IDMOVideoOutputOptimizations* This,REFIID riid,void **ppvObject) {
  835. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  836. }
  837. static FORCEINLINE ULONG IDMOVideoOutputOptimizations_AddRef(IDMOVideoOutputOptimizations* This) {
  838. return This->lpVtbl->AddRef(This);
  839. }
  840. static FORCEINLINE ULONG IDMOVideoOutputOptimizations_Release(IDMOVideoOutputOptimizations* This) {
  841. return This->lpVtbl->Release(This);
  842. }
  843. /*** IDMOVideoOutputOptimizations methods ***/
  844. static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_QueryOperationModePreferences(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
  845. return This->lpVtbl->QueryOperationModePreferences(This,index,flags);
  846. }
  847. static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_SetOperationMode(IDMOVideoOutputOptimizations* This,ULONG index,DWORD flags) {
  848. return This->lpVtbl->SetOperationMode(This,index,flags);
  849. }
  850. static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_GetCurrentOperationMode(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
  851. return This->lpVtbl->GetCurrentOperationMode(This,index,flags);
  852. }
  853. static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
  854. return This->lpVtbl->GetCurrentSampleRequirements(This,index,flags);
  855. }
  856. #endif
  857. #endif
  858. #endif
  859. #endif /* __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ */
  860. /* Begin additional prototypes for all interfaces */
  861. /* End additional prototypes */
  862. #ifdef __cplusplus
  863. }
  864. #endif
  865. #endif /* __mediaobj_h__ */