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