1 /*** Autogenerated by WIDL 6.4 from 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 #ifndef __IDMOQualityControl_FWD_DEFINED__
54 #define __IDMOQualityControl_FWD_DEFINED__
55 typedef interface IDMOQualityControl IDMOQualityControl;
56 #ifdef __cplusplus
57 interface IDMOQualityControl;
58 #endif /* __cplusplus */
59 #endif
60 
61 #ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__
62 #define __IDMOVideoOutputOptimizations_FWD_DEFINED__
63 typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations;
64 #ifdef __cplusplus
65 interface IDMOVideoOutputOptimizations;
66 #endif /* __cplusplus */
67 #endif
68 
69 /* Headers for imported files */
70 
71 #include <unknwn.h>
72 #include <objidl.h>
73 #include <strmif.h>
74 
75 #ifdef __cplusplus
76 extern "C" {
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 enum _DMO_INPUT_STATUS_FLAGS {
307     DMO_INPUT_STATUSF_ACCEPT_DATA = 0x1
308 };
309 enum _DMO_INPUT_DATA_BUFFER_FLAGS {
310     DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
311     DMO_INPUT_DATA_BUFFERF_TIME = 0x2,
312     DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x4
313 };
314 enum _DMO_PROCESS_OUTPUT_FLAGS {
315     DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x1
316 };
317 typedef struct _DMO_OUTPUT_DATA_BUFFER {
318     IMediaBuffer *pBuffer;
319     DWORD dwStatus;
320     REFERENCE_TIME rtTimestamp;
321     REFERENCE_TIME rtTimelength;
322 } DMO_OUTPUT_DATA_BUFFER;
323 typedef struct _DMO_OUTPUT_DATA_BUFFER *PDMO_OUTPUT_DATA_BUFFER;
324 enum _DMO_INPLACE_PROCESS_FLAGS {
325     DMO_INPLACE_NORMAL = 0x0,
326     DMO_INPLACE_ZERO = 0x1
327 };
328 enum _DMO_SET_TYPE_FLAGS {
329     DMO_SET_TYPEF_TEST_ONLY = 0x1,
330     DMO_SET_TYPEF_CLEAR = 0x2
331 };
332 enum _DMO_OUTPUT_DATA_BUFFERF_FLAGS {
333     DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
334     DMO_OUTPUT_DATA_BUFFERF_TIME = 0x2,
335     DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x4,
336     DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x1000000
337 };
338 /*****************************************************************************
339  * IMediaObject interface
340  */
341 #ifndef __IMediaObject_INTERFACE_DEFINED__
342 #define __IMediaObject_INTERFACE_DEFINED__
343 
344 DEFINE_GUID(IID_IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4);
345 #if defined(__cplusplus) && !defined(CINTERFACE)
346 MIDL_INTERFACE("d8ad0f58-5494-4102-97c5-ec798e59bcf4")
347 IMediaObject : public IUnknown
348 {
349     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
350         DWORD *pcInputStreams,
351         DWORD *pcOutputStreams) = 0;
352 
353     virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo(
354         DWORD dwInputStreamIndex,
355         DWORD *pdwFlags) = 0;
356 
357     virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo(
358         DWORD dwOutputStreamIndex,
359         DWORD *pdwFlags) = 0;
360 
361     virtual HRESULT STDMETHODCALLTYPE GetInputType(
362         DWORD dwInputStreamIndex,
363         DWORD dwTypeIndex,
364         DMO_MEDIA_TYPE *pmt) = 0;
365 
366     virtual HRESULT STDMETHODCALLTYPE GetOutputType(
367         DWORD dwOutputStreamIndex,
368         DWORD dwTypeIndex,
369         DMO_MEDIA_TYPE *pmt) = 0;
370 
371     virtual HRESULT STDMETHODCALLTYPE SetInputType(
372         DWORD dwInputStreamIndex,
373         const DMO_MEDIA_TYPE *pmt,
374         DWORD dwFlags) = 0;
375 
376     virtual HRESULT STDMETHODCALLTYPE SetOutputType(
377         DWORD dwOutputStreamIndex,
378         const DMO_MEDIA_TYPE *pmt,
379         DWORD dwFlags) = 0;
380 
381     virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType(
382         DWORD dwInputStreamIndex,
383         DMO_MEDIA_TYPE *pmt) = 0;
384 
385     virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType(
386         DWORD dwOutputStreamIndex,
387         DMO_MEDIA_TYPE *pmt) = 0;
388 
389     virtual HRESULT STDMETHODCALLTYPE GetInputSizeInfo(
390         DWORD dwInputStreamIndex,
391         DWORD *pcbSize,
392         DWORD *pcbMaxLookahead,
393         DWORD *pcbAlignment) = 0;
394 
395     virtual HRESULT STDMETHODCALLTYPE GetOutputSizeInfo(
396         DWORD dwOutputStreamIndex,
397         DWORD *pcbSize,
398         DWORD *pcbAlignment) = 0;
399 
400     virtual HRESULT STDMETHODCALLTYPE GetInputMaxLatency(
401         DWORD dwInputStreamIndex,
402         REFERENCE_TIME *prtMaxLatency) = 0;
403 
404     virtual HRESULT STDMETHODCALLTYPE SetInputMaxLatency(
405         DWORD dwInputStreamIndex,
406         REFERENCE_TIME rtMaxLatency) = 0;
407 
408     virtual HRESULT STDMETHODCALLTYPE Flush(
409         ) = 0;
410 
411     virtual HRESULT STDMETHODCALLTYPE Discontinuity(
412         DWORD dwInputStreamIndex) = 0;
413 
414     virtual HRESULT STDMETHODCALLTYPE AllocateStreamingResources(
415         ) = 0;
416 
417     virtual HRESULT STDMETHODCALLTYPE FreeStreamingResources(
418         ) = 0;
419 
420     virtual HRESULT STDMETHODCALLTYPE GetInputStatus(
421         DWORD dwInputStreamIndex,
422         DWORD *dwFlags) = 0;
423 
424     virtual HRESULT STDMETHODCALLTYPE ProcessInput(
425         DWORD dwInputStreamIndex,
426         IMediaBuffer *pBuffer,
427         DWORD dwFlags,
428         REFERENCE_TIME rtTimestamp,
429         REFERENCE_TIME rtTimelength) = 0;
430 
431     virtual HRESULT STDMETHODCALLTYPE ProcessOutput(
432         DWORD dwFlags,
433         DWORD cOutputBufferCount,
434         DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
435         DWORD *pdwStatus) = 0;
436 
437     virtual HRESULT STDMETHODCALLTYPE Lock(
438         LONG bLock) = 0;
439 
440 };
441 #ifdef __CRT_UUID_DECL
442 __CRT_UUID_DECL(IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4)
443 #endif
444 #else
445 typedef struct IMediaObjectVtbl {
446     BEGIN_INTERFACE
447 
448     /*** IUnknown methods ***/
449     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
450         IMediaObject *This,
451         REFIID riid,
452         void **ppvObject);
453 
454     ULONG (STDMETHODCALLTYPE *AddRef)(
455         IMediaObject *This);
456 
457     ULONG (STDMETHODCALLTYPE *Release)(
458         IMediaObject *This);
459 
460     /*** IMediaObject methods ***/
461     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
462         IMediaObject *This,
463         DWORD *pcInputStreams,
464         DWORD *pcOutputStreams);
465 
466     HRESULT (STDMETHODCALLTYPE *GetInputStreamInfo)(
467         IMediaObject *This,
468         DWORD dwInputStreamIndex,
469         DWORD *pdwFlags);
470 
471     HRESULT (STDMETHODCALLTYPE *GetOutputStreamInfo)(
472         IMediaObject *This,
473         DWORD dwOutputStreamIndex,
474         DWORD *pdwFlags);
475 
476     HRESULT (STDMETHODCALLTYPE *GetInputType)(
477         IMediaObject *This,
478         DWORD dwInputStreamIndex,
479         DWORD dwTypeIndex,
480         DMO_MEDIA_TYPE *pmt);
481 
482     HRESULT (STDMETHODCALLTYPE *GetOutputType)(
483         IMediaObject *This,
484         DWORD dwOutputStreamIndex,
485         DWORD dwTypeIndex,
486         DMO_MEDIA_TYPE *pmt);
487 
488     HRESULT (STDMETHODCALLTYPE *SetInputType)(
489         IMediaObject *This,
490         DWORD dwInputStreamIndex,
491         const DMO_MEDIA_TYPE *pmt,
492         DWORD dwFlags);
493 
494     HRESULT (STDMETHODCALLTYPE *SetOutputType)(
495         IMediaObject *This,
496         DWORD dwOutputStreamIndex,
497         const DMO_MEDIA_TYPE *pmt,
498         DWORD dwFlags);
499 
500     HRESULT (STDMETHODCALLTYPE *GetInputCurrentType)(
501         IMediaObject *This,
502         DWORD dwInputStreamIndex,
503         DMO_MEDIA_TYPE *pmt);
504 
505     HRESULT (STDMETHODCALLTYPE *GetOutputCurrentType)(
506         IMediaObject *This,
507         DWORD dwOutputStreamIndex,
508         DMO_MEDIA_TYPE *pmt);
509 
510     HRESULT (STDMETHODCALLTYPE *GetInputSizeInfo)(
511         IMediaObject *This,
512         DWORD dwInputStreamIndex,
513         DWORD *pcbSize,
514         DWORD *pcbMaxLookahead,
515         DWORD *pcbAlignment);
516 
517     HRESULT (STDMETHODCALLTYPE *GetOutputSizeInfo)(
518         IMediaObject *This,
519         DWORD dwOutputStreamIndex,
520         DWORD *pcbSize,
521         DWORD *pcbAlignment);
522 
523     HRESULT (STDMETHODCALLTYPE *GetInputMaxLatency)(
524         IMediaObject *This,
525         DWORD dwInputStreamIndex,
526         REFERENCE_TIME *prtMaxLatency);
527 
528     HRESULT (STDMETHODCALLTYPE *SetInputMaxLatency)(
529         IMediaObject *This,
530         DWORD dwInputStreamIndex,
531         REFERENCE_TIME rtMaxLatency);
532 
533     HRESULT (STDMETHODCALLTYPE *Flush)(
534         IMediaObject *This);
535 
536     HRESULT (STDMETHODCALLTYPE *Discontinuity)(
537         IMediaObject *This,
538         DWORD dwInputStreamIndex);
539 
540     HRESULT (STDMETHODCALLTYPE *AllocateStreamingResources)(
541         IMediaObject *This);
542 
543     HRESULT (STDMETHODCALLTYPE *FreeStreamingResources)(
544         IMediaObject *This);
545 
546     HRESULT (STDMETHODCALLTYPE *GetInputStatus)(
547         IMediaObject *This,
548         DWORD dwInputStreamIndex,
549         DWORD *dwFlags);
550 
551     HRESULT (STDMETHODCALLTYPE *ProcessInput)(
552         IMediaObject *This,
553         DWORD dwInputStreamIndex,
554         IMediaBuffer *pBuffer,
555         DWORD dwFlags,
556         REFERENCE_TIME rtTimestamp,
557         REFERENCE_TIME rtTimelength);
558 
559     HRESULT (STDMETHODCALLTYPE *ProcessOutput)(
560         IMediaObject *This,
561         DWORD dwFlags,
562         DWORD cOutputBufferCount,
563         DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
564         DWORD *pdwStatus);
565 
566     HRESULT (STDMETHODCALLTYPE *Lock)(
567         IMediaObject *This,
568         LONG bLock);
569 
570     END_INTERFACE
571 } IMediaObjectVtbl;
572 
573 interface IMediaObject {
574     CONST_VTBL IMediaObjectVtbl* lpVtbl;
575 };
576 
577 #ifdef COBJMACROS
578 #ifndef WIDL_C_INLINE_WRAPPERS
579 /*** IUnknown methods ***/
580 #define IMediaObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
581 #define IMediaObject_AddRef(This) (This)->lpVtbl->AddRef(This)
582 #define IMediaObject_Release(This) (This)->lpVtbl->Release(This)
583 /*** IMediaObject methods ***/
584 #define IMediaObject_GetStreamCount(This,pcInputStreams,pcOutputStreams) (This)->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams)
585 #define IMediaObject_GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) (This)->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags)
586 #define IMediaObject_GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) (This)->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags)
587 #define IMediaObject_GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt)
588 #define IMediaObject_GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt)
589 #define IMediaObject_SetInputType(This,dwInputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags)
590 #define IMediaObject_SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags)
591 #define IMediaObject_GetInputCurrentType(This,dwInputStreamIndex,pmt) (This)->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt)
592 #define IMediaObject_GetOutputCurrentType(This,dwOutputStreamIndex,pmt) (This)->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt)
593 #define IMediaObject_GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) (This)->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment)
594 #define IMediaObject_GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) (This)->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment)
595 #define IMediaObject_GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) (This)->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency)
596 #define IMediaObject_SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) (This)->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency)
597 #define IMediaObject_Flush(This) (This)->lpVtbl->Flush(This)
598 #define IMediaObject_Discontinuity(This,dwInputStreamIndex) (This)->lpVtbl->Discontinuity(This,dwInputStreamIndex)
599 #define IMediaObject_AllocateStreamingResources(This) (This)->lpVtbl->AllocateStreamingResources(This)
600 #define IMediaObject_FreeStreamingResources(This) (This)->lpVtbl->FreeStreamingResources(This)
601 #define IMediaObject_GetInputStatus(This,dwInputStreamIndex,dwFlags) (This)->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags)
602 #define IMediaObject_ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) (This)->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength)
603 #define IMediaObject_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) (This)->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus)
604 #define IMediaObject_Lock(This,bLock) (This)->lpVtbl->Lock(This,bLock)
605 #else
606 /*** IUnknown methods ***/
607 static FORCEINLINE HRESULT IMediaObject_QueryInterface(IMediaObject* This,REFIID riid,void **ppvObject) {
608     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
609 }
610 static FORCEINLINE ULONG IMediaObject_AddRef(IMediaObject* This) {
611     return This->lpVtbl->AddRef(This);
612 }
613 static FORCEINLINE ULONG IMediaObject_Release(IMediaObject* This) {
614     return This->lpVtbl->Release(This);
615 }
616 /*** IMediaObject methods ***/
617 static FORCEINLINE HRESULT IMediaObject_GetStreamCount(IMediaObject* This,DWORD *pcInputStreams,DWORD *pcOutputStreams) {
618     return This->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams);
619 }
620 static FORCEINLINE HRESULT IMediaObject_GetInputStreamInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pdwFlags) {
621     return This->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags);
622 }
623 static FORCEINLINE HRESULT IMediaObject_GetOutputStreamInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pdwFlags) {
624     return This->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags);
625 }
626 static FORCEINLINE HRESULT IMediaObject_GetInputType(IMediaObject* This,DWORD dwInputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) {
627     return This->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt);
628 }
629 static FORCEINLINE HRESULT IMediaObject_GetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) {
630     return This->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt);
631 }
632 static FORCEINLINE HRESULT IMediaObject_SetInputType(IMediaObject* This,DWORD dwInputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) {
633     return This->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags);
634 }
635 static FORCEINLINE HRESULT IMediaObject_SetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) {
636     return This->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags);
637 }
638 static FORCEINLINE HRESULT IMediaObject_GetInputCurrentType(IMediaObject* This,DWORD dwInputStreamIndex,DMO_MEDIA_TYPE *pmt) {
639     return This->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt);
640 }
641 static FORCEINLINE HRESULT IMediaObject_GetOutputCurrentType(IMediaObject* This,DWORD dwOutputStreamIndex,DMO_MEDIA_TYPE *pmt) {
642     return This->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt);
643 }
644 static FORCEINLINE HRESULT IMediaObject_GetInputSizeInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pcbSize,DWORD *pcbMaxLookahead,DWORD *pcbAlignment) {
645     return This->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment);
646 }
647 static FORCEINLINE HRESULT IMediaObject_GetOutputSizeInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pcbSize,DWORD *pcbAlignment) {
648     return This->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment);
649 }
650 static FORCEINLINE HRESULT IMediaObject_GetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME *prtMaxLatency) {
651     return This->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency);
652 }
653 static FORCEINLINE HRESULT IMediaObject_SetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME rtMaxLatency) {
654     return This->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency);
655 }
656 static FORCEINLINE HRESULT IMediaObject_Flush(IMediaObject* This) {
657     return This->lpVtbl->Flush(This);
658 }
659 static FORCEINLINE HRESULT IMediaObject_Discontinuity(IMediaObject* This,DWORD dwInputStreamIndex) {
660     return This->lpVtbl->Discontinuity(This,dwInputStreamIndex);
661 }
662 static FORCEINLINE HRESULT IMediaObject_AllocateStreamingResources(IMediaObject* This) {
663     return This->lpVtbl->AllocateStreamingResources(This);
664 }
665 static FORCEINLINE HRESULT IMediaObject_FreeStreamingResources(IMediaObject* This) {
666     return This->lpVtbl->FreeStreamingResources(This);
667 }
668 static FORCEINLINE HRESULT IMediaObject_GetInputStatus(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *dwFlags) {
669     return This->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags);
670 }
671 static FORCEINLINE HRESULT IMediaObject_ProcessInput(IMediaObject* This,DWORD dwInputStreamIndex,IMediaBuffer *pBuffer,DWORD dwFlags,REFERENCE_TIME rtTimestamp,REFERENCE_TIME rtTimelength) {
672     return This->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength);
673 }
674 static FORCEINLINE HRESULT IMediaObject_ProcessOutput(IMediaObject* This,DWORD dwFlags,DWORD cOutputBufferCount,DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,DWORD *pdwStatus) {
675     return This->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus);
676 }
677 static FORCEINLINE HRESULT IMediaObject_Lock(IMediaObject* This,LONG bLock) {
678     return This->lpVtbl->Lock(This,bLock);
679 }
680 #endif
681 #endif
682 
683 #endif
684 
685 
686 #endif  /* __IMediaObject_INTERFACE_DEFINED__ */
687 
688 /*****************************************************************************
689  * IMediaObjectInPlace interface
690  */
691 #ifndef __IMediaObjectInPlace_INTERFACE_DEFINED__
692 #define __IMediaObjectInPlace_INTERFACE_DEFINED__
693 
694 DEFINE_GUID(IID_IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41);
695 #if defined(__cplusplus) && !defined(CINTERFACE)
696 MIDL_INTERFACE("651b9ad0-0fc7-4aa9-9538-d89931010741")
697 IMediaObjectInPlace : public IUnknown
698 {
699     virtual HRESULT STDMETHODCALLTYPE Process(
700         ULONG ulSize,
701         BYTE *pData,
702         REFERENCE_TIME refTimeStart,
703         DWORD dwFlags) = 0;
704 
705     virtual HRESULT STDMETHODCALLTYPE Clone(
706         IMediaObjectInPlace **ppMediaObject) = 0;
707 
708     virtual HRESULT STDMETHODCALLTYPE GetLatency(
709         REFERENCE_TIME *pLatencyTime) = 0;
710 
711 };
712 #ifdef __CRT_UUID_DECL
713 __CRT_UUID_DECL(IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41)
714 #endif
715 #else
716 typedef struct IMediaObjectInPlaceVtbl {
717     BEGIN_INTERFACE
718 
719     /*** IUnknown methods ***/
720     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
721         IMediaObjectInPlace *This,
722         REFIID riid,
723         void **ppvObject);
724 
725     ULONG (STDMETHODCALLTYPE *AddRef)(
726         IMediaObjectInPlace *This);
727 
728     ULONG (STDMETHODCALLTYPE *Release)(
729         IMediaObjectInPlace *This);
730 
731     /*** IMediaObjectInPlace methods ***/
732     HRESULT (STDMETHODCALLTYPE *Process)(
733         IMediaObjectInPlace *This,
734         ULONG ulSize,
735         BYTE *pData,
736         REFERENCE_TIME refTimeStart,
737         DWORD dwFlags);
738 
739     HRESULT (STDMETHODCALLTYPE *Clone)(
740         IMediaObjectInPlace *This,
741         IMediaObjectInPlace **ppMediaObject);
742 
743     HRESULT (STDMETHODCALLTYPE *GetLatency)(
744         IMediaObjectInPlace *This,
745         REFERENCE_TIME *pLatencyTime);
746 
747     END_INTERFACE
748 } IMediaObjectInPlaceVtbl;
749 
750 interface IMediaObjectInPlace {
751     CONST_VTBL IMediaObjectInPlaceVtbl* lpVtbl;
752 };
753 
754 #ifdef COBJMACROS
755 #ifndef WIDL_C_INLINE_WRAPPERS
756 /*** IUnknown methods ***/
757 #define IMediaObjectInPlace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
758 #define IMediaObjectInPlace_AddRef(This) (This)->lpVtbl->AddRef(This)
759 #define IMediaObjectInPlace_Release(This) (This)->lpVtbl->Release(This)
760 /*** IMediaObjectInPlace methods ***/
761 #define IMediaObjectInPlace_Process(This,ulSize,pData,refTimeStart,dwFlags) (This)->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags)
762 #define IMediaObjectInPlace_Clone(This,ppMediaObject) (This)->lpVtbl->Clone(This,ppMediaObject)
763 #define IMediaObjectInPlace_GetLatency(This,pLatencyTime) (This)->lpVtbl->GetLatency(This,pLatencyTime)
764 #else
765 /*** IUnknown methods ***/
766 static FORCEINLINE HRESULT IMediaObjectInPlace_QueryInterface(IMediaObjectInPlace* This,REFIID riid,void **ppvObject) {
767     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
768 }
769 static FORCEINLINE ULONG IMediaObjectInPlace_AddRef(IMediaObjectInPlace* This) {
770     return This->lpVtbl->AddRef(This);
771 }
772 static FORCEINLINE ULONG IMediaObjectInPlace_Release(IMediaObjectInPlace* This) {
773     return This->lpVtbl->Release(This);
774 }
775 /*** IMediaObjectInPlace methods ***/
776 static FORCEINLINE HRESULT IMediaObjectInPlace_Process(IMediaObjectInPlace* This,ULONG ulSize,BYTE *pData,REFERENCE_TIME refTimeStart,DWORD dwFlags) {
777     return This->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags);
778 }
779 static FORCEINLINE HRESULT IMediaObjectInPlace_Clone(IMediaObjectInPlace* This,IMediaObjectInPlace **ppMediaObject) {
780     return This->lpVtbl->Clone(This,ppMediaObject);
781 }
782 static FORCEINLINE HRESULT IMediaObjectInPlace_GetLatency(IMediaObjectInPlace* This,REFERENCE_TIME *pLatencyTime) {
783     return This->lpVtbl->GetLatency(This,pLatencyTime);
784 }
785 #endif
786 #endif
787 
788 #endif
789 
790 
791 #endif  /* __IMediaObjectInPlace_INTERFACE_DEFINED__ */
792 
793 enum _DMO_QUALITY_STATUS_FLAGS {
794     DMO_QUALITY_STATUS_ENABLED = 0x1
795 };
796 /*****************************************************************************
797  * IDMOQualityControl interface
798  */
799 #ifndef __IDMOQualityControl_INTERFACE_DEFINED__
800 #define __IDMOQualityControl_INTERFACE_DEFINED__
801 
802 DEFINE_GUID(IID_IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60);
803 #if defined(__cplusplus) && !defined(CINTERFACE)
804 MIDL_INTERFACE("65abea96-cf36-453f-af8a-705e98f16260")
805 IDMOQualityControl : public IUnknown
806 {
807     virtual HRESULT STDMETHODCALLTYPE SetNow(
808         REFERENCE_TIME now) = 0;
809 
810     virtual HRESULT STDMETHODCALLTYPE SetStatus(
811         DWORD flags) = 0;
812 
813     virtual HRESULT STDMETHODCALLTYPE GetStatus(
814         DWORD *flags) = 0;
815 
816 };
817 #ifdef __CRT_UUID_DECL
818 __CRT_UUID_DECL(IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60)
819 #endif
820 #else
821 typedef struct IDMOQualityControlVtbl {
822     BEGIN_INTERFACE
823 
824     /*** IUnknown methods ***/
825     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
826         IDMOQualityControl *This,
827         REFIID riid,
828         void **ppvObject);
829 
830     ULONG (STDMETHODCALLTYPE *AddRef)(
831         IDMOQualityControl *This);
832 
833     ULONG (STDMETHODCALLTYPE *Release)(
834         IDMOQualityControl *This);
835 
836     /*** IDMOQualityControl methods ***/
837     HRESULT (STDMETHODCALLTYPE *SetNow)(
838         IDMOQualityControl *This,
839         REFERENCE_TIME now);
840 
841     HRESULT (STDMETHODCALLTYPE *SetStatus)(
842         IDMOQualityControl *This,
843         DWORD flags);
844 
845     HRESULT (STDMETHODCALLTYPE *GetStatus)(
846         IDMOQualityControl *This,
847         DWORD *flags);
848 
849     END_INTERFACE
850 } IDMOQualityControlVtbl;
851 
852 interface IDMOQualityControl {
853     CONST_VTBL IDMOQualityControlVtbl* lpVtbl;
854 };
855 
856 #ifdef COBJMACROS
857 #ifndef WIDL_C_INLINE_WRAPPERS
858 /*** IUnknown methods ***/
859 #define IDMOQualityControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
860 #define IDMOQualityControl_AddRef(This) (This)->lpVtbl->AddRef(This)
861 #define IDMOQualityControl_Release(This) (This)->lpVtbl->Release(This)
862 /*** IDMOQualityControl methods ***/
863 #define IDMOQualityControl_SetNow(This,now) (This)->lpVtbl->SetNow(This,now)
864 #define IDMOQualityControl_SetStatus(This,flags) (This)->lpVtbl->SetStatus(This,flags)
865 #define IDMOQualityControl_GetStatus(This,flags) (This)->lpVtbl->GetStatus(This,flags)
866 #else
867 /*** IUnknown methods ***/
868 static FORCEINLINE HRESULT IDMOQualityControl_QueryInterface(IDMOQualityControl* This,REFIID riid,void **ppvObject) {
869     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
870 }
871 static FORCEINLINE ULONG IDMOQualityControl_AddRef(IDMOQualityControl* This) {
872     return This->lpVtbl->AddRef(This);
873 }
874 static FORCEINLINE ULONG IDMOQualityControl_Release(IDMOQualityControl* This) {
875     return This->lpVtbl->Release(This);
876 }
877 /*** IDMOQualityControl methods ***/
878 static FORCEINLINE HRESULT IDMOQualityControl_SetNow(IDMOQualityControl* This,REFERENCE_TIME now) {
879     return This->lpVtbl->SetNow(This,now);
880 }
881 static FORCEINLINE HRESULT IDMOQualityControl_SetStatus(IDMOQualityControl* This,DWORD flags) {
882     return This->lpVtbl->SetStatus(This,flags);
883 }
884 static FORCEINLINE HRESULT IDMOQualityControl_GetStatus(IDMOQualityControl* This,DWORD *flags) {
885     return This->lpVtbl->GetStatus(This,flags);
886 }
887 #endif
888 #endif
889 
890 #endif
891 
892 
893 #endif  /* __IDMOQualityControl_INTERFACE_DEFINED__ */
894 
895 enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS {
896     DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x1
897 };
898 /*****************************************************************************
899  * IDMOVideoOutputOptimizations interface
900  */
901 #ifndef __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
902 #define __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
903 
904 DEFINE_GUID(IID_IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac);
905 #if defined(__cplusplus) && !defined(CINTERFACE)
906 MIDL_INTERFACE("be8f4f4e-5b16-4d29-b350-7f6b5d9298ac")
907 IDMOVideoOutputOptimizations : public IUnknown
908 {
909     virtual HRESULT STDMETHODCALLTYPE QueryOperationModePreferences(
910         ULONG index,
911         DWORD *flags) = 0;
912 
913     virtual HRESULT STDMETHODCALLTYPE SetOperationMode(
914         ULONG index,
915         DWORD flags) = 0;
916 
917     virtual HRESULT STDMETHODCALLTYPE GetCurrentOperationMode(
918         ULONG index,
919         DWORD *flags) = 0;
920 
921     virtual HRESULT STDMETHODCALLTYPE GetCurrentSampleRequirements(
922         ULONG index,
923         DWORD *flags) = 0;
924 
925 };
926 #ifdef __CRT_UUID_DECL
927 __CRT_UUID_DECL(IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac)
928 #endif
929 #else
930 typedef struct IDMOVideoOutputOptimizationsVtbl {
931     BEGIN_INTERFACE
932 
933     /*** IUnknown methods ***/
934     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
935         IDMOVideoOutputOptimizations *This,
936         REFIID riid,
937         void **ppvObject);
938 
939     ULONG (STDMETHODCALLTYPE *AddRef)(
940         IDMOVideoOutputOptimizations *This);
941 
942     ULONG (STDMETHODCALLTYPE *Release)(
943         IDMOVideoOutputOptimizations *This);
944 
945     /*** IDMOVideoOutputOptimizations methods ***/
946     HRESULT (STDMETHODCALLTYPE *QueryOperationModePreferences)(
947         IDMOVideoOutputOptimizations *This,
948         ULONG index,
949         DWORD *flags);
950 
951     HRESULT (STDMETHODCALLTYPE *SetOperationMode)(
952         IDMOVideoOutputOptimizations *This,
953         ULONG index,
954         DWORD flags);
955 
956     HRESULT (STDMETHODCALLTYPE *GetCurrentOperationMode)(
957         IDMOVideoOutputOptimizations *This,
958         ULONG index,
959         DWORD *flags);
960 
961     HRESULT (STDMETHODCALLTYPE *GetCurrentSampleRequirements)(
962         IDMOVideoOutputOptimizations *This,
963         ULONG index,
964         DWORD *flags);
965 
966     END_INTERFACE
967 } IDMOVideoOutputOptimizationsVtbl;
968 
969 interface IDMOVideoOutputOptimizations {
970     CONST_VTBL IDMOVideoOutputOptimizationsVtbl* lpVtbl;
971 };
972 
973 #ifdef COBJMACROS
974 #ifndef WIDL_C_INLINE_WRAPPERS
975 /*** IUnknown methods ***/
976 #define IDMOVideoOutputOptimizations_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
977 #define IDMOVideoOutputOptimizations_AddRef(This) (This)->lpVtbl->AddRef(This)
978 #define IDMOVideoOutputOptimizations_Release(This) (This)->lpVtbl->Release(This)
979 /*** IDMOVideoOutputOptimizations methods ***/
980 #define IDMOVideoOutputOptimizations_QueryOperationModePreferences(This,index,flags) (This)->lpVtbl->QueryOperationModePreferences(This,index,flags)
981 #define IDMOVideoOutputOptimizations_SetOperationMode(This,index,flags) (This)->lpVtbl->SetOperationMode(This,index,flags)
982 #define IDMOVideoOutputOptimizations_GetCurrentOperationMode(This,index,flags) (This)->lpVtbl->GetCurrentOperationMode(This,index,flags)
983 #define IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(This,index,flags) (This)->lpVtbl->GetCurrentSampleRequirements(This,index,flags)
984 #else
985 /*** IUnknown methods ***/
986 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_QueryInterface(IDMOVideoOutputOptimizations* This,REFIID riid,void **ppvObject) {
987     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
988 }
989 static FORCEINLINE ULONG IDMOVideoOutputOptimizations_AddRef(IDMOVideoOutputOptimizations* This) {
990     return This->lpVtbl->AddRef(This);
991 }
992 static FORCEINLINE ULONG IDMOVideoOutputOptimizations_Release(IDMOVideoOutputOptimizations* This) {
993     return This->lpVtbl->Release(This);
994 }
995 /*** IDMOVideoOutputOptimizations methods ***/
996 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_QueryOperationModePreferences(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
997     return This->lpVtbl->QueryOperationModePreferences(This,index,flags);
998 }
999 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_SetOperationMode(IDMOVideoOutputOptimizations* This,ULONG index,DWORD flags) {
1000     return This->lpVtbl->SetOperationMode(This,index,flags);
1001 }
1002 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_GetCurrentOperationMode(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
1003     return This->lpVtbl->GetCurrentOperationMode(This,index,flags);
1004 }
1005 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
1006     return This->lpVtbl->GetCurrentSampleRequirements(This,index,flags);
1007 }
1008 #endif
1009 #endif
1010 
1011 #endif
1012 
1013 
1014 #endif  /* __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ */
1015 
1016 /* Begin additional prototypes for all interfaces */
1017 
1018 
1019 /* End additional prototypes */
1020 
1021 #ifdef __cplusplus
1022 }
1023 #endif
1024 
1025 #endif /* __mediaobj_h__ */
1026