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