mediaobj.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:45k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #pragma warning( disable: 4049 )  /* more than 64k source lines */
  2. /* this ALWAYS GENERATED file contains the definitions for the interfaces */
  3.  /* File created by MIDL compiler version 6.00.0347 */
  4. /* Compiler settings for mediaobj.idl:
  5.     Oicf, W1, Zp8, env=Win32 (32b run)
  6.     protocol : dce , ms_ext, c_ext, robust
  7.     error checks: allocation ref bounds_check enum stub_data 
  8.     VC __declspec() decoration level: 
  9.          __declspec(uuid()), __declspec(selectany), __declspec(novtable)
  10.          DECLSPEC_UUID(), MIDL_INTERFACE()
  11. */
  12. //@@MIDL_FILE_HEADING(  )
  13. /* verify that the <rpcndr.h> version is high enough to compile this file*/
  14. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  15. #define __REQUIRED_RPCNDR_H_VERSION__ 475
  16. #endif
  17. #include "rpc.h"
  18. #include "rpcndr.h"
  19. #ifndef __RPCNDR_H_VERSION__
  20. #error this stub requires an updated version of <rpcndr.h>
  21. #endif // __RPCNDR_H_VERSION__
  22. #ifndef COM_NO_WINDOWS_H
  23. #include "windows.h"
  24. #include "ole2.h"
  25. #endif /*COM_NO_WINDOWS_H*/
  26. #ifndef __mediaobj_h__
  27. #define __mediaobj_h__
  28. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  29. #pragma once
  30. #endif
  31. /* Forward Declarations */ 
  32. #ifndef __IMediaBuffer_FWD_DEFINED__
  33. #define __IMediaBuffer_FWD_DEFINED__
  34. typedef interface IMediaBuffer IMediaBuffer;
  35. #endif  /* __IMediaBuffer_FWD_DEFINED__ */
  36. #ifndef __IMediaObject_FWD_DEFINED__
  37. #define __IMediaObject_FWD_DEFINED__
  38. typedef interface IMediaObject IMediaObject;
  39. #endif  /* __IMediaObject_FWD_DEFINED__ */
  40. #ifndef __IEnumDMO_FWD_DEFINED__
  41. #define __IEnumDMO_FWD_DEFINED__
  42. typedef interface IEnumDMO IEnumDMO;
  43. #endif  /* __IEnumDMO_FWD_DEFINED__ */
  44. #ifndef __IMediaObjectInPlace_FWD_DEFINED__
  45. #define __IMediaObjectInPlace_FWD_DEFINED__
  46. typedef interface IMediaObjectInPlace IMediaObjectInPlace;
  47. #endif  /* __IMediaObjectInPlace_FWD_DEFINED__ */
  48. #ifndef __IDMOQualityControl_FWD_DEFINED__
  49. #define __IDMOQualityControl_FWD_DEFINED__
  50. typedef interface IDMOQualityControl IDMOQualityControl;
  51. #endif  /* __IDMOQualityControl_FWD_DEFINED__ */
  52. #ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__
  53. #define __IDMOVideoOutputOptimizations_FWD_DEFINED__
  54. typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations;
  55. #endif  /* __IDMOVideoOutputOptimizations_FWD_DEFINED__ */
  56. /* header files for imported files */
  57. #include "unknwn.h"
  58. #include "objidl.h"
  59. #ifdef __cplusplus
  60. extern "C"{
  61. #endif 
  62. void * __RPC_USER MIDL_user_allocate(size_t);
  63. void __RPC_USER MIDL_user_free( void * ); 
  64. /* interface __MIDL_itf_mediaobj_0000 */
  65. /* [local] */ 
  66. #ifdef __strmif_h__
  67. typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE;
  68. #else
  69. typedef struct _DMOMediaType
  70.     {
  71.     GUID majortype;
  72.     GUID subtype;
  73.     BOOL bFixedSizeSamples;
  74.     BOOL bTemporalCompression;
  75.     ULONG lSampleSize;
  76.     GUID formattype;
  77.     IUnknown *pUnk;
  78.     ULONG cbFormat;
  79.     /* [size_is] */ BYTE *pbFormat;
  80.     }  DMO_MEDIA_TYPE;
  81. typedef LONGLONG REFERENCE_TIME;
  82. #endif
  83. enum _DMO_INPUT_DATA_BUFFER_FLAGS
  84.     { DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
  85. DMO_INPUT_DATA_BUFFERF_TIME = 0x2,
  86. DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x4
  87.     } ;
  88. enum _DMO_OUTPUT_DATA_BUFFER_FLAGS
  89.     { DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
  90. DMO_OUTPUT_DATA_BUFFERF_TIME = 0x2,
  91. DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x4,
  92. DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x1000000
  93.     } ;
  94. enum _DMO_INPUT_STATUS_FLAGS
  95.     { DMO_INPUT_STATUSF_ACCEPT_DATA = 0x1
  96.     } ;
  97. enum _DMO_INPUT_STREAM_INFO_FLAGS
  98.     { DMO_INPUT_STREAMF_WHOLE_SAMPLES = 0x1,
  99. DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x2,
  100. DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x4,
  101. DMO_INPUT_STREAMF_HOLDS_BUFFERS = 0x8
  102.     } ;
  103. enum _DMO_OUTPUT_STREAM_INFO_FLAGS
  104.     { DMO_OUTPUT_STREAMF_WHOLE_SAMPLES = 0x1,
  105. DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x2,
  106. DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x4,
  107. DMO_OUTPUT_STREAMF_DISCARDABLE = 0x8,
  108. DMO_OUTPUT_STREAMF_OPTIONAL = 0x10
  109.     } ;
  110. enum _DMO_SET_TYPE_FLAGS
  111.     { DMO_SET_TYPEF_TEST_ONLY = 0x1,
  112. DMO_SET_TYPEF_CLEAR = 0x2
  113.     } ;
  114. enum _DMO_PROCESS_OUTPUT_FLAGS
  115.     { DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x1
  116.     } ;
  117. extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0000_v0_0_c_ifspec;
  118. extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0000_v0_0_s_ifspec;
  119. #ifndef __IMediaBuffer_INTERFACE_DEFINED__
  120. #define __IMediaBuffer_INTERFACE_DEFINED__
  121. /* interface IMediaBuffer */
  122. /* [uuid][object] */ 
  123. EXTERN_C const IID IID_IMediaBuffer;
  124. #if defined(__cplusplus) && !defined(CINTERFACE)
  125.     
  126.     MIDL_INTERFACE("59eff8b9-938c-4a26-82f2-95cb84cdc837")
  127.     IMediaBuffer : public IUnknown
  128.     {
  129.     public:
  130.         virtual HRESULT STDMETHODCALLTYPE SetLength( 
  131.             DWORD cbLength) = 0;
  132.         
  133.         virtual HRESULT STDMETHODCALLTYPE GetMaxLength( 
  134.             /* [out] */ DWORD *pcbMaxLength) = 0;
  135.         
  136.         virtual HRESULT STDMETHODCALLTYPE GetBufferAndLength( 
  137.             /* [out] */ BYTE **ppBuffer,
  138.             /* [out] */ DWORD *pcbLength) = 0;
  139.         
  140.     };
  141.     
  142. #else  /* C style interface */
  143.     typedef struct IMediaBufferVtbl
  144.     {
  145.         BEGIN_INTERFACE
  146.         
  147.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  148.             IMediaBuffer * This,
  149.             /* [in] */ REFIID riid,
  150.             /* [iid_is][out] */ void **ppvObject);
  151.         
  152.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  153.             IMediaBuffer * This);
  154.         
  155.         ULONG ( STDMETHODCALLTYPE *Release )( 
  156.             IMediaBuffer * This);
  157.         
  158.         HRESULT ( STDMETHODCALLTYPE *SetLength )( 
  159.             IMediaBuffer * This,
  160.             DWORD cbLength);
  161.         
  162.         HRESULT ( STDMETHODCALLTYPE *GetMaxLength )( 
  163.             IMediaBuffer * This,
  164.             /* [out] */ DWORD *pcbMaxLength);
  165.         
  166.         HRESULT ( STDMETHODCALLTYPE *GetBufferAndLength )( 
  167.             IMediaBuffer * This,
  168.             /* [out] */ BYTE **ppBuffer,
  169.             /* [out] */ DWORD *pcbLength);
  170.         
  171.         END_INTERFACE
  172.     } IMediaBufferVtbl;
  173.     interface IMediaBuffer
  174.     {
  175.         CONST_VTBL struct IMediaBufferVtbl *lpVtbl;
  176.     };
  177.     
  178. #ifdef COBJMACROS
  179. #define IMediaBuffer_QueryInterface(This,riid,ppvObject)
  180.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  181. #define IMediaBuffer_AddRef(This)
  182.     (This)->lpVtbl -> AddRef(This)
  183. #define IMediaBuffer_Release(This)
  184.     (This)->lpVtbl -> Release(This)
  185. #define IMediaBuffer_SetLength(This,cbLength)
  186.     (This)->lpVtbl -> SetLength(This,cbLength)
  187. #define IMediaBuffer_GetMaxLength(This,pcbMaxLength)
  188.     (This)->lpVtbl -> GetMaxLength(This,pcbMaxLength)
  189. #define IMediaBuffer_GetBufferAndLength(This,ppBuffer,pcbLength)
  190.     (This)->lpVtbl -> GetBufferAndLength(This,ppBuffer,pcbLength)
  191. #endif /* COBJMACROS */
  192. #endif  /* C style interface */
  193. HRESULT STDMETHODCALLTYPE IMediaBuffer_SetLength_Proxy( 
  194.     IMediaBuffer * This,
  195.     DWORD cbLength);
  196. void __RPC_STUB IMediaBuffer_SetLength_Stub(
  197.     IRpcStubBuffer *This,
  198.     IRpcChannelBuffer *_pRpcChannelBuffer,
  199.     PRPC_MESSAGE _pRpcMessage,
  200.     DWORD *_pdwStubPhase);
  201. HRESULT STDMETHODCALLTYPE IMediaBuffer_GetMaxLength_Proxy( 
  202.     IMediaBuffer * This,
  203.     /* [out] */ DWORD *pcbMaxLength);
  204. void __RPC_STUB IMediaBuffer_GetMaxLength_Stub(
  205.     IRpcStubBuffer *This,
  206.     IRpcChannelBuffer *_pRpcChannelBuffer,
  207.     PRPC_MESSAGE _pRpcMessage,
  208.     DWORD *_pdwStubPhase);
  209. HRESULT STDMETHODCALLTYPE IMediaBuffer_GetBufferAndLength_Proxy( 
  210.     IMediaBuffer * This,
  211.     /* [out] */ BYTE **ppBuffer,
  212.     /* [out] */ DWORD *pcbLength);
  213. void __RPC_STUB IMediaBuffer_GetBufferAndLength_Stub(
  214.     IRpcStubBuffer *This,
  215.     IRpcChannelBuffer *_pRpcChannelBuffer,
  216.     PRPC_MESSAGE _pRpcMessage,
  217.     DWORD *_pdwStubPhase);
  218. #endif  /* __IMediaBuffer_INTERFACE_DEFINED__ */
  219. /* interface __MIDL_itf_mediaobj_0088 */
  220. /* [local] */ 
  221. typedef struct _DMO_OUTPUT_DATA_BUFFER
  222.     {
  223.     IMediaBuffer *pBuffer;
  224.     DWORD dwStatus;
  225.     REFERENCE_TIME rtTimestamp;
  226.     REFERENCE_TIME rtTimelength;
  227.     }  DMO_OUTPUT_DATA_BUFFER;
  228. typedef struct _DMO_OUTPUT_DATA_BUFFER *PDMO_OUTPUT_DATA_BUFFER;
  229. extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0088_v0_0_c_ifspec;
  230. extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0088_v0_0_s_ifspec;
  231. #ifndef __IMediaObject_INTERFACE_DEFINED__
  232. #define __IMediaObject_INTERFACE_DEFINED__
  233. /* interface IMediaObject */
  234. /* [uuid][object] */ 
  235. EXTERN_C const IID IID_IMediaObject;
  236. #if defined(__cplusplus) && !defined(CINTERFACE)
  237.     
  238.     MIDL_INTERFACE("d8ad0f58-5494-4102-97c5-ec798e59bcf4")
  239.     IMediaObject : public IUnknown
  240.     {
  241.     public:
  242.         virtual HRESULT STDMETHODCALLTYPE GetStreamCount( 
  243.             /* [out] */ DWORD *pcInputStreams,
  244.             /* [out] */ DWORD *pcOutputStreams) = 0;
  245.         
  246.         virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo( 
  247.             DWORD dwInputStreamIndex,
  248.             /* [out] */ DWORD *pdwFlags) = 0;
  249.         
  250.         virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo( 
  251.             DWORD dwOutputStreamIndex,
  252.             /* [out] */ DWORD *pdwFlags) = 0;
  253.         
  254.         virtual HRESULT STDMETHODCALLTYPE GetInputType( 
  255.             DWORD dwInputStreamIndex,
  256.             DWORD dwTypeIndex,
  257.             /* [out] */ DMO_MEDIA_TYPE *pmt) = 0;
  258.         
  259.         virtual HRESULT STDMETHODCALLTYPE GetOutputType( 
  260.             DWORD dwOutputStreamIndex,
  261.             DWORD dwTypeIndex,
  262.             /* [out] */ DMO_MEDIA_TYPE *pmt) = 0;
  263.         
  264.         virtual HRESULT STDMETHODCALLTYPE SetInputType( 
  265.             DWORD dwInputStreamIndex,
  266.             /* [in] */ const DMO_MEDIA_TYPE *pmt,
  267.             DWORD dwFlags) = 0;
  268.         
  269.         virtual HRESULT STDMETHODCALLTYPE SetOutputType( 
  270.             DWORD dwOutputStreamIndex,
  271.             /* [in] */ const DMO_MEDIA_TYPE *pmt,
  272.             DWORD dwFlags) = 0;
  273.         
  274.         virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType( 
  275.             DWORD dwInputStreamIndex,
  276.             /* [out] */ DMO_MEDIA_TYPE *pmt) = 0;
  277.         
  278.         virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType( 
  279.             DWORD dwOutputStreamIndex,
  280.             /* [out] */ DMO_MEDIA_TYPE *pmt) = 0;
  281.         
  282.         virtual HRESULT STDMETHODCALLTYPE GetInputSizeInfo( 
  283.             DWORD dwInputStreamIndex,
  284.             /* [out] */ DWORD *pcbSize,
  285.             /* [out] */ DWORD *pcbMaxLookahead,
  286.             /* [out] */ DWORD *pcbAlignment) = 0;
  287.         
  288.         virtual HRESULT STDMETHODCALLTYPE GetOutputSizeInfo( 
  289.             DWORD dwOutputStreamIndex,
  290.             /* [out] */ DWORD *pcbSize,
  291.             /* [out] */ DWORD *pcbAlignment) = 0;
  292.         
  293.         virtual HRESULT STDMETHODCALLTYPE GetInputMaxLatency( 
  294.             DWORD dwInputStreamIndex,
  295.             /* [out] */ REFERENCE_TIME *prtMaxLatency) = 0;
  296.         
  297.         virtual HRESULT STDMETHODCALLTYPE SetInputMaxLatency( 
  298.             DWORD dwInputStreamIndex,
  299.             REFERENCE_TIME rtMaxLatency) = 0;
  300.         
  301.         virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0;
  302.         
  303.         virtual HRESULT STDMETHODCALLTYPE Discontinuity( 
  304.             DWORD dwInputStreamIndex) = 0;
  305.         
  306.         virtual HRESULT STDMETHODCALLTYPE AllocateStreamingResources( void) = 0;
  307.         
  308.         virtual HRESULT STDMETHODCALLTYPE FreeStreamingResources( void) = 0;
  309.         
  310.         virtual HRESULT STDMETHODCALLTYPE GetInputStatus( 
  311.             DWORD dwInputStreamIndex,
  312.             /* [out] */ DWORD *dwFlags) = 0;
  313.         
  314.         virtual HRESULT STDMETHODCALLTYPE ProcessInput( 
  315.             DWORD dwInputStreamIndex,
  316.             IMediaBuffer *pBuffer,
  317.             DWORD dwFlags,
  318.             REFERENCE_TIME rtTimestamp,
  319.             REFERENCE_TIME rtTimelength) = 0;
  320.         
  321.         virtual HRESULT STDMETHODCALLTYPE ProcessOutput( 
  322.             DWORD dwFlags,
  323.             DWORD cOutputBufferCount,
  324.             /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
  325.             /* [out] */ DWORD *pdwStatus) = 0;
  326.         
  327.         virtual HRESULT STDMETHODCALLTYPE Lock( 
  328.             LONG bLock) = 0;
  329.         
  330.     };
  331.     
  332. #else  /* C style interface */
  333.     typedef struct IMediaObjectVtbl
  334.     {
  335.         BEGIN_INTERFACE
  336.         
  337.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  338.             IMediaObject * This,
  339.             /* [in] */ REFIID riid,
  340.             /* [iid_is][out] */ void **ppvObject);
  341.         
  342.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  343.             IMediaObject * This);
  344.         
  345.         ULONG ( STDMETHODCALLTYPE *Release )( 
  346.             IMediaObject * This);
  347.         
  348.         HRESULT ( STDMETHODCALLTYPE *GetStreamCount )( 
  349.             IMediaObject * This,
  350.             /* [out] */ DWORD *pcInputStreams,
  351.             /* [out] */ DWORD *pcOutputStreams);
  352.         
  353.         HRESULT ( STDMETHODCALLTYPE *GetInputStreamInfo )( 
  354.             IMediaObject * This,
  355.             DWORD dwInputStreamIndex,
  356.             /* [out] */ DWORD *pdwFlags);
  357.         
  358.         HRESULT ( STDMETHODCALLTYPE *GetOutputStreamInfo )( 
  359.             IMediaObject * This,
  360.             DWORD dwOutputStreamIndex,
  361.             /* [out] */ DWORD *pdwFlags);
  362.         
  363.         HRESULT ( STDMETHODCALLTYPE *GetInputType )( 
  364.             IMediaObject * This,
  365.             DWORD dwInputStreamIndex,
  366.             DWORD dwTypeIndex,
  367.             /* [out] */ DMO_MEDIA_TYPE *pmt);
  368.         
  369.         HRESULT ( STDMETHODCALLTYPE *GetOutputType )( 
  370.             IMediaObject * This,
  371.             DWORD dwOutputStreamIndex,
  372.             DWORD dwTypeIndex,
  373.             /* [out] */ DMO_MEDIA_TYPE *pmt);
  374.         
  375.         HRESULT ( STDMETHODCALLTYPE *SetInputType )( 
  376.             IMediaObject * This,
  377.             DWORD dwInputStreamIndex,
  378.             /* [in] */ const DMO_MEDIA_TYPE *pmt,
  379.             DWORD dwFlags);
  380.         
  381.         HRESULT ( STDMETHODCALLTYPE *SetOutputType )( 
  382.             IMediaObject * This,
  383.             DWORD dwOutputStreamIndex,
  384.             /* [in] */ const DMO_MEDIA_TYPE *pmt,
  385.             DWORD dwFlags);
  386.         
  387.         HRESULT ( STDMETHODCALLTYPE *GetInputCurrentType )( 
  388.             IMediaObject * This,
  389.             DWORD dwInputStreamIndex,
  390.             /* [out] */ DMO_MEDIA_TYPE *pmt);
  391.         
  392.         HRESULT ( STDMETHODCALLTYPE *GetOutputCurrentType )( 
  393.             IMediaObject * This,
  394.             DWORD dwOutputStreamIndex,
  395.             /* [out] */ DMO_MEDIA_TYPE *pmt);
  396.         
  397.         HRESULT ( STDMETHODCALLTYPE *GetInputSizeInfo )( 
  398.             IMediaObject * This,
  399.             DWORD dwInputStreamIndex,
  400.             /* [out] */ DWORD *pcbSize,
  401.             /* [out] */ DWORD *pcbMaxLookahead,
  402.             /* [out] */ DWORD *pcbAlignment);
  403.         
  404.         HRESULT ( STDMETHODCALLTYPE *GetOutputSizeInfo )( 
  405.             IMediaObject * This,
  406.             DWORD dwOutputStreamIndex,
  407.             /* [out] */ DWORD *pcbSize,
  408.             /* [out] */ DWORD *pcbAlignment);
  409.         
  410.         HRESULT ( STDMETHODCALLTYPE *GetInputMaxLatency )( 
  411.             IMediaObject * This,
  412.             DWORD dwInputStreamIndex,
  413.             /* [out] */ REFERENCE_TIME *prtMaxLatency);
  414.         
  415.         HRESULT ( STDMETHODCALLTYPE *SetInputMaxLatency )( 
  416.             IMediaObject * This,
  417.             DWORD dwInputStreamIndex,
  418.             REFERENCE_TIME rtMaxLatency);
  419.         
  420.         HRESULT ( STDMETHODCALLTYPE *Flush )( 
  421.             IMediaObject * This);
  422.         
  423.         HRESULT ( STDMETHODCALLTYPE *Discontinuity )( 
  424.             IMediaObject * This,
  425.             DWORD dwInputStreamIndex);
  426.         
  427.         HRESULT ( STDMETHODCALLTYPE *AllocateStreamingResources )( 
  428.             IMediaObject * This);
  429.         
  430.         HRESULT ( STDMETHODCALLTYPE *FreeStreamingResources )( 
  431.             IMediaObject * This);
  432.         
  433.         HRESULT ( STDMETHODCALLTYPE *GetInputStatus )( 
  434.             IMediaObject * This,
  435.             DWORD dwInputStreamIndex,
  436.             /* [out] */ DWORD *dwFlags);
  437.         
  438.         HRESULT ( STDMETHODCALLTYPE *ProcessInput )( 
  439.             IMediaObject * This,
  440.             DWORD dwInputStreamIndex,
  441.             IMediaBuffer *pBuffer,
  442.             DWORD dwFlags,
  443.             REFERENCE_TIME rtTimestamp,
  444.             REFERENCE_TIME rtTimelength);
  445.         
  446.         HRESULT ( STDMETHODCALLTYPE *ProcessOutput )( 
  447.             IMediaObject * This,
  448.             DWORD dwFlags,
  449.             DWORD cOutputBufferCount,
  450.             /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
  451.             /* [out] */ DWORD *pdwStatus);
  452.         
  453.         HRESULT ( STDMETHODCALLTYPE *Lock )( 
  454.             IMediaObject * This,
  455.             LONG bLock);
  456.         
  457.         END_INTERFACE
  458.     } IMediaObjectVtbl;
  459.     interface IMediaObject
  460.     {
  461.         CONST_VTBL struct IMediaObjectVtbl *lpVtbl;
  462.     };
  463.     
  464. #ifdef COBJMACROS
  465. #define IMediaObject_QueryInterface(This,riid,ppvObject)
  466.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  467. #define IMediaObject_AddRef(This)
  468.     (This)->lpVtbl -> AddRef(This)
  469. #define IMediaObject_Release(This)
  470.     (This)->lpVtbl -> Release(This)
  471. #define IMediaObject_GetStreamCount(This,pcInputStreams,pcOutputStreams)
  472.     (This)->lpVtbl -> GetStreamCount(This,pcInputStreams,pcOutputStreams)
  473. #define IMediaObject_GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags)
  474.     (This)->lpVtbl -> GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags)
  475. #define IMediaObject_GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags)
  476.     (This)->lpVtbl -> GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags)
  477. #define IMediaObject_GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt)
  478.     (This)->lpVtbl -> GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt)
  479. #define IMediaObject_GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt)
  480.     (This)->lpVtbl -> GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt)
  481. #define IMediaObject_SetInputType(This,dwInputStreamIndex,pmt,dwFlags)
  482.     (This)->lpVtbl -> SetInputType(This,dwInputStreamIndex,pmt,dwFlags)
  483. #define IMediaObject_SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags)
  484.     (This)->lpVtbl -> SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags)
  485. #define IMediaObject_GetInputCurrentType(This,dwInputStreamIndex,pmt)
  486.     (This)->lpVtbl -> GetInputCurrentType(This,dwInputStreamIndex,pmt)
  487. #define IMediaObject_GetOutputCurrentType(This,dwOutputStreamIndex,pmt)
  488.     (This)->lpVtbl -> GetOutputCurrentType(This,dwOutputStreamIndex,pmt)
  489. #define IMediaObject_GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment)
  490.     (This)->lpVtbl -> GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment)
  491. #define IMediaObject_GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment)
  492.     (This)->lpVtbl -> GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment)
  493. #define IMediaObject_GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency)
  494.     (This)->lpVtbl -> GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency)
  495. #define IMediaObject_SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency)
  496.     (This)->lpVtbl -> SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency)
  497. #define IMediaObject_Flush(This)
  498.     (This)->lpVtbl -> Flush(This)
  499. #define IMediaObject_Discontinuity(This,dwInputStreamIndex)
  500.     (This)->lpVtbl -> Discontinuity(This,dwInputStreamIndex)
  501. #define IMediaObject_AllocateStreamingResources(This)
  502.     (This)->lpVtbl -> AllocateStreamingResources(This)
  503. #define IMediaObject_FreeStreamingResources(This)
  504.     (This)->lpVtbl -> FreeStreamingResources(This)
  505. #define IMediaObject_GetInputStatus(This,dwInputStreamIndex,dwFlags)
  506.     (This)->lpVtbl -> GetInputStatus(This,dwInputStreamIndex,dwFlags)
  507. #define IMediaObject_ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength)
  508.     (This)->lpVtbl -> ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength)
  509. #define IMediaObject_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus)
  510.     (This)->lpVtbl -> ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus)
  511. #define IMediaObject_Lock(This,bLock)
  512.     (This)->lpVtbl -> Lock(This,bLock)
  513. #endif /* COBJMACROS */
  514. #endif  /* C style interface */
  515. HRESULT STDMETHODCALLTYPE IMediaObject_GetStreamCount_Proxy( 
  516.     IMediaObject * This,
  517.     /* [out] */ DWORD *pcInputStreams,
  518.     /* [out] */ DWORD *pcOutputStreams);
  519. void __RPC_STUB IMediaObject_GetStreamCount_Stub(
  520.     IRpcStubBuffer *This,
  521.     IRpcChannelBuffer *_pRpcChannelBuffer,
  522.     PRPC_MESSAGE _pRpcMessage,
  523.     DWORD *_pdwStubPhase);
  524. HRESULT STDMETHODCALLTYPE IMediaObject_GetInputStreamInfo_Proxy( 
  525.     IMediaObject * This,
  526.     DWORD dwInputStreamIndex,
  527.     /* [out] */ DWORD *pdwFlags);
  528. void __RPC_STUB IMediaObject_GetInputStreamInfo_Stub(
  529.     IRpcStubBuffer *This,
  530.     IRpcChannelBuffer *_pRpcChannelBuffer,
  531.     PRPC_MESSAGE _pRpcMessage,
  532.     DWORD *_pdwStubPhase);
  533. HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputStreamInfo_Proxy( 
  534.     IMediaObject * This,
  535.     DWORD dwOutputStreamIndex,
  536.     /* [out] */ DWORD *pdwFlags);
  537. void __RPC_STUB IMediaObject_GetOutputStreamInfo_Stub(
  538.     IRpcStubBuffer *This,
  539.     IRpcChannelBuffer *_pRpcChannelBuffer,
  540.     PRPC_MESSAGE _pRpcMessage,
  541.     DWORD *_pdwStubPhase);
  542. HRESULT STDMETHODCALLTYPE IMediaObject_GetInputType_Proxy( 
  543.     IMediaObject * This,
  544.     DWORD dwInputStreamIndex,
  545.     DWORD dwTypeIndex,
  546.     /* [out] */ DMO_MEDIA_TYPE *pmt);
  547. void __RPC_STUB IMediaObject_GetInputType_Stub(
  548.     IRpcStubBuffer *This,
  549.     IRpcChannelBuffer *_pRpcChannelBuffer,
  550.     PRPC_MESSAGE _pRpcMessage,
  551.     DWORD *_pdwStubPhase);
  552. HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputType_Proxy( 
  553.     IMediaObject * This,
  554.     DWORD dwOutputStreamIndex,
  555.     DWORD dwTypeIndex,
  556.     /* [out] */ DMO_MEDIA_TYPE *pmt);
  557. void __RPC_STUB IMediaObject_GetOutputType_Stub(
  558.     IRpcStubBuffer *This,
  559.     IRpcChannelBuffer *_pRpcChannelBuffer,
  560.     PRPC_MESSAGE _pRpcMessage,
  561.     DWORD *_pdwStubPhase);
  562. HRESULT STDMETHODCALLTYPE IMediaObject_SetInputType_Proxy( 
  563.     IMediaObject * This,
  564.     DWORD dwInputStreamIndex,
  565.     /* [in] */ const DMO_MEDIA_TYPE *pmt,
  566.     DWORD dwFlags);
  567. void __RPC_STUB IMediaObject_SetInputType_Stub(
  568.     IRpcStubBuffer *This,
  569.     IRpcChannelBuffer *_pRpcChannelBuffer,
  570.     PRPC_MESSAGE _pRpcMessage,
  571.     DWORD *_pdwStubPhase);
  572. HRESULT STDMETHODCALLTYPE IMediaObject_SetOutputType_Proxy( 
  573.     IMediaObject * This,
  574.     DWORD dwOutputStreamIndex,
  575.     /* [in] */ const DMO_MEDIA_TYPE *pmt,
  576.     DWORD dwFlags);
  577. void __RPC_STUB IMediaObject_SetOutputType_Stub(
  578.     IRpcStubBuffer *This,
  579.     IRpcChannelBuffer *_pRpcChannelBuffer,
  580.     PRPC_MESSAGE _pRpcMessage,
  581.     DWORD *_pdwStubPhase);
  582. HRESULT STDMETHODCALLTYPE IMediaObject_GetInputCurrentType_Proxy( 
  583.     IMediaObject * This,
  584.     DWORD dwInputStreamIndex,
  585.     /* [out] */ DMO_MEDIA_TYPE *pmt);
  586. void __RPC_STUB IMediaObject_GetInputCurrentType_Stub(
  587.     IRpcStubBuffer *This,
  588.     IRpcChannelBuffer *_pRpcChannelBuffer,
  589.     PRPC_MESSAGE _pRpcMessage,
  590.     DWORD *_pdwStubPhase);
  591. HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputCurrentType_Proxy( 
  592.     IMediaObject * This,
  593.     DWORD dwOutputStreamIndex,
  594.     /* [out] */ DMO_MEDIA_TYPE *pmt);
  595. void __RPC_STUB IMediaObject_GetOutputCurrentType_Stub(
  596.     IRpcStubBuffer *This,
  597.     IRpcChannelBuffer *_pRpcChannelBuffer,
  598.     PRPC_MESSAGE _pRpcMessage,
  599.     DWORD *_pdwStubPhase);
  600. HRESULT STDMETHODCALLTYPE IMediaObject_GetInputSizeInfo_Proxy( 
  601.     IMediaObject * This,
  602.     DWORD dwInputStreamIndex,
  603.     /* [out] */ DWORD *pcbSize,
  604.     /* [out] */ DWORD *pcbMaxLookahead,
  605.     /* [out] */ DWORD *pcbAlignment);
  606. void __RPC_STUB IMediaObject_GetInputSizeInfo_Stub(
  607.     IRpcStubBuffer *This,
  608.     IRpcChannelBuffer *_pRpcChannelBuffer,
  609.     PRPC_MESSAGE _pRpcMessage,
  610.     DWORD *_pdwStubPhase);
  611. HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputSizeInfo_Proxy( 
  612.     IMediaObject * This,
  613.     DWORD dwOutputStreamIndex,
  614.     /* [out] */ DWORD *pcbSize,
  615.     /* [out] */ DWORD *pcbAlignment);
  616. void __RPC_STUB IMediaObject_GetOutputSizeInfo_Stub(
  617.     IRpcStubBuffer *This,
  618.     IRpcChannelBuffer *_pRpcChannelBuffer,
  619.     PRPC_MESSAGE _pRpcMessage,
  620.     DWORD *_pdwStubPhase);
  621. HRESULT STDMETHODCALLTYPE IMediaObject_GetInputMaxLatency_Proxy( 
  622.     IMediaObject * This,
  623.     DWORD dwInputStreamIndex,
  624.     /* [out] */ REFERENCE_TIME *prtMaxLatency);
  625. void __RPC_STUB IMediaObject_GetInputMaxLatency_Stub(
  626.     IRpcStubBuffer *This,
  627.     IRpcChannelBuffer *_pRpcChannelBuffer,
  628.     PRPC_MESSAGE _pRpcMessage,
  629.     DWORD *_pdwStubPhase);
  630. HRESULT STDMETHODCALLTYPE IMediaObject_SetInputMaxLatency_Proxy( 
  631.     IMediaObject * This,
  632.     DWORD dwInputStreamIndex,
  633.     REFERENCE_TIME rtMaxLatency);
  634. void __RPC_STUB IMediaObject_SetInputMaxLatency_Stub(
  635.     IRpcStubBuffer *This,
  636.     IRpcChannelBuffer *_pRpcChannelBuffer,
  637.     PRPC_MESSAGE _pRpcMessage,
  638.     DWORD *_pdwStubPhase);
  639. HRESULT STDMETHODCALLTYPE IMediaObject_Flush_Proxy( 
  640.     IMediaObject * This);
  641. void __RPC_STUB IMediaObject_Flush_Stub(
  642.     IRpcStubBuffer *This,
  643.     IRpcChannelBuffer *_pRpcChannelBuffer,
  644.     PRPC_MESSAGE _pRpcMessage,
  645.     DWORD *_pdwStubPhase);
  646. HRESULT STDMETHODCALLTYPE IMediaObject_Discontinuity_Proxy( 
  647.     IMediaObject * This,
  648.     DWORD dwInputStreamIndex);
  649. void __RPC_STUB IMediaObject_Discontinuity_Stub(
  650.     IRpcStubBuffer *This,
  651.     IRpcChannelBuffer *_pRpcChannelBuffer,
  652.     PRPC_MESSAGE _pRpcMessage,
  653.     DWORD *_pdwStubPhase);
  654. HRESULT STDMETHODCALLTYPE IMediaObject_AllocateStreamingResources_Proxy( 
  655.     IMediaObject * This);
  656. void __RPC_STUB IMediaObject_AllocateStreamingResources_Stub(
  657.     IRpcStubBuffer *This,
  658.     IRpcChannelBuffer *_pRpcChannelBuffer,
  659.     PRPC_MESSAGE _pRpcMessage,
  660.     DWORD *_pdwStubPhase);
  661. HRESULT STDMETHODCALLTYPE IMediaObject_FreeStreamingResources_Proxy( 
  662.     IMediaObject * This);
  663. void __RPC_STUB IMediaObject_FreeStreamingResources_Stub(
  664.     IRpcStubBuffer *This,
  665.     IRpcChannelBuffer *_pRpcChannelBuffer,
  666.     PRPC_MESSAGE _pRpcMessage,
  667.     DWORD *_pdwStubPhase);
  668. HRESULT STDMETHODCALLTYPE IMediaObject_GetInputStatus_Proxy( 
  669.     IMediaObject * This,
  670.     DWORD dwInputStreamIndex,
  671.     /* [out] */ DWORD *dwFlags);
  672. void __RPC_STUB IMediaObject_GetInputStatus_Stub(
  673.     IRpcStubBuffer *This,
  674.     IRpcChannelBuffer *_pRpcChannelBuffer,
  675.     PRPC_MESSAGE _pRpcMessage,
  676.     DWORD *_pdwStubPhase);
  677. HRESULT STDMETHODCALLTYPE IMediaObject_ProcessInput_Proxy( 
  678.     IMediaObject * This,
  679.     DWORD dwInputStreamIndex,
  680.     IMediaBuffer *pBuffer,
  681.     DWORD dwFlags,
  682.     REFERENCE_TIME rtTimestamp,
  683.     REFERENCE_TIME rtTimelength);
  684. void __RPC_STUB IMediaObject_ProcessInput_Stub(
  685.     IRpcStubBuffer *This,
  686.     IRpcChannelBuffer *_pRpcChannelBuffer,
  687.     PRPC_MESSAGE _pRpcMessage,
  688.     DWORD *_pdwStubPhase);
  689. HRESULT STDMETHODCALLTYPE IMediaObject_ProcessOutput_Proxy( 
  690.     IMediaObject * This,
  691.     DWORD dwFlags,
  692.     DWORD cOutputBufferCount,
  693.     /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
  694.     /* [out] */ DWORD *pdwStatus);
  695. void __RPC_STUB IMediaObject_ProcessOutput_Stub(
  696.     IRpcStubBuffer *This,
  697.     IRpcChannelBuffer *_pRpcChannelBuffer,
  698.     PRPC_MESSAGE _pRpcMessage,
  699.     DWORD *_pdwStubPhase);
  700. HRESULT STDMETHODCALLTYPE IMediaObject_Lock_Proxy( 
  701.     IMediaObject * This,
  702.     LONG bLock);
  703. void __RPC_STUB IMediaObject_Lock_Stub(
  704.     IRpcStubBuffer *This,
  705.     IRpcChannelBuffer *_pRpcChannelBuffer,
  706.     PRPC_MESSAGE _pRpcMessage,
  707.     DWORD *_pdwStubPhase);
  708. #endif  /* __IMediaObject_INTERFACE_DEFINED__ */
  709. #ifndef __IEnumDMO_INTERFACE_DEFINED__
  710. #define __IEnumDMO_INTERFACE_DEFINED__
  711. /* interface IEnumDMO */
  712. /* [uuid][object] */ 
  713. EXTERN_C const IID IID_IEnumDMO;
  714. #if defined(__cplusplus) && !defined(CINTERFACE)
  715.     
  716.     MIDL_INTERFACE("2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f")
  717.     IEnumDMO : public IUnknown
  718.     {
  719.     public:
  720.         virtual HRESULT STDMETHODCALLTYPE Next( 
  721.             DWORD cItemsToFetch,
  722.             /* [length_is][size_is][out] */ CLSID *pCLSID,
  723.             /* [string][length_is][size_is][out] */ WCHAR **Names,
  724.             /* [out] */ DWORD *pcItemsFetched) = 0;
  725.         
  726.         virtual HRESULT STDMETHODCALLTYPE Skip( 
  727.             DWORD cItemsToSkip) = 0;
  728.         
  729.         virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
  730.         
  731.         virtual HRESULT STDMETHODCALLTYPE Clone( 
  732.             /* [out] */ IEnumDMO **ppEnum) = 0;
  733.         
  734.     };
  735.     
  736. #else  /* C style interface */
  737.     typedef struct IEnumDMOVtbl
  738.     {
  739.         BEGIN_INTERFACE
  740.         
  741.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  742.             IEnumDMO * This,
  743.             /* [in] */ REFIID riid,
  744.             /* [iid_is][out] */ void **ppvObject);
  745.         
  746.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  747.             IEnumDMO * This);
  748.         
  749.         ULONG ( STDMETHODCALLTYPE *Release )( 
  750.             IEnumDMO * This);
  751.         
  752.         HRESULT ( STDMETHODCALLTYPE *Next )( 
  753.             IEnumDMO * This,
  754.             DWORD cItemsToFetch,
  755.             /* [length_is][size_is][out] */ CLSID *pCLSID,
  756.             /* [string][length_is][size_is][out] */ WCHAR **Names,
  757.             /* [out] */ DWORD *pcItemsFetched);
  758.         
  759.         HRESULT ( STDMETHODCALLTYPE *Skip )( 
  760.             IEnumDMO * This,
  761.             DWORD cItemsToSkip);
  762.         
  763.         HRESULT ( STDMETHODCALLTYPE *Reset )( 
  764.             IEnumDMO * This);
  765.         
  766.         HRESULT ( STDMETHODCALLTYPE *Clone )( 
  767.             IEnumDMO * This,
  768.             /* [out] */ IEnumDMO **ppEnum);
  769.         
  770.         END_INTERFACE
  771.     } IEnumDMOVtbl;
  772.     interface IEnumDMO
  773.     {
  774.         CONST_VTBL struct IEnumDMOVtbl *lpVtbl;
  775.     };
  776.     
  777. #ifdef COBJMACROS
  778. #define IEnumDMO_QueryInterface(This,riid,ppvObject)
  779.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  780. #define IEnumDMO_AddRef(This)
  781.     (This)->lpVtbl -> AddRef(This)
  782. #define IEnumDMO_Release(This)
  783.     (This)->lpVtbl -> Release(This)
  784. #define IEnumDMO_Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched)
  785.     (This)->lpVtbl -> Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched)
  786. #define IEnumDMO_Skip(This,cItemsToSkip)
  787.     (This)->lpVtbl -> Skip(This,cItemsToSkip)
  788. #define IEnumDMO_Reset(This)
  789.     (This)->lpVtbl -> Reset(This)
  790. #define IEnumDMO_Clone(This,ppEnum)
  791.     (This)->lpVtbl -> Clone(This,ppEnum)
  792. #endif /* COBJMACROS */
  793. #endif  /* C style interface */
  794. HRESULT STDMETHODCALLTYPE IEnumDMO_Next_Proxy( 
  795.     IEnumDMO * This,
  796.     DWORD cItemsToFetch,
  797.     /* [length_is][size_is][out] */ CLSID *pCLSID,
  798.     /* [string][length_is][size_is][out] */ WCHAR **Names,
  799.     /* [out] */ DWORD *pcItemsFetched);
  800. void __RPC_STUB IEnumDMO_Next_Stub(
  801.     IRpcStubBuffer *This,
  802.     IRpcChannelBuffer *_pRpcChannelBuffer,
  803.     PRPC_MESSAGE _pRpcMessage,
  804.     DWORD *_pdwStubPhase);
  805. HRESULT STDMETHODCALLTYPE IEnumDMO_Skip_Proxy( 
  806.     IEnumDMO * This,
  807.     DWORD cItemsToSkip);
  808. void __RPC_STUB IEnumDMO_Skip_Stub(
  809.     IRpcStubBuffer *This,
  810.     IRpcChannelBuffer *_pRpcChannelBuffer,
  811.     PRPC_MESSAGE _pRpcMessage,
  812.     DWORD *_pdwStubPhase);
  813. HRESULT STDMETHODCALLTYPE IEnumDMO_Reset_Proxy( 
  814.     IEnumDMO * This);
  815. void __RPC_STUB IEnumDMO_Reset_Stub(
  816.     IRpcStubBuffer *This,
  817.     IRpcChannelBuffer *_pRpcChannelBuffer,
  818.     PRPC_MESSAGE _pRpcMessage,
  819.     DWORD *_pdwStubPhase);
  820. HRESULT STDMETHODCALLTYPE IEnumDMO_Clone_Proxy( 
  821.     IEnumDMO * This,
  822.     /* [out] */ IEnumDMO **ppEnum);
  823. void __RPC_STUB IEnumDMO_Clone_Stub(
  824.     IRpcStubBuffer *This,
  825.     IRpcChannelBuffer *_pRpcChannelBuffer,
  826.     PRPC_MESSAGE _pRpcMessage,
  827.     DWORD *_pdwStubPhase);
  828. #endif  /* __IEnumDMO_INTERFACE_DEFINED__ */
  829. /* interface __MIDL_itf_mediaobj_0090 */
  830. /* [local] */ 
  831. enum _DMO_INPLACE_PROCESS_FLAGS
  832.     { DMO_INPLACE_NORMAL = 0,
  833. DMO_INPLACE_ZERO = 0x1
  834.     } ;
  835. extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0090_v0_0_c_ifspec;
  836. extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0090_v0_0_s_ifspec;
  837. #ifndef __IMediaObjectInPlace_INTERFACE_DEFINED__
  838. #define __IMediaObjectInPlace_INTERFACE_DEFINED__
  839. /* interface IMediaObjectInPlace */
  840. /* [uuid][object] */ 
  841. EXTERN_C const IID IID_IMediaObjectInPlace;
  842. #if defined(__cplusplus) && !defined(CINTERFACE)
  843.     
  844.     MIDL_INTERFACE("651b9ad0-0fc7-4aa9-9538-d89931010741")
  845.     IMediaObjectInPlace : public IUnknown
  846.     {
  847.     public:
  848.         virtual HRESULT STDMETHODCALLTYPE Process( 
  849.             /* [in] */ ULONG ulSize,
  850.             /* [size_is][out][in] */ BYTE *pData,
  851.             /* [in] */ REFERENCE_TIME refTimeStart,
  852.             /* [in] */ DWORD dwFlags) = 0;
  853.         
  854.         virtual HRESULT STDMETHODCALLTYPE Clone( 
  855.             /* [out] */ IMediaObjectInPlace **ppMediaObject) = 0;
  856.         
  857.         virtual HRESULT STDMETHODCALLTYPE GetLatency( 
  858.             /* [out] */ REFERENCE_TIME *pLatencyTime) = 0;
  859.         
  860.     };
  861.     
  862. #else  /* C style interface */
  863.     typedef struct IMediaObjectInPlaceVtbl
  864.     {
  865.         BEGIN_INTERFACE
  866.         
  867.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  868.             IMediaObjectInPlace * This,
  869.             /* [in] */ REFIID riid,
  870.             /* [iid_is][out] */ void **ppvObject);
  871.         
  872.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  873.             IMediaObjectInPlace * This);
  874.         
  875.         ULONG ( STDMETHODCALLTYPE *Release )( 
  876.             IMediaObjectInPlace * This);
  877.         
  878.         HRESULT ( STDMETHODCALLTYPE *Process )( 
  879.             IMediaObjectInPlace * This,
  880.             /* [in] */ ULONG ulSize,
  881.             /* [size_is][out][in] */ BYTE *pData,
  882.             /* [in] */ REFERENCE_TIME refTimeStart,
  883.             /* [in] */ DWORD dwFlags);
  884.         
  885.         HRESULT ( STDMETHODCALLTYPE *Clone )( 
  886.             IMediaObjectInPlace * This,
  887.             /* [out] */ IMediaObjectInPlace **ppMediaObject);
  888.         
  889.         HRESULT ( STDMETHODCALLTYPE *GetLatency )( 
  890.             IMediaObjectInPlace * This,
  891.             /* [out] */ REFERENCE_TIME *pLatencyTime);
  892.         
  893.         END_INTERFACE
  894.     } IMediaObjectInPlaceVtbl;
  895.     interface IMediaObjectInPlace
  896.     {
  897.         CONST_VTBL struct IMediaObjectInPlaceVtbl *lpVtbl;
  898.     };
  899.     
  900. #ifdef COBJMACROS
  901. #define IMediaObjectInPlace_QueryInterface(This,riid,ppvObject)
  902.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  903. #define IMediaObjectInPlace_AddRef(This)
  904.     (This)->lpVtbl -> AddRef(This)
  905. #define IMediaObjectInPlace_Release(This)
  906.     (This)->lpVtbl -> Release(This)
  907. #define IMediaObjectInPlace_Process(This,ulSize,pData,refTimeStart,dwFlags)
  908.     (This)->lpVtbl -> Process(This,ulSize,pData,refTimeStart,dwFlags)
  909. #define IMediaObjectInPlace_Clone(This,ppMediaObject)
  910.     (This)->lpVtbl -> Clone(This,ppMediaObject)
  911. #define IMediaObjectInPlace_GetLatency(This,pLatencyTime)
  912.     (This)->lpVtbl -> GetLatency(This,pLatencyTime)
  913. #endif /* COBJMACROS */
  914. #endif  /* C style interface */
  915. HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_Process_Proxy( 
  916.     IMediaObjectInPlace * This,
  917.     /* [in] */ ULONG ulSize,
  918.     /* [size_is][out][in] */ BYTE *pData,
  919.     /* [in] */ REFERENCE_TIME refTimeStart,
  920.     /* [in] */ DWORD dwFlags);
  921. void __RPC_STUB IMediaObjectInPlace_Process_Stub(
  922.     IRpcStubBuffer *This,
  923.     IRpcChannelBuffer *_pRpcChannelBuffer,
  924.     PRPC_MESSAGE _pRpcMessage,
  925.     DWORD *_pdwStubPhase);
  926. HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_Clone_Proxy( 
  927.     IMediaObjectInPlace * This,
  928.     /* [out] */ IMediaObjectInPlace **ppMediaObject);
  929. void __RPC_STUB IMediaObjectInPlace_Clone_Stub(
  930.     IRpcStubBuffer *This,
  931.     IRpcChannelBuffer *_pRpcChannelBuffer,
  932.     PRPC_MESSAGE _pRpcMessage,
  933.     DWORD *_pdwStubPhase);
  934. HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_GetLatency_Proxy( 
  935.     IMediaObjectInPlace * This,
  936.     /* [out] */ REFERENCE_TIME *pLatencyTime);
  937. void __RPC_STUB IMediaObjectInPlace_GetLatency_Stub(
  938.     IRpcStubBuffer *This,
  939.     IRpcChannelBuffer *_pRpcChannelBuffer,
  940.     PRPC_MESSAGE _pRpcMessage,
  941.     DWORD *_pdwStubPhase);
  942. #endif  /* __IMediaObjectInPlace_INTERFACE_DEFINED__ */
  943. /* interface __MIDL_itf_mediaobj_0091 */
  944. /* [local] */ 
  945. enum _DMO_QUALITY_STATUS_FLAGS
  946.     { DMO_QUALITY_STATUS_ENABLED = 0x1
  947.     } ;
  948. extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0091_v0_0_c_ifspec;
  949. extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0091_v0_0_s_ifspec;
  950. #ifndef __IDMOQualityControl_INTERFACE_DEFINED__
  951. #define __IDMOQualityControl_INTERFACE_DEFINED__
  952. /* interface IDMOQualityControl */
  953. /* [uuid][object] */ 
  954. EXTERN_C const IID IID_IDMOQualityControl;
  955. #if defined(__cplusplus) && !defined(CINTERFACE)
  956.     
  957.     MIDL_INTERFACE("65abea96-cf36-453f-af8a-705e98f16260")
  958.     IDMOQualityControl : public IUnknown
  959.     {
  960.     public:
  961.         virtual HRESULT STDMETHODCALLTYPE SetNow( 
  962.             /* [in] */ REFERENCE_TIME rtNow) = 0;
  963.         
  964.         virtual HRESULT STDMETHODCALLTYPE SetStatus( 
  965.             /* [in] */ DWORD dwFlags) = 0;
  966.         
  967.         virtual HRESULT STDMETHODCALLTYPE GetStatus( 
  968.             /* [out] */ DWORD *pdwFlags) = 0;
  969.         
  970.     };
  971.     
  972. #else  /* C style interface */
  973.     typedef struct IDMOQualityControlVtbl
  974.     {
  975.         BEGIN_INTERFACE
  976.         
  977.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  978.             IDMOQualityControl * This,
  979.             /* [in] */ REFIID riid,
  980.             /* [iid_is][out] */ void **ppvObject);
  981.         
  982.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  983.             IDMOQualityControl * This);
  984.         
  985.         ULONG ( STDMETHODCALLTYPE *Release )( 
  986.             IDMOQualityControl * This);
  987.         
  988.         HRESULT ( STDMETHODCALLTYPE *SetNow )( 
  989.             IDMOQualityControl * This,
  990.             /* [in] */ REFERENCE_TIME rtNow);
  991.         
  992.         HRESULT ( STDMETHODCALLTYPE *SetStatus )( 
  993.             IDMOQualityControl * This,
  994.             /* [in] */ DWORD dwFlags);
  995.         
  996.         HRESULT ( STDMETHODCALLTYPE *GetStatus )( 
  997.             IDMOQualityControl * This,
  998.             /* [out] */ DWORD *pdwFlags);
  999.         
  1000.         END_INTERFACE
  1001.     } IDMOQualityControlVtbl;
  1002.     interface IDMOQualityControl
  1003.     {
  1004.         CONST_VTBL struct IDMOQualityControlVtbl *lpVtbl;
  1005.     };
  1006.     
  1007. #ifdef COBJMACROS
  1008. #define IDMOQualityControl_QueryInterface(This,riid,ppvObject)
  1009.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  1010. #define IDMOQualityControl_AddRef(This)
  1011.     (This)->lpVtbl -> AddRef(This)
  1012. #define IDMOQualityControl_Release(This)
  1013.     (This)->lpVtbl -> Release(This)
  1014. #define IDMOQualityControl_SetNow(This,rtNow)
  1015.     (This)->lpVtbl -> SetNow(This,rtNow)
  1016. #define IDMOQualityControl_SetStatus(This,dwFlags)
  1017.     (This)->lpVtbl -> SetStatus(This,dwFlags)
  1018. #define IDMOQualityControl_GetStatus(This,pdwFlags)
  1019.     (This)->lpVtbl -> GetStatus(This,pdwFlags)
  1020. #endif /* COBJMACROS */
  1021. #endif  /* C style interface */
  1022. HRESULT STDMETHODCALLTYPE IDMOQualityControl_SetNow_Proxy( 
  1023.     IDMOQualityControl * This,
  1024.     /* [in] */ REFERENCE_TIME rtNow);
  1025. void __RPC_STUB IDMOQualityControl_SetNow_Stub(
  1026.     IRpcStubBuffer *This,
  1027.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1028.     PRPC_MESSAGE _pRpcMessage,
  1029.     DWORD *_pdwStubPhase);
  1030. HRESULT STDMETHODCALLTYPE IDMOQualityControl_SetStatus_Proxy( 
  1031.     IDMOQualityControl * This,
  1032.     /* [in] */ DWORD dwFlags);
  1033. void __RPC_STUB IDMOQualityControl_SetStatus_Stub(
  1034.     IRpcStubBuffer *This,
  1035.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1036.     PRPC_MESSAGE _pRpcMessage,
  1037.     DWORD *_pdwStubPhase);
  1038. HRESULT STDMETHODCALLTYPE IDMOQualityControl_GetStatus_Proxy( 
  1039.     IDMOQualityControl * This,
  1040.     /* [out] */ DWORD *pdwFlags);
  1041. void __RPC_STUB IDMOQualityControl_GetStatus_Stub(
  1042.     IRpcStubBuffer *This,
  1043.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1044.     PRPC_MESSAGE _pRpcMessage,
  1045.     DWORD *_pdwStubPhase);
  1046. #endif  /* __IDMOQualityControl_INTERFACE_DEFINED__ */
  1047. /* interface __MIDL_itf_mediaobj_0092 */
  1048. /* [local] */ 
  1049. enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS
  1050.     { DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x1
  1051.     } ;
  1052. extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0092_v0_0_c_ifspec;
  1053. extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0092_v0_0_s_ifspec;
  1054. #ifndef __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
  1055. #define __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
  1056. /* interface IDMOVideoOutputOptimizations */
  1057. /* [uuid][object] */ 
  1058. EXTERN_C const IID IID_IDMOVideoOutputOptimizations;
  1059. #if defined(__cplusplus) && !defined(CINTERFACE)
  1060.     
  1061.     MIDL_INTERFACE("be8f4f4e-5b16-4d29-b350-7f6b5d9298ac")
  1062.     IDMOVideoOutputOptimizations : public IUnknown
  1063.     {
  1064.     public:
  1065.         virtual HRESULT STDMETHODCALLTYPE QueryOperationModePreferences( 
  1066.             ULONG ulOutputStreamIndex,
  1067.             DWORD *pdwRequestedCapabilities) = 0;
  1068.         
  1069.         virtual HRESULT STDMETHODCALLTYPE SetOperationMode( 
  1070.             ULONG ulOutputStreamIndex,
  1071.             DWORD dwEnabledFeatures) = 0;
  1072.         
  1073.         virtual HRESULT STDMETHODCALLTYPE GetCurrentOperationMode( 
  1074.             ULONG ulOutputStreamIndex,
  1075.             DWORD *pdwEnabledFeatures) = 0;
  1076.         
  1077.         virtual HRESULT STDMETHODCALLTYPE GetCurrentSampleRequirements( 
  1078.             ULONG ulOutputStreamIndex,
  1079.             DWORD *pdwRequestedFeatures) = 0;
  1080.         
  1081.     };
  1082.     
  1083. #else  /* C style interface */
  1084.     typedef struct IDMOVideoOutputOptimizationsVtbl
  1085.     {
  1086.         BEGIN_INTERFACE
  1087.         
  1088.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  1089.             IDMOVideoOutputOptimizations * This,
  1090.             /* [in] */ REFIID riid,
  1091.             /* [iid_is][out] */ void **ppvObject);
  1092.         
  1093.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  1094.             IDMOVideoOutputOptimizations * This);
  1095.         
  1096.         ULONG ( STDMETHODCALLTYPE *Release )( 
  1097.             IDMOVideoOutputOptimizations * This);
  1098.         
  1099.         HRESULT ( STDMETHODCALLTYPE *QueryOperationModePreferences )( 
  1100.             IDMOVideoOutputOptimizations * This,
  1101.             ULONG ulOutputStreamIndex,
  1102.             DWORD *pdwRequestedCapabilities);
  1103.         
  1104.         HRESULT ( STDMETHODCALLTYPE *SetOperationMode )( 
  1105.             IDMOVideoOutputOptimizations * This,
  1106.             ULONG ulOutputStreamIndex,
  1107.             DWORD dwEnabledFeatures);
  1108.         
  1109.         HRESULT ( STDMETHODCALLTYPE *GetCurrentOperationMode )( 
  1110.             IDMOVideoOutputOptimizations * This,
  1111.             ULONG ulOutputStreamIndex,
  1112.             DWORD *pdwEnabledFeatures);
  1113.         
  1114.         HRESULT ( STDMETHODCALLTYPE *GetCurrentSampleRequirements )( 
  1115.             IDMOVideoOutputOptimizations * This,
  1116.             ULONG ulOutputStreamIndex,
  1117.             DWORD *pdwRequestedFeatures);
  1118.         
  1119.         END_INTERFACE
  1120.     } IDMOVideoOutputOptimizationsVtbl;
  1121.     interface IDMOVideoOutputOptimizations
  1122.     {
  1123.         CONST_VTBL struct IDMOVideoOutputOptimizationsVtbl *lpVtbl;
  1124.     };
  1125.     
  1126. #ifdef COBJMACROS
  1127. #define IDMOVideoOutputOptimizations_QueryInterface(This,riid,ppvObject)
  1128.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  1129. #define IDMOVideoOutputOptimizations_AddRef(This)
  1130.     (This)->lpVtbl -> AddRef(This)
  1131. #define IDMOVideoOutputOptimizations_Release(This)
  1132.     (This)->lpVtbl -> Release(This)
  1133. #define IDMOVideoOutputOptimizations_QueryOperationModePreferences(This,ulOutputStreamIndex,pdwRequestedCapabilities)
  1134.     (This)->lpVtbl -> QueryOperationModePreferences(This,ulOutputStreamIndex,pdwRequestedCapabilities)
  1135. #define IDMOVideoOutputOptimizations_SetOperationMode(This,ulOutputStreamIndex,dwEnabledFeatures)
  1136.     (This)->lpVtbl -> SetOperationMode(This,ulOutputStreamIndex,dwEnabledFeatures)
  1137. #define IDMOVideoOutputOptimizations_GetCurrentOperationMode(This,ulOutputStreamIndex,pdwEnabledFeatures)
  1138.     (This)->lpVtbl -> GetCurrentOperationMode(This,ulOutputStreamIndex,pdwEnabledFeatures)
  1139. #define IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(This,ulOutputStreamIndex,pdwRequestedFeatures)
  1140.     (This)->lpVtbl -> GetCurrentSampleRequirements(This,ulOutputStreamIndex,pdwRequestedFeatures)
  1141. #endif /* COBJMACROS */
  1142. #endif  /* C style interface */
  1143. HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_QueryOperationModePreferences_Proxy( 
  1144.     IDMOVideoOutputOptimizations * This,
  1145.     ULONG ulOutputStreamIndex,
  1146.     DWORD *pdwRequestedCapabilities);
  1147. void __RPC_STUB IDMOVideoOutputOptimizations_QueryOperationModePreferences_Stub(
  1148.     IRpcStubBuffer *This,
  1149.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1150.     PRPC_MESSAGE _pRpcMessage,
  1151.     DWORD *_pdwStubPhase);
  1152. HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_SetOperationMode_Proxy( 
  1153.     IDMOVideoOutputOptimizations * This,
  1154.     ULONG ulOutputStreamIndex,
  1155.     DWORD dwEnabledFeatures);
  1156. void __RPC_STUB IDMOVideoOutputOptimizations_SetOperationMode_Stub(
  1157.     IRpcStubBuffer *This,
  1158.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1159.     PRPC_MESSAGE _pRpcMessage,
  1160.     DWORD *_pdwStubPhase);
  1161. HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_GetCurrentOperationMode_Proxy( 
  1162.     IDMOVideoOutputOptimizations * This,
  1163.     ULONG ulOutputStreamIndex,
  1164.     DWORD *pdwEnabledFeatures);
  1165. void __RPC_STUB IDMOVideoOutputOptimizations_GetCurrentOperationMode_Stub(
  1166.     IRpcStubBuffer *This,
  1167.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1168.     PRPC_MESSAGE _pRpcMessage,
  1169.     DWORD *_pdwStubPhase);
  1170. HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_GetCurrentSampleRequirements_Proxy( 
  1171.     IDMOVideoOutputOptimizations * This,
  1172.     ULONG ulOutputStreamIndex,
  1173.     DWORD *pdwRequestedFeatures);
  1174. void __RPC_STUB IDMOVideoOutputOptimizations_GetCurrentSampleRequirements_Stub(
  1175.     IRpcStubBuffer *This,
  1176.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1177.     PRPC_MESSAGE _pRpcMessage,
  1178.     DWORD *_pdwStubPhase);
  1179. #endif  /* __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ */
  1180. /* Additional Prototypes for ALL interfaces */
  1181. /* end of Additional Prototypes */
  1182. #ifdef __cplusplus
  1183. }
  1184. #endif
  1185. #endif