Enable querying of IID_FilterGraph interface from filtergraph manager
[wine] / include / amvideo.h
1 /*** Autogenerated by WIDL 0.1 from amvideo.idl - Do not edit ***/
2 #include <rpc.h>
3 #include <rpcndr.h>
4
5 #ifndef __WIDL_AMVIDEO_H
6 #define __WIDL_AMVIDEO_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include <objidl.h>
11 #if 0
12 typedef void *LPDIRECTDRAW;
13
14 typedef void DDSURFACEDESC, DDCAPS;
15
16 typedef DWORD RGBQUAD;
17
18 typedef LONGLONG REFERENCE_TIME;
19
20 typedef struct {
21     DWORD biSize;
22     LONG biWidth;
23     LONG biHeight;
24     WORD biPlanes;
25     WORD biBitCount;
26     DWORD biCompression;
27     DWORD biSizeImage;
28     LONG biXPelsPerMeter;
29     LONG biYPelsPerMeter;
30     DWORD biClrUsed;
31     DWORD biClrImportant;
32 } BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
33
34 #endif
35 #include <ddraw.h>
36 #define AMDDS_NONE 0x00
37 #define AMDDS_DCIPS 0x01
38 #define AMDDS_PS 0x02
39 #define AMDDS_RGBOVR 0x04
40 #define AMDDS_YUVOVR 0x08
41 #define AMDDS_RGBOFF 0x10
42 #define AMDDS_YUVOFF 0x20
43 #define AMDDS_RGBFLP 0x40
44 #define AMDDS_YUVFLP 0x80
45 #define AMDDS_ALL 0xFF
46 #define AMDDS_DEFAULT AMDDS_ALL
47 #define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)
48 #define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)
49 #define AMDSS_PRIMARY (AMDDS_DCIPS | AMDDS_PS)
50 #ifndef __IDirectDrawVideo_FWD_DEFINED__
51 #define __IDirectDrawVideo_FWD_DEFINED__
52 typedef struct IDirectDrawVideo IDirectDrawVideo;
53 #endif
54
55 /*****************************************************************************
56  * IDirectDrawVideo interface
57  */
58 #ifndef __IDirectDrawVideo_INTERFACE_DEFINED__
59 #define __IDirectDrawVideo_INTERFACE_DEFINED__
60
61 #if defined(__cplusplus) && !defined(CINTERFACE)
62 struct IDirectDrawVideo : public IUnknown
63 {
64     virtual HRESULT STDMETHODCALLTYPE GetSwitches(
65         DWORD* pSwitches) = 0;
66
67     virtual HRESULT STDMETHODCALLTYPE SetSwitches(
68         DWORD Switches) = 0;
69
70     virtual HRESULT STDMETHODCALLTYPE GetCaps(
71         DDCAPS* pCaps) = 0;
72
73     virtual HRESULT STDMETHODCALLTYPE GetEmulatedCaps(
74         DDCAPS* pCaps) = 0;
75
76     virtual HRESULT STDMETHODCALLTYPE GetSurfaceDesc(
77         DDSURFACEDESC* pSurfaceDesc) = 0;
78
79     virtual HRESULT STDMETHODCALLTYPE GetFourCCCodes(
80         DWORD* pCount,
81         DWORD* pCodes) = 0;
82
83     virtual HRESULT STDMETHODCALLTYPE SetDirectDraw(
84         LPDIRECTDRAW pDirectDraw) = 0;
85
86     virtual HRESULT STDMETHODCALLTYPE GetDirectDraw(
87         LPDIRECTDRAW* ppDirectDraw) = 0;
88
89     virtual HRESULT STDMETHODCALLTYPE GetSurfaceType(
90         DWORD* pSurfaceType) = 0;
91
92     virtual HRESULT STDMETHODCALLTYPE SetDefault(
93         ) = 0;
94
95     virtual HRESULT STDMETHODCALLTYPE UseScanLine(
96         long UseScanLine) = 0;
97
98     virtual HRESULT STDMETHODCALLTYPE CanUseScanLine(
99         long* UseScanLine) = 0;
100
101     virtual HRESULT STDMETHODCALLTYPE UseOverlayStretch(
102         long UseOverlayStretch) = 0;
103
104     virtual HRESULT STDMETHODCALLTYPE CanUseOverlayStretch(
105         long* UseOverlayStretch) = 0;
106
107     virtual HRESULT STDMETHODCALLTYPE UseWhenFullScreen(
108         long UseWhenFullScreen) = 0;
109
110     virtual HRESULT STDMETHODCALLTYPE WillUseFullScreen(
111         long* UseWhenFullScreen) = 0;
112
113 };
114 #else
115 typedef struct IDirectDrawVideoVtbl IDirectDrawVideoVtbl;
116 struct IDirectDrawVideo {
117     const IDirectDrawVideoVtbl* lpVtbl;
118 };
119 struct IDirectDrawVideoVtbl {
120     ICOM_MSVTABLE_COMPAT_FIELDS
121
122     /*** IUnknown methods ***/
123     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
124         IDirectDrawVideo* This,
125         REFIID riid,
126         void** ppvObject);
127
128     ULONG (STDMETHODCALLTYPE *AddRef)(
129         IDirectDrawVideo* This);
130
131     ULONG (STDMETHODCALLTYPE *Release)(
132         IDirectDrawVideo* This);
133
134     /*** IDirectDrawVideo methods ***/
135     HRESULT (STDMETHODCALLTYPE *GetSwitches)(
136         IDirectDrawVideo* This,
137         DWORD* pSwitches);
138
139     HRESULT (STDMETHODCALLTYPE *SetSwitches)(
140         IDirectDrawVideo* This,
141         DWORD Switches);
142
143     HRESULT (STDMETHODCALLTYPE *GetCaps)(
144         IDirectDrawVideo* This,
145         DDCAPS* pCaps);
146
147     HRESULT (STDMETHODCALLTYPE *GetEmulatedCaps)(
148         IDirectDrawVideo* This,
149         DDCAPS* pCaps);
150
151     HRESULT (STDMETHODCALLTYPE *GetSurfaceDesc)(
152         IDirectDrawVideo* This,
153         DDSURFACEDESC* pSurfaceDesc);
154
155     HRESULT (STDMETHODCALLTYPE *GetFourCCCodes)(
156         IDirectDrawVideo* This,
157         DWORD* pCount,
158         DWORD* pCodes);
159
160     HRESULT (STDMETHODCALLTYPE *SetDirectDraw)(
161         IDirectDrawVideo* This,
162         LPDIRECTDRAW pDirectDraw);
163
164     HRESULT (STDMETHODCALLTYPE *GetDirectDraw)(
165         IDirectDrawVideo* This,
166         LPDIRECTDRAW* ppDirectDraw);
167
168     HRESULT (STDMETHODCALLTYPE *GetSurfaceType)(
169         IDirectDrawVideo* This,
170         DWORD* pSurfaceType);
171
172     HRESULT (STDMETHODCALLTYPE *SetDefault)(
173         IDirectDrawVideo* This);
174
175     HRESULT (STDMETHODCALLTYPE *UseScanLine)(
176         IDirectDrawVideo* This,
177         long UseScanLine);
178
179     HRESULT (STDMETHODCALLTYPE *CanUseScanLine)(
180         IDirectDrawVideo* This,
181         long* UseScanLine);
182
183     HRESULT (STDMETHODCALLTYPE *UseOverlayStretch)(
184         IDirectDrawVideo* This,
185         long UseOverlayStretch);
186
187     HRESULT (STDMETHODCALLTYPE *CanUseOverlayStretch)(
188         IDirectDrawVideo* This,
189         long* UseOverlayStretch);
190
191     HRESULT (STDMETHODCALLTYPE *UseWhenFullScreen)(
192         IDirectDrawVideo* This,
193         long UseWhenFullScreen);
194
195     HRESULT (STDMETHODCALLTYPE *WillUseFullScreen)(
196         IDirectDrawVideo* This,
197         long* UseWhenFullScreen);
198
199 };
200
201 /*** IUnknown methods ***/
202 #define IDirectDrawVideo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
203 #define IDirectDrawVideo_AddRef(p) (p)->lpVtbl->AddRef(p)
204 #define IDirectDrawVideo_Release(p) (p)->lpVtbl->Release(p)
205 /*** IDirectDrawVideo methods ***/
206 #define IDirectDrawVideo_GetSwitches(p,a) (p)->lpVtbl->GetSwitches(p,a)
207 #define IDirectDrawVideo_SetSwitches(p,a) (p)->lpVtbl->SetSwitches(p,a)
208 #define IDirectDrawVideo_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
209 #define IDirectDrawVideo_GetEmulatedCaps(p,a) (p)->lpVtbl->GetEmulatedCaps(p,a)
210 #define IDirectDrawVideo_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
211 #define IDirectDrawVideo_GetFourCCCodes(p,a,b) (p)->lpVtbl->GetFourCCCodes(p,a,b)
212 #define IDirectDrawVideo_SetDirectDraw(p,a) (p)->lpVtbl->SetDirectDraw(p,a)
213 #define IDirectDrawVideo_GetDirectDraw(p,a) (p)->lpVtbl->GetDirectDraw(p,a)
214 #define IDirectDrawVideo_GetSurfaceType(p,a) (p)->lpVtbl->GetSurfaceType(p,a)
215 #define IDirectDrawVideo_SetDefault(p) (p)->lpVtbl->SetDefault(p)
216 #define IDirectDrawVideo_UseScanLine(p,a) (p)->lpVtbl->UseScanLine(p,a)
217 #define IDirectDrawVideo_CanUseScanLine(p,a) (p)->lpVtbl->CanUseScanLine(p,a)
218 #define IDirectDrawVideo_UseOverlayStretch(p,a) (p)->lpVtbl->UseOverlayStretch(p,a)
219 #define IDirectDrawVideo_CanUseOverlayStretch(p,a) (p)->lpVtbl->CanUseOverlayStretch(p,a)
220 #define IDirectDrawVideo_UseWhenFullScreen(p,a) (p)->lpVtbl->UseWhenFullScreen(p,a)
221 #define IDirectDrawVideo_WillUseFullScreen(p,a) (p)->lpVtbl->WillUseFullScreen(p,a)
222
223 #endif
224
225 #define IDirectDrawVideo_METHODS \
226     ICOM_MSVTABLE_COMPAT_FIELDS \
227     /*** IUnknown methods ***/ \
228     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
229     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
230     STDMETHOD_(ULONG,Release)(THIS) PURE; \
231     /*** IDirectDrawVideo methods ***/ \
232     STDMETHOD_(HRESULT,GetSwitches)(THIS_ DWORD* pSwitches) PURE; \
233     STDMETHOD_(HRESULT,SetSwitches)(THIS_ DWORD Switches) PURE; \
234     STDMETHOD_(HRESULT,GetCaps)(THIS_ DDCAPS* pCaps) PURE; \
235     STDMETHOD_(HRESULT,GetEmulatedCaps)(THIS_ DDCAPS* pCaps) PURE; \
236     STDMETHOD_(HRESULT,GetSurfaceDesc)(THIS_ DDSURFACEDESC* pSurfaceDesc) PURE; \
237     STDMETHOD_(HRESULT,GetFourCCCodes)(THIS_ DWORD* pCount, DWORD* pCodes) PURE; \
238     STDMETHOD_(HRESULT,SetDirectDraw)(THIS_ LPDIRECTDRAW pDirectDraw) PURE; \
239     STDMETHOD_(HRESULT,GetDirectDraw)(THIS_ LPDIRECTDRAW* ppDirectDraw) PURE; \
240     STDMETHOD_(HRESULT,GetSurfaceType)(THIS_ DWORD* pSurfaceType) PURE; \
241     STDMETHOD_(HRESULT,SetDefault)(THIS) PURE; \
242     STDMETHOD_(HRESULT,UseScanLine)(THIS_ long UseScanLine) PURE; \
243     STDMETHOD_(HRESULT,CanUseScanLine)(THIS_ long* UseScanLine) PURE; \
244     STDMETHOD_(HRESULT,UseOverlayStretch)(THIS_ long UseOverlayStretch) PURE; \
245     STDMETHOD_(HRESULT,CanUseOverlayStretch)(THIS_ long* UseOverlayStretch) PURE; \
246     STDMETHOD_(HRESULT,UseWhenFullScreen)(THIS_ long UseWhenFullScreen) PURE; \
247     STDMETHOD_(HRESULT,WillUseFullScreen)(THIS_ long* UseWhenFullScreen) PURE;
248
249 HRESULT CALLBACK IDirectDrawVideo_GetSwitches_Proxy(
250     IDirectDrawVideo* This,
251     DWORD* pSwitches);
252 void __RPC_STUB IDirectDrawVideo_GetSwitches_Stub(
253     struct IRpcStubBuffer* This,
254     struct IRpcChannelBuffer* pRpcChannelBuffer,
255     PRPC_MESSAGE pRpcMessage,
256     DWORD* pdwStubPhase);
257 HRESULT CALLBACK IDirectDrawVideo_SetSwitches_Proxy(
258     IDirectDrawVideo* This,
259     DWORD Switches);
260 void __RPC_STUB IDirectDrawVideo_SetSwitches_Stub(
261     struct IRpcStubBuffer* This,
262     struct IRpcChannelBuffer* pRpcChannelBuffer,
263     PRPC_MESSAGE pRpcMessage,
264     DWORD* pdwStubPhase);
265 HRESULT CALLBACK IDirectDrawVideo_GetCaps_Proxy(
266     IDirectDrawVideo* This,
267     DDCAPS* pCaps);
268 void __RPC_STUB IDirectDrawVideo_GetCaps_Stub(
269     struct IRpcStubBuffer* This,
270     struct IRpcChannelBuffer* pRpcChannelBuffer,
271     PRPC_MESSAGE pRpcMessage,
272     DWORD* pdwStubPhase);
273 HRESULT CALLBACK IDirectDrawVideo_GetEmulatedCaps_Proxy(
274     IDirectDrawVideo* This,
275     DDCAPS* pCaps);
276 void __RPC_STUB IDirectDrawVideo_GetEmulatedCaps_Stub(
277     struct IRpcStubBuffer* This,
278     struct IRpcChannelBuffer* pRpcChannelBuffer,
279     PRPC_MESSAGE pRpcMessage,
280     DWORD* pdwStubPhase);
281 HRESULT CALLBACK IDirectDrawVideo_GetSurfaceDesc_Proxy(
282     IDirectDrawVideo* This,
283     DDSURFACEDESC* pSurfaceDesc);
284 void __RPC_STUB IDirectDrawVideo_GetSurfaceDesc_Stub(
285     struct IRpcStubBuffer* This,
286     struct IRpcChannelBuffer* pRpcChannelBuffer,
287     PRPC_MESSAGE pRpcMessage,
288     DWORD* pdwStubPhase);
289 HRESULT CALLBACK IDirectDrawVideo_GetFourCCCodes_Proxy(
290     IDirectDrawVideo* This,
291     DWORD* pCount,
292     DWORD* pCodes);
293 void __RPC_STUB IDirectDrawVideo_GetFourCCCodes_Stub(
294     struct IRpcStubBuffer* This,
295     struct IRpcChannelBuffer* pRpcChannelBuffer,
296     PRPC_MESSAGE pRpcMessage,
297     DWORD* pdwStubPhase);
298 HRESULT CALLBACK IDirectDrawVideo_SetDirectDraw_Proxy(
299     IDirectDrawVideo* This,
300     LPDIRECTDRAW pDirectDraw);
301 void __RPC_STUB IDirectDrawVideo_SetDirectDraw_Stub(
302     struct IRpcStubBuffer* This,
303     struct IRpcChannelBuffer* pRpcChannelBuffer,
304     PRPC_MESSAGE pRpcMessage,
305     DWORD* pdwStubPhase);
306 HRESULT CALLBACK IDirectDrawVideo_GetDirectDraw_Proxy(
307     IDirectDrawVideo* This,
308     LPDIRECTDRAW* ppDirectDraw);
309 void __RPC_STUB IDirectDrawVideo_GetDirectDraw_Stub(
310     struct IRpcStubBuffer* This,
311     struct IRpcChannelBuffer* pRpcChannelBuffer,
312     PRPC_MESSAGE pRpcMessage,
313     DWORD* pdwStubPhase);
314 HRESULT CALLBACK IDirectDrawVideo_GetSurfaceType_Proxy(
315     IDirectDrawVideo* This,
316     DWORD* pSurfaceType);
317 void __RPC_STUB IDirectDrawVideo_GetSurfaceType_Stub(
318     struct IRpcStubBuffer* This,
319     struct IRpcChannelBuffer* pRpcChannelBuffer,
320     PRPC_MESSAGE pRpcMessage,
321     DWORD* pdwStubPhase);
322 HRESULT CALLBACK IDirectDrawVideo_SetDefault_Proxy(
323     IDirectDrawVideo* This);
324 void __RPC_STUB IDirectDrawVideo_SetDefault_Stub(
325     struct IRpcStubBuffer* This,
326     struct IRpcChannelBuffer* pRpcChannelBuffer,
327     PRPC_MESSAGE pRpcMessage,
328     DWORD* pdwStubPhase);
329 HRESULT CALLBACK IDirectDrawVideo_UseScanLine_Proxy(
330     IDirectDrawVideo* This,
331     long UseScanLine);
332 void __RPC_STUB IDirectDrawVideo_UseScanLine_Stub(
333     struct IRpcStubBuffer* This,
334     struct IRpcChannelBuffer* pRpcChannelBuffer,
335     PRPC_MESSAGE pRpcMessage,
336     DWORD* pdwStubPhase);
337 HRESULT CALLBACK IDirectDrawVideo_CanUseScanLine_Proxy(
338     IDirectDrawVideo* This,
339     long* UseScanLine);
340 void __RPC_STUB IDirectDrawVideo_CanUseScanLine_Stub(
341     struct IRpcStubBuffer* This,
342     struct IRpcChannelBuffer* pRpcChannelBuffer,
343     PRPC_MESSAGE pRpcMessage,
344     DWORD* pdwStubPhase);
345 HRESULT CALLBACK IDirectDrawVideo_UseOverlayStretch_Proxy(
346     IDirectDrawVideo* This,
347     long UseOverlayStretch);
348 void __RPC_STUB IDirectDrawVideo_UseOverlayStretch_Stub(
349     struct IRpcStubBuffer* This,
350     struct IRpcChannelBuffer* pRpcChannelBuffer,
351     PRPC_MESSAGE pRpcMessage,
352     DWORD* pdwStubPhase);
353 HRESULT CALLBACK IDirectDrawVideo_CanUseOverlayStretch_Proxy(
354     IDirectDrawVideo* This,
355     long* UseOverlayStretch);
356 void __RPC_STUB IDirectDrawVideo_CanUseOverlayStretch_Stub(
357     struct IRpcStubBuffer* This,
358     struct IRpcChannelBuffer* pRpcChannelBuffer,
359     PRPC_MESSAGE pRpcMessage,
360     DWORD* pdwStubPhase);
361 HRESULT CALLBACK IDirectDrawVideo_UseWhenFullScreen_Proxy(
362     IDirectDrawVideo* This,
363     long UseWhenFullScreen);
364 void __RPC_STUB IDirectDrawVideo_UseWhenFullScreen_Stub(
365     struct IRpcStubBuffer* This,
366     struct IRpcChannelBuffer* pRpcChannelBuffer,
367     PRPC_MESSAGE pRpcMessage,
368     DWORD* pdwStubPhase);
369 HRESULT CALLBACK IDirectDrawVideo_WillUseFullScreen_Proxy(
370     IDirectDrawVideo* This,
371     long* UseWhenFullScreen);
372 void __RPC_STUB IDirectDrawVideo_WillUseFullScreen_Stub(
373     struct IRpcStubBuffer* This,
374     struct IRpcChannelBuffer* pRpcChannelBuffer,
375     PRPC_MESSAGE pRpcMessage,
376     DWORD* pdwStubPhase);
377
378 #endif  /* __IDirectDrawVideo_INTERFACE_DEFINED__ */
379
380 #ifndef __IQualProp_FWD_DEFINED__
381 #define __IQualProp_FWD_DEFINED__
382 typedef struct IQualProp IQualProp;
383 #endif
384
385 /*****************************************************************************
386  * IQualProp interface
387  */
388 #ifndef __IQualProp_INTERFACE_DEFINED__
389 #define __IQualProp_INTERFACE_DEFINED__
390
391 #if defined(__cplusplus) && !defined(CINTERFACE)
392 struct IQualProp : public IUnknown
393 {
394     virtual HRESULT STDMETHODCALLTYPE get_FramesDroppedInRenderer(
395         int* pcFrames) = 0;
396
397     virtual HRESULT STDMETHODCALLTYPE get_FramesDrawn(
398         int* pcFramesDrawn) = 0;
399
400     virtual HRESULT STDMETHODCALLTYPE get_AvgFrameRate(
401         int* piAvgFrameRate) = 0;
402
403     virtual HRESULT STDMETHODCALLTYPE get_Jitter(
404         int* iJitter) = 0;
405
406     virtual HRESULT STDMETHODCALLTYPE get_AvgSyncOffset(
407         int* piAvg) = 0;
408
409     virtual HRESULT STDMETHODCALLTYPE get_DevSyncOffset(
410         int* piDev) = 0;
411
412 };
413 #else
414 typedef struct IQualPropVtbl IQualPropVtbl;
415 struct IQualProp {
416     const IQualPropVtbl* lpVtbl;
417 };
418 struct IQualPropVtbl {
419     ICOM_MSVTABLE_COMPAT_FIELDS
420
421     /*** IUnknown methods ***/
422     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
423         IQualProp* This,
424         REFIID riid,
425         void** ppvObject);
426
427     ULONG (STDMETHODCALLTYPE *AddRef)(
428         IQualProp* This);
429
430     ULONG (STDMETHODCALLTYPE *Release)(
431         IQualProp* This);
432
433     /*** IQualProp methods ***/
434     HRESULT (STDMETHODCALLTYPE *get_FramesDroppedInRenderer)(
435         IQualProp* This,
436         int* pcFrames);
437
438     HRESULT (STDMETHODCALLTYPE *get_FramesDrawn)(
439         IQualProp* This,
440         int* pcFramesDrawn);
441
442     HRESULT (STDMETHODCALLTYPE *get_AvgFrameRate)(
443         IQualProp* This,
444         int* piAvgFrameRate);
445
446     HRESULT (STDMETHODCALLTYPE *get_Jitter)(
447         IQualProp* This,
448         int* iJitter);
449
450     HRESULT (STDMETHODCALLTYPE *get_AvgSyncOffset)(
451         IQualProp* This,
452         int* piAvg);
453
454     HRESULT (STDMETHODCALLTYPE *get_DevSyncOffset)(
455         IQualProp* This,
456         int* piDev);
457
458 };
459
460 /*** IUnknown methods ***/
461 #define IQualProp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
462 #define IQualProp_AddRef(p) (p)->lpVtbl->AddRef(p)
463 #define IQualProp_Release(p) (p)->lpVtbl->Release(p)
464 /*** IQualProp methods ***/
465 #define IQualProp_get_FramesDroppedInRenderer(p,a) (p)->lpVtbl->get_FramesDroppedInRenderer(p,a)
466 #define IQualProp_get_FramesDrawn(p,a) (p)->lpVtbl->get_FramesDrawn(p,a)
467 #define IQualProp_get_AvgFrameRate(p,a) (p)->lpVtbl->get_AvgFrameRate(p,a)
468 #define IQualProp_get_Jitter(p,a) (p)->lpVtbl->get_Jitter(p,a)
469 #define IQualProp_get_AvgSyncOffset(p,a) (p)->lpVtbl->get_AvgSyncOffset(p,a)
470 #define IQualProp_get_DevSyncOffset(p,a) (p)->lpVtbl->get_DevSyncOffset(p,a)
471
472 #endif
473
474 #define IQualProp_METHODS \
475     ICOM_MSVTABLE_COMPAT_FIELDS \
476     /*** IUnknown methods ***/ \
477     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
478     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
479     STDMETHOD_(ULONG,Release)(THIS) PURE; \
480     /*** IQualProp methods ***/ \
481     STDMETHOD_(HRESULT,get_FramesDroppedInRenderer)(THIS_ int* pcFrames) PURE; \
482     STDMETHOD_(HRESULT,get_FramesDrawn)(THIS_ int* pcFramesDrawn) PURE; \
483     STDMETHOD_(HRESULT,get_AvgFrameRate)(THIS_ int* piAvgFrameRate) PURE; \
484     STDMETHOD_(HRESULT,get_Jitter)(THIS_ int* iJitter) PURE; \
485     STDMETHOD_(HRESULT,get_AvgSyncOffset)(THIS_ int* piAvg) PURE; \
486     STDMETHOD_(HRESULT,get_DevSyncOffset)(THIS_ int* piDev) PURE;
487
488 HRESULT CALLBACK IQualProp_get_FramesDroppedInRenderer_Proxy(
489     IQualProp* This,
490     int* pcFrames);
491 void __RPC_STUB IQualProp_get_FramesDroppedInRenderer_Stub(
492     struct IRpcStubBuffer* This,
493     struct IRpcChannelBuffer* pRpcChannelBuffer,
494     PRPC_MESSAGE pRpcMessage,
495     DWORD* pdwStubPhase);
496 HRESULT CALLBACK IQualProp_get_FramesDrawn_Proxy(
497     IQualProp* This,
498     int* pcFramesDrawn);
499 void __RPC_STUB IQualProp_get_FramesDrawn_Stub(
500     struct IRpcStubBuffer* This,
501     struct IRpcChannelBuffer* pRpcChannelBuffer,
502     PRPC_MESSAGE pRpcMessage,
503     DWORD* pdwStubPhase);
504 HRESULT CALLBACK IQualProp_get_AvgFrameRate_Proxy(
505     IQualProp* This,
506     int* piAvgFrameRate);
507 void __RPC_STUB IQualProp_get_AvgFrameRate_Stub(
508     struct IRpcStubBuffer* This,
509     struct IRpcChannelBuffer* pRpcChannelBuffer,
510     PRPC_MESSAGE pRpcMessage,
511     DWORD* pdwStubPhase);
512 HRESULT CALLBACK IQualProp_get_Jitter_Proxy(
513     IQualProp* This,
514     int* iJitter);
515 void __RPC_STUB IQualProp_get_Jitter_Stub(
516     struct IRpcStubBuffer* This,
517     struct IRpcChannelBuffer* pRpcChannelBuffer,
518     PRPC_MESSAGE pRpcMessage,
519     DWORD* pdwStubPhase);
520 HRESULT CALLBACK IQualProp_get_AvgSyncOffset_Proxy(
521     IQualProp* This,
522     int* piAvg);
523 void __RPC_STUB IQualProp_get_AvgSyncOffset_Stub(
524     struct IRpcStubBuffer* This,
525     struct IRpcChannelBuffer* pRpcChannelBuffer,
526     PRPC_MESSAGE pRpcMessage,
527     DWORD* pdwStubPhase);
528 HRESULT CALLBACK IQualProp_get_DevSyncOffset_Proxy(
529     IQualProp* This,
530     int* piDev);
531 void __RPC_STUB IQualProp_get_DevSyncOffset_Stub(
532     struct IRpcStubBuffer* This,
533     struct IRpcChannelBuffer* pRpcChannelBuffer,
534     PRPC_MESSAGE pRpcMessage,
535     DWORD* pdwStubPhase);
536
537 #endif  /* __IQualProp_INTERFACE_DEFINED__ */
538
539 #ifndef __IFullScreenVideo_FWD_DEFINED__
540 #define __IFullScreenVideo_FWD_DEFINED__
541 typedef struct IFullScreenVideo IFullScreenVideo;
542 #endif
543
544 /*****************************************************************************
545  * IFullScreenVideo interface
546  */
547 #ifndef __IFullScreenVideo_INTERFACE_DEFINED__
548 #define __IFullScreenVideo_INTERFACE_DEFINED__
549
550 #if defined(__cplusplus) && !defined(CINTERFACE)
551 struct IFullScreenVideo : public IUnknown
552 {
553     virtual HRESULT STDMETHODCALLTYPE CountModes(
554         long* pModes) = 0;
555
556     virtual HRESULT STDMETHODCALLTYPE GetModeInfo(
557         long Mode,
558         long* pWidth,
559         long* pHeight,
560         long* pDepth) = 0;
561
562     virtual HRESULT STDMETHODCALLTYPE GetCurrentMode(
563         long* pMode) = 0;
564
565     virtual HRESULT STDMETHODCALLTYPE IsModeAvailable(
566         long Mode) = 0;
567
568     virtual HRESULT STDMETHODCALLTYPE IsModeEnabled(
569         long Mode) = 0;
570
571     virtual HRESULT STDMETHODCALLTYPE SetEnabled(
572         long Mode,
573         long bEnabled) = 0;
574
575     virtual HRESULT STDMETHODCALLTYPE GetClipFactor(
576         long* pClipFactor) = 0;
577
578     virtual HRESULT STDMETHODCALLTYPE SetClipFactor(
579         long ClipFactor) = 0;
580
581     virtual HRESULT STDMETHODCALLTYPE SetMessageDrain(
582         HWND hwnd) = 0;
583
584     virtual HRESULT STDMETHODCALLTYPE GetMessageDrain(
585         HWND* hwnd) = 0;
586
587     virtual HRESULT STDMETHODCALLTYPE SetMonitor(
588         long Monitor) = 0;
589
590     virtual HRESULT STDMETHODCALLTYPE GetMonitor(
591         long* Monitor) = 0;
592
593     virtual HRESULT STDMETHODCALLTYPE HideOnDeactivate(
594         long Hide) = 0;
595
596     virtual HRESULT STDMETHODCALLTYPE IsHideOnDeactivate(
597         ) = 0;
598
599     virtual HRESULT STDMETHODCALLTYPE SetCaption(
600         BSTR strCaption) = 0;
601
602     virtual HRESULT STDMETHODCALLTYPE GetCaption(
603         BSTR* pstrCaption) = 0;
604
605     virtual HRESULT STDMETHODCALLTYPE SetDefault(
606         ) = 0;
607
608 };
609 #else
610 typedef struct IFullScreenVideoVtbl IFullScreenVideoVtbl;
611 struct IFullScreenVideo {
612     const IFullScreenVideoVtbl* lpVtbl;
613 };
614 struct IFullScreenVideoVtbl {
615     ICOM_MSVTABLE_COMPAT_FIELDS
616
617     /*** IUnknown methods ***/
618     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
619         IFullScreenVideo* This,
620         REFIID riid,
621         void** ppvObject);
622
623     ULONG (STDMETHODCALLTYPE *AddRef)(
624         IFullScreenVideo* This);
625
626     ULONG (STDMETHODCALLTYPE *Release)(
627         IFullScreenVideo* This);
628
629     /*** IFullScreenVideo methods ***/
630     HRESULT (STDMETHODCALLTYPE *CountModes)(
631         IFullScreenVideo* This,
632         long* pModes);
633
634     HRESULT (STDMETHODCALLTYPE *GetModeInfo)(
635         IFullScreenVideo* This,
636         long Mode,
637         long* pWidth,
638         long* pHeight,
639         long* pDepth);
640
641     HRESULT (STDMETHODCALLTYPE *GetCurrentMode)(
642         IFullScreenVideo* This,
643         long* pMode);
644
645     HRESULT (STDMETHODCALLTYPE *IsModeAvailable)(
646         IFullScreenVideo* This,
647         long Mode);
648
649     HRESULT (STDMETHODCALLTYPE *IsModeEnabled)(
650         IFullScreenVideo* This,
651         long Mode);
652
653     HRESULT (STDMETHODCALLTYPE *SetEnabled)(
654         IFullScreenVideo* This,
655         long Mode,
656         long bEnabled);
657
658     HRESULT (STDMETHODCALLTYPE *GetClipFactor)(
659         IFullScreenVideo* This,
660         long* pClipFactor);
661
662     HRESULT (STDMETHODCALLTYPE *SetClipFactor)(
663         IFullScreenVideo* This,
664         long ClipFactor);
665
666     HRESULT (STDMETHODCALLTYPE *SetMessageDrain)(
667         IFullScreenVideo* This,
668         HWND hwnd);
669
670     HRESULT (STDMETHODCALLTYPE *GetMessageDrain)(
671         IFullScreenVideo* This,
672         HWND* hwnd);
673
674     HRESULT (STDMETHODCALLTYPE *SetMonitor)(
675         IFullScreenVideo* This,
676         long Monitor);
677
678     HRESULT (STDMETHODCALLTYPE *GetMonitor)(
679         IFullScreenVideo* This,
680         long* Monitor);
681
682     HRESULT (STDMETHODCALLTYPE *HideOnDeactivate)(
683         IFullScreenVideo* This,
684         long Hide);
685
686     HRESULT (STDMETHODCALLTYPE *IsHideOnDeactivate)(
687         IFullScreenVideo* This);
688
689     HRESULT (STDMETHODCALLTYPE *SetCaption)(
690         IFullScreenVideo* This,
691         BSTR strCaption);
692
693     HRESULT (STDMETHODCALLTYPE *GetCaption)(
694         IFullScreenVideo* This,
695         BSTR* pstrCaption);
696
697     HRESULT (STDMETHODCALLTYPE *SetDefault)(
698         IFullScreenVideo* This);
699
700 };
701
702 /*** IUnknown methods ***/
703 #define IFullScreenVideo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
704 #define IFullScreenVideo_AddRef(p) (p)->lpVtbl->AddRef(p)
705 #define IFullScreenVideo_Release(p) (p)->lpVtbl->Release(p)
706 /*** IFullScreenVideo methods ***/
707 #define IFullScreenVideo_CountModes(p,a) (p)->lpVtbl->CountModes(p,a)
708 #define IFullScreenVideo_GetModeInfo(p,a,b,c,d) (p)->lpVtbl->GetModeInfo(p,a,b,c,d)
709 #define IFullScreenVideo_GetCurrentMode(p,a) (p)->lpVtbl->GetCurrentMode(p,a)
710 #define IFullScreenVideo_IsModeAvailable(p,a) (p)->lpVtbl->IsModeAvailable(p,a)
711 #define IFullScreenVideo_IsModeEnabled(p,a) (p)->lpVtbl->IsModeEnabled(p,a)
712 #define IFullScreenVideo_SetEnabled(p,a,b) (p)->lpVtbl->SetEnabled(p,a,b)
713 #define IFullScreenVideo_GetClipFactor(p,a) (p)->lpVtbl->GetClipFactor(p,a)
714 #define IFullScreenVideo_SetClipFactor(p,a) (p)->lpVtbl->SetClipFactor(p,a)
715 #define IFullScreenVideo_SetMessageDrain(p,a) (p)->lpVtbl->SetMessageDrain(p,a)
716 #define IFullScreenVideo_GetMessageDrain(p,a) (p)->lpVtbl->GetMessageDrain(p,a)
717 #define IFullScreenVideo_SetMonitor(p,a) (p)->lpVtbl->SetMonitor(p,a)
718 #define IFullScreenVideo_GetMonitor(p,a) (p)->lpVtbl->GetMonitor(p,a)
719 #define IFullScreenVideo_HideOnDeactivate(p,a) (p)->lpVtbl->HideOnDeactivate(p,a)
720 #define IFullScreenVideo_IsHideOnDeactivate(p) (p)->lpVtbl->IsHideOnDeactivate(p)
721 #define IFullScreenVideo_SetCaption(p,a) (p)->lpVtbl->SetCaption(p,a)
722 #define IFullScreenVideo_GetCaption(p,a) (p)->lpVtbl->GetCaption(p,a)
723 #define IFullScreenVideo_SetDefault(p) (p)->lpVtbl->SetDefault(p)
724
725 #endif
726
727 #define IFullScreenVideo_METHODS \
728     ICOM_MSVTABLE_COMPAT_FIELDS \
729     /*** IUnknown methods ***/ \
730     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
731     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
732     STDMETHOD_(ULONG,Release)(THIS) PURE; \
733     /*** IFullScreenVideo methods ***/ \
734     STDMETHOD_(HRESULT,CountModes)(THIS_ long* pModes) PURE; \
735     STDMETHOD_(HRESULT,GetModeInfo)(THIS_ long Mode, long* pWidth, long* pHeight, long* pDepth) PURE; \
736     STDMETHOD_(HRESULT,GetCurrentMode)(THIS_ long* pMode) PURE; \
737     STDMETHOD_(HRESULT,IsModeAvailable)(THIS_ long Mode) PURE; \
738     STDMETHOD_(HRESULT,IsModeEnabled)(THIS_ long Mode) PURE; \
739     STDMETHOD_(HRESULT,SetEnabled)(THIS_ long Mode, long bEnabled) PURE; \
740     STDMETHOD_(HRESULT,GetClipFactor)(THIS_ long* pClipFactor) PURE; \
741     STDMETHOD_(HRESULT,SetClipFactor)(THIS_ long ClipFactor) PURE; \
742     STDMETHOD_(HRESULT,SetMessageDrain)(THIS_ HWND hwnd) PURE; \
743     STDMETHOD_(HRESULT,GetMessageDrain)(THIS_ HWND* hwnd) PURE; \
744     STDMETHOD_(HRESULT,SetMonitor)(THIS_ long Monitor) PURE; \
745     STDMETHOD_(HRESULT,GetMonitor)(THIS_ long* Monitor) PURE; \
746     STDMETHOD_(HRESULT,HideOnDeactivate)(THIS_ long Hide) PURE; \
747     STDMETHOD_(HRESULT,IsHideOnDeactivate)(THIS) PURE; \
748     STDMETHOD_(HRESULT,SetCaption)(THIS_ BSTR strCaption) PURE; \
749     STDMETHOD_(HRESULT,GetCaption)(THIS_ BSTR* pstrCaption) PURE; \
750     STDMETHOD_(HRESULT,SetDefault)(THIS) PURE;
751
752 HRESULT CALLBACK IFullScreenVideo_CountModes_Proxy(
753     IFullScreenVideo* This,
754     long* pModes);
755 void __RPC_STUB IFullScreenVideo_CountModes_Stub(
756     struct IRpcStubBuffer* This,
757     struct IRpcChannelBuffer* pRpcChannelBuffer,
758     PRPC_MESSAGE pRpcMessage,
759     DWORD* pdwStubPhase);
760 HRESULT CALLBACK IFullScreenVideo_GetModeInfo_Proxy(
761     IFullScreenVideo* This,
762     long Mode,
763     long* pWidth,
764     long* pHeight,
765     long* pDepth);
766 void __RPC_STUB IFullScreenVideo_GetModeInfo_Stub(
767     struct IRpcStubBuffer* This,
768     struct IRpcChannelBuffer* pRpcChannelBuffer,
769     PRPC_MESSAGE pRpcMessage,
770     DWORD* pdwStubPhase);
771 HRESULT CALLBACK IFullScreenVideo_GetCurrentMode_Proxy(
772     IFullScreenVideo* This,
773     long* pMode);
774 void __RPC_STUB IFullScreenVideo_GetCurrentMode_Stub(
775     struct IRpcStubBuffer* This,
776     struct IRpcChannelBuffer* pRpcChannelBuffer,
777     PRPC_MESSAGE pRpcMessage,
778     DWORD* pdwStubPhase);
779 HRESULT CALLBACK IFullScreenVideo_IsModeAvailable_Proxy(
780     IFullScreenVideo* This,
781     long Mode);
782 void __RPC_STUB IFullScreenVideo_IsModeAvailable_Stub(
783     struct IRpcStubBuffer* This,
784     struct IRpcChannelBuffer* pRpcChannelBuffer,
785     PRPC_MESSAGE pRpcMessage,
786     DWORD* pdwStubPhase);
787 HRESULT CALLBACK IFullScreenVideo_IsModeEnabled_Proxy(
788     IFullScreenVideo* This,
789     long Mode);
790 void __RPC_STUB IFullScreenVideo_IsModeEnabled_Stub(
791     struct IRpcStubBuffer* This,
792     struct IRpcChannelBuffer* pRpcChannelBuffer,
793     PRPC_MESSAGE pRpcMessage,
794     DWORD* pdwStubPhase);
795 HRESULT CALLBACK IFullScreenVideo_SetEnabled_Proxy(
796     IFullScreenVideo* This,
797     long Mode,
798     long bEnabled);
799 void __RPC_STUB IFullScreenVideo_SetEnabled_Stub(
800     struct IRpcStubBuffer* This,
801     struct IRpcChannelBuffer* pRpcChannelBuffer,
802     PRPC_MESSAGE pRpcMessage,
803     DWORD* pdwStubPhase);
804 HRESULT CALLBACK IFullScreenVideo_GetClipFactor_Proxy(
805     IFullScreenVideo* This,
806     long* pClipFactor);
807 void __RPC_STUB IFullScreenVideo_GetClipFactor_Stub(
808     struct IRpcStubBuffer* This,
809     struct IRpcChannelBuffer* pRpcChannelBuffer,
810     PRPC_MESSAGE pRpcMessage,
811     DWORD* pdwStubPhase);
812 HRESULT CALLBACK IFullScreenVideo_SetClipFactor_Proxy(
813     IFullScreenVideo* This,
814     long ClipFactor);
815 void __RPC_STUB IFullScreenVideo_SetClipFactor_Stub(
816     struct IRpcStubBuffer* This,
817     struct IRpcChannelBuffer* pRpcChannelBuffer,
818     PRPC_MESSAGE pRpcMessage,
819     DWORD* pdwStubPhase);
820 HRESULT CALLBACK IFullScreenVideo_SetMessageDrain_Proxy(
821     IFullScreenVideo* This,
822     HWND hwnd);
823 void __RPC_STUB IFullScreenVideo_SetMessageDrain_Stub(
824     struct IRpcStubBuffer* This,
825     struct IRpcChannelBuffer* pRpcChannelBuffer,
826     PRPC_MESSAGE pRpcMessage,
827     DWORD* pdwStubPhase);
828 HRESULT CALLBACK IFullScreenVideo_GetMessageDrain_Proxy(
829     IFullScreenVideo* This,
830     HWND* hwnd);
831 void __RPC_STUB IFullScreenVideo_GetMessageDrain_Stub(
832     struct IRpcStubBuffer* This,
833     struct IRpcChannelBuffer* pRpcChannelBuffer,
834     PRPC_MESSAGE pRpcMessage,
835     DWORD* pdwStubPhase);
836 HRESULT CALLBACK IFullScreenVideo_SetMonitor_Proxy(
837     IFullScreenVideo* This,
838     long Monitor);
839 void __RPC_STUB IFullScreenVideo_SetMonitor_Stub(
840     struct IRpcStubBuffer* This,
841     struct IRpcChannelBuffer* pRpcChannelBuffer,
842     PRPC_MESSAGE pRpcMessage,
843     DWORD* pdwStubPhase);
844 HRESULT CALLBACK IFullScreenVideo_GetMonitor_Proxy(
845     IFullScreenVideo* This,
846     long* Monitor);
847 void __RPC_STUB IFullScreenVideo_GetMonitor_Stub(
848     struct IRpcStubBuffer* This,
849     struct IRpcChannelBuffer* pRpcChannelBuffer,
850     PRPC_MESSAGE pRpcMessage,
851     DWORD* pdwStubPhase);
852 HRESULT CALLBACK IFullScreenVideo_HideOnDeactivate_Proxy(
853     IFullScreenVideo* This,
854     long Hide);
855 void __RPC_STUB IFullScreenVideo_HideOnDeactivate_Stub(
856     struct IRpcStubBuffer* This,
857     struct IRpcChannelBuffer* pRpcChannelBuffer,
858     PRPC_MESSAGE pRpcMessage,
859     DWORD* pdwStubPhase);
860 HRESULT CALLBACK IFullScreenVideo_IsHideOnDeactivate_Proxy(
861     IFullScreenVideo* This);
862 void __RPC_STUB IFullScreenVideo_IsHideOnDeactivate_Stub(
863     struct IRpcStubBuffer* This,
864     struct IRpcChannelBuffer* pRpcChannelBuffer,
865     PRPC_MESSAGE pRpcMessage,
866     DWORD* pdwStubPhase);
867 HRESULT CALLBACK IFullScreenVideo_SetCaption_Proxy(
868     IFullScreenVideo* This,
869     BSTR strCaption);
870 void __RPC_STUB IFullScreenVideo_SetCaption_Stub(
871     struct IRpcStubBuffer* This,
872     struct IRpcChannelBuffer* pRpcChannelBuffer,
873     PRPC_MESSAGE pRpcMessage,
874     DWORD* pdwStubPhase);
875 HRESULT CALLBACK IFullScreenVideo_GetCaption_Proxy(
876     IFullScreenVideo* This,
877     BSTR* pstrCaption);
878 void __RPC_STUB IFullScreenVideo_GetCaption_Stub(
879     struct IRpcStubBuffer* This,
880     struct IRpcChannelBuffer* pRpcChannelBuffer,
881     PRPC_MESSAGE pRpcMessage,
882     DWORD* pdwStubPhase);
883 HRESULT CALLBACK IFullScreenVideo_SetDefault_Proxy(
884     IFullScreenVideo* This);
885 void __RPC_STUB IFullScreenVideo_SetDefault_Stub(
886     struct IRpcStubBuffer* This,
887     struct IRpcChannelBuffer* pRpcChannelBuffer,
888     PRPC_MESSAGE pRpcMessage,
889     DWORD* pdwStubPhase);
890
891 #endif  /* __IFullScreenVideo_INTERFACE_DEFINED__ */
892
893 #ifndef __IFullScreenVideoEx_FWD_DEFINED__
894 #define __IFullScreenVideoEx_FWD_DEFINED__
895 typedef struct IFullScreenVideoEx IFullScreenVideoEx;
896 #endif
897
898 /*****************************************************************************
899  * IFullScreenVideoEx interface
900  */
901 #ifndef __IFullScreenVideoEx_INTERFACE_DEFINED__
902 #define __IFullScreenVideoEx_INTERFACE_DEFINED__
903
904 #if defined(__cplusplus) && !defined(CINTERFACE)
905 struct IFullScreenVideoEx : public IFullScreenVideo
906 {
907     virtual HRESULT STDMETHODCALLTYPE SetAcceleratorTable(
908         HWND hwnd,
909         HACCEL hAccel) = 0;
910
911     virtual HRESULT STDMETHODCALLTYPE GetAcceleratorTable(
912         HWND* phwnd,
913         HACCEL* phAccel) = 0;
914
915     virtual HRESULT STDMETHODCALLTYPE KeepPixelAspectRatio(
916         long KeepAspect) = 0;
917
918     virtual HRESULT STDMETHODCALLTYPE IsKeepPixelAspectRatio(
919         long* pKeepAspect) = 0;
920
921 };
922 #else
923 typedef struct IFullScreenVideoExVtbl IFullScreenVideoExVtbl;
924 struct IFullScreenVideoEx {
925     const IFullScreenVideoExVtbl* lpVtbl;
926 };
927 struct IFullScreenVideoExVtbl {
928     ICOM_MSVTABLE_COMPAT_FIELDS
929
930     /*** IUnknown methods ***/
931     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
932         IFullScreenVideoEx* This,
933         REFIID riid,
934         void** ppvObject);
935
936     ULONG (STDMETHODCALLTYPE *AddRef)(
937         IFullScreenVideoEx* This);
938
939     ULONG (STDMETHODCALLTYPE *Release)(
940         IFullScreenVideoEx* This);
941
942     /*** IFullScreenVideo methods ***/
943     HRESULT (STDMETHODCALLTYPE *CountModes)(
944         IFullScreenVideoEx* This,
945         long* pModes);
946
947     HRESULT (STDMETHODCALLTYPE *GetModeInfo)(
948         IFullScreenVideoEx* This,
949         long Mode,
950         long* pWidth,
951         long* pHeight,
952         long* pDepth);
953
954     HRESULT (STDMETHODCALLTYPE *GetCurrentMode)(
955         IFullScreenVideoEx* This,
956         long* pMode);
957
958     HRESULT (STDMETHODCALLTYPE *IsModeAvailable)(
959         IFullScreenVideoEx* This,
960         long Mode);
961
962     HRESULT (STDMETHODCALLTYPE *IsModeEnabled)(
963         IFullScreenVideoEx* This,
964         long Mode);
965
966     HRESULT (STDMETHODCALLTYPE *SetEnabled)(
967         IFullScreenVideoEx* This,
968         long Mode,
969         long bEnabled);
970
971     HRESULT (STDMETHODCALLTYPE *GetClipFactor)(
972         IFullScreenVideoEx* This,
973         long* pClipFactor);
974
975     HRESULT (STDMETHODCALLTYPE *SetClipFactor)(
976         IFullScreenVideoEx* This,
977         long ClipFactor);
978
979     HRESULT (STDMETHODCALLTYPE *SetMessageDrain)(
980         IFullScreenVideoEx* This,
981         HWND hwnd);
982
983     HRESULT (STDMETHODCALLTYPE *GetMessageDrain)(
984         IFullScreenVideoEx* This,
985         HWND* hwnd);
986
987     HRESULT (STDMETHODCALLTYPE *SetMonitor)(
988         IFullScreenVideoEx* This,
989         long Monitor);
990
991     HRESULT (STDMETHODCALLTYPE *GetMonitor)(
992         IFullScreenVideoEx* This,
993         long* Monitor);
994
995     HRESULT (STDMETHODCALLTYPE *HideOnDeactivate)(
996         IFullScreenVideoEx* This,
997         long Hide);
998
999     HRESULT (STDMETHODCALLTYPE *IsHideOnDeactivate)(
1000         IFullScreenVideoEx* This);
1001
1002     HRESULT (STDMETHODCALLTYPE *SetCaption)(
1003         IFullScreenVideoEx* This,
1004         BSTR strCaption);
1005
1006     HRESULT (STDMETHODCALLTYPE *GetCaption)(
1007         IFullScreenVideoEx* This,
1008         BSTR* pstrCaption);
1009
1010     HRESULT (STDMETHODCALLTYPE *SetDefault)(
1011         IFullScreenVideoEx* This);
1012
1013     /*** IFullScreenVideoEx methods ***/
1014     HRESULT (STDMETHODCALLTYPE *SetAcceleratorTable)(
1015         IFullScreenVideoEx* This,
1016         HWND hwnd,
1017         HACCEL hAccel);
1018
1019     HRESULT (STDMETHODCALLTYPE *GetAcceleratorTable)(
1020         IFullScreenVideoEx* This,
1021         HWND* phwnd,
1022         HACCEL* phAccel);
1023
1024     HRESULT (STDMETHODCALLTYPE *KeepPixelAspectRatio)(
1025         IFullScreenVideoEx* This,
1026         long KeepAspect);
1027
1028     HRESULT (STDMETHODCALLTYPE *IsKeepPixelAspectRatio)(
1029         IFullScreenVideoEx* This,
1030         long* pKeepAspect);
1031
1032 };
1033
1034 /*** IUnknown methods ***/
1035 #define IFullScreenVideoEx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1036 #define IFullScreenVideoEx_AddRef(p) (p)->lpVtbl->AddRef(p)
1037 #define IFullScreenVideoEx_Release(p) (p)->lpVtbl->Release(p)
1038 /*** IFullScreenVideo methods ***/
1039 #define IFullScreenVideoEx_CountModes(p,a) (p)->lpVtbl->CountModes(p,a)
1040 #define IFullScreenVideoEx_GetModeInfo(p,a,b,c,d) (p)->lpVtbl->GetModeInfo(p,a,b,c,d)
1041 #define IFullScreenVideoEx_GetCurrentMode(p,a) (p)->lpVtbl->GetCurrentMode(p,a)
1042 #define IFullScreenVideoEx_IsModeAvailable(p,a) (p)->lpVtbl->IsModeAvailable(p,a)
1043 #define IFullScreenVideoEx_IsModeEnabled(p,a) (p)->lpVtbl->IsModeEnabled(p,a)
1044 #define IFullScreenVideoEx_SetEnabled(p,a,b) (p)->lpVtbl->SetEnabled(p,a,b)
1045 #define IFullScreenVideoEx_GetClipFactor(p,a) (p)->lpVtbl->GetClipFactor(p,a)
1046 #define IFullScreenVideoEx_SetClipFactor(p,a) (p)->lpVtbl->SetClipFactor(p,a)
1047 #define IFullScreenVideoEx_SetMessageDrain(p,a) (p)->lpVtbl->SetMessageDrain(p,a)
1048 #define IFullScreenVideoEx_GetMessageDrain(p,a) (p)->lpVtbl->GetMessageDrain(p,a)
1049 #define IFullScreenVideoEx_SetMonitor(p,a) (p)->lpVtbl->SetMonitor(p,a)
1050 #define IFullScreenVideoEx_GetMonitor(p,a) (p)->lpVtbl->GetMonitor(p,a)
1051 #define IFullScreenVideoEx_HideOnDeactivate(p,a) (p)->lpVtbl->HideOnDeactivate(p,a)
1052 #define IFullScreenVideoEx_IsHideOnDeactivate(p) (p)->lpVtbl->IsHideOnDeactivate(p)
1053 #define IFullScreenVideoEx_SetCaption(p,a) (p)->lpVtbl->SetCaption(p,a)
1054 #define IFullScreenVideoEx_GetCaption(p,a) (p)->lpVtbl->GetCaption(p,a)
1055 #define IFullScreenVideoEx_SetDefault(p) (p)->lpVtbl->SetDefault(p)
1056 /*** IFullScreenVideoEx methods ***/
1057 #define IFullScreenVideoEx_SetAcceleratorTable(p,a,b) (p)->lpVtbl->SetAcceleratorTable(p,a,b)
1058 #define IFullScreenVideoEx_GetAcceleratorTable(p,a,b) (p)->lpVtbl->GetAcceleratorTable(p,a,b)
1059 #define IFullScreenVideoEx_KeepPixelAspectRatio(p,a) (p)->lpVtbl->KeepPixelAspectRatio(p,a)
1060 #define IFullScreenVideoEx_IsKeepPixelAspectRatio(p,a) (p)->lpVtbl->IsKeepPixelAspectRatio(p,a)
1061
1062 #endif
1063
1064 #define IFullScreenVideoEx_METHODS \
1065     ICOM_MSVTABLE_COMPAT_FIELDS \
1066     /*** IUnknown methods ***/ \
1067     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1068     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1069     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1070     /*** IFullScreenVideo methods ***/ \
1071     STDMETHOD_(HRESULT,CountModes)(THIS_ long* pModes) PURE; \
1072     STDMETHOD_(HRESULT,GetModeInfo)(THIS_ long Mode, long* pWidth, long* pHeight, long* pDepth) PURE; \
1073     STDMETHOD_(HRESULT,GetCurrentMode)(THIS_ long* pMode) PURE; \
1074     STDMETHOD_(HRESULT,IsModeAvailable)(THIS_ long Mode) PURE; \
1075     STDMETHOD_(HRESULT,IsModeEnabled)(THIS_ long Mode) PURE; \
1076     STDMETHOD_(HRESULT,SetEnabled)(THIS_ long Mode, long bEnabled) PURE; \
1077     STDMETHOD_(HRESULT,GetClipFactor)(THIS_ long* pClipFactor) PURE; \
1078     STDMETHOD_(HRESULT,SetClipFactor)(THIS_ long ClipFactor) PURE; \
1079     STDMETHOD_(HRESULT,SetMessageDrain)(THIS_ HWND hwnd) PURE; \
1080     STDMETHOD_(HRESULT,GetMessageDrain)(THIS_ HWND* hwnd) PURE; \
1081     STDMETHOD_(HRESULT,SetMonitor)(THIS_ long Monitor) PURE; \
1082     STDMETHOD_(HRESULT,GetMonitor)(THIS_ long* Monitor) PURE; \
1083     STDMETHOD_(HRESULT,HideOnDeactivate)(THIS_ long Hide) PURE; \
1084     STDMETHOD_(HRESULT,IsHideOnDeactivate)(THIS) PURE; \
1085     STDMETHOD_(HRESULT,SetCaption)(THIS_ BSTR strCaption) PURE; \
1086     STDMETHOD_(HRESULT,GetCaption)(THIS_ BSTR* pstrCaption) PURE; \
1087     STDMETHOD_(HRESULT,SetDefault)(THIS) PURE; \
1088     /*** IFullScreenVideoEx methods ***/ \
1089     STDMETHOD_(HRESULT,SetAcceleratorTable)(THIS_ HWND hwnd, HACCEL hAccel) PURE; \
1090     STDMETHOD_(HRESULT,GetAcceleratorTable)(THIS_ HWND* phwnd, HACCEL* phAccel) PURE; \
1091     STDMETHOD_(HRESULT,KeepPixelAspectRatio)(THIS_ long KeepAspect) PURE; \
1092     STDMETHOD_(HRESULT,IsKeepPixelAspectRatio)(THIS_ long* pKeepAspect) PURE;
1093
1094 HRESULT CALLBACK IFullScreenVideoEx_SetAcceleratorTable_Proxy(
1095     IFullScreenVideoEx* This,
1096     HWND hwnd,
1097     HACCEL hAccel);
1098 void __RPC_STUB IFullScreenVideoEx_SetAcceleratorTable_Stub(
1099     struct IRpcStubBuffer* This,
1100     struct IRpcChannelBuffer* pRpcChannelBuffer,
1101     PRPC_MESSAGE pRpcMessage,
1102     DWORD* pdwStubPhase);
1103 HRESULT CALLBACK IFullScreenVideoEx_GetAcceleratorTable_Proxy(
1104     IFullScreenVideoEx* This,
1105     HWND* phwnd,
1106     HACCEL* phAccel);
1107 void __RPC_STUB IFullScreenVideoEx_GetAcceleratorTable_Stub(
1108     struct IRpcStubBuffer* This,
1109     struct IRpcChannelBuffer* pRpcChannelBuffer,
1110     PRPC_MESSAGE pRpcMessage,
1111     DWORD* pdwStubPhase);
1112 HRESULT CALLBACK IFullScreenVideoEx_KeepPixelAspectRatio_Proxy(
1113     IFullScreenVideoEx* This,
1114     long KeepAspect);
1115 void __RPC_STUB IFullScreenVideoEx_KeepPixelAspectRatio_Stub(
1116     struct IRpcStubBuffer* This,
1117     struct IRpcChannelBuffer* pRpcChannelBuffer,
1118     PRPC_MESSAGE pRpcMessage,
1119     DWORD* pdwStubPhase);
1120 HRESULT CALLBACK IFullScreenVideoEx_IsKeepPixelAspectRatio_Proxy(
1121     IFullScreenVideoEx* This,
1122     long* pKeepAspect);
1123 void __RPC_STUB IFullScreenVideoEx_IsKeepPixelAspectRatio_Stub(
1124     struct IRpcStubBuffer* This,
1125     struct IRpcChannelBuffer* pRpcChannelBuffer,
1126     PRPC_MESSAGE pRpcMessage,
1127     DWORD* pdwStubPhase);
1128
1129 #endif  /* __IFullScreenVideoEx_INTERFACE_DEFINED__ */
1130
1131 #ifndef __IBaseVideoMixer_FWD_DEFINED__
1132 #define __IBaseVideoMixer_FWD_DEFINED__
1133 typedef struct IBaseVideoMixer IBaseVideoMixer;
1134 #endif
1135
1136 /*****************************************************************************
1137  * IBaseVideoMixer interface
1138  */
1139 #ifndef __IBaseVideoMixer_INTERFACE_DEFINED__
1140 #define __IBaseVideoMixer_INTERFACE_DEFINED__
1141
1142 #if defined(__cplusplus) && !defined(CINTERFACE)
1143 struct IBaseVideoMixer : public IUnknown
1144 {
1145     virtual HRESULT STDMETHODCALLTYPE SetLeadPin(
1146         int iPin) = 0;
1147
1148     virtual HRESULT STDMETHODCALLTYPE GetLeadPin(
1149         int* piPin) = 0;
1150
1151     virtual HRESULT STDMETHODCALLTYPE GetInputPinCount(
1152         int* piPinCount) = 0;
1153
1154     virtual HRESULT STDMETHODCALLTYPE IsUsingClock(
1155         int* pbValue) = 0;
1156
1157     virtual HRESULT STDMETHODCALLTYPE SetUsingClock(
1158         int bValue) = 0;
1159
1160     virtual HRESULT STDMETHODCALLTYPE GetClockPeriod(
1161         int* pbValue) = 0;
1162
1163     virtual HRESULT STDMETHODCALLTYPE SetClockPeriod(
1164         int bValue) = 0;
1165
1166 };
1167 #else
1168 typedef struct IBaseVideoMixerVtbl IBaseVideoMixerVtbl;
1169 struct IBaseVideoMixer {
1170     const IBaseVideoMixerVtbl* lpVtbl;
1171 };
1172 struct IBaseVideoMixerVtbl {
1173     ICOM_MSVTABLE_COMPAT_FIELDS
1174
1175     /*** IUnknown methods ***/
1176     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1177         IBaseVideoMixer* This,
1178         REFIID riid,
1179         void** ppvObject);
1180
1181     ULONG (STDMETHODCALLTYPE *AddRef)(
1182         IBaseVideoMixer* This);
1183
1184     ULONG (STDMETHODCALLTYPE *Release)(
1185         IBaseVideoMixer* This);
1186
1187     /*** IBaseVideoMixer methods ***/
1188     HRESULT (STDMETHODCALLTYPE *SetLeadPin)(
1189         IBaseVideoMixer* This,
1190         int iPin);
1191
1192     HRESULT (STDMETHODCALLTYPE *GetLeadPin)(
1193         IBaseVideoMixer* This,
1194         int* piPin);
1195
1196     HRESULT (STDMETHODCALLTYPE *GetInputPinCount)(
1197         IBaseVideoMixer* This,
1198         int* piPinCount);
1199
1200     HRESULT (STDMETHODCALLTYPE *IsUsingClock)(
1201         IBaseVideoMixer* This,
1202         int* pbValue);
1203
1204     HRESULT (STDMETHODCALLTYPE *SetUsingClock)(
1205         IBaseVideoMixer* This,
1206         int bValue);
1207
1208     HRESULT (STDMETHODCALLTYPE *GetClockPeriod)(
1209         IBaseVideoMixer* This,
1210         int* pbValue);
1211
1212     HRESULT (STDMETHODCALLTYPE *SetClockPeriod)(
1213         IBaseVideoMixer* This,
1214         int bValue);
1215
1216 };
1217
1218 /*** IUnknown methods ***/
1219 #define IBaseVideoMixer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1220 #define IBaseVideoMixer_AddRef(p) (p)->lpVtbl->AddRef(p)
1221 #define IBaseVideoMixer_Release(p) (p)->lpVtbl->Release(p)
1222 /*** IBaseVideoMixer methods ***/
1223 #define IBaseVideoMixer_SetLeadPin(p,a) (p)->lpVtbl->SetLeadPin(p,a)
1224 #define IBaseVideoMixer_GetLeadPin(p,a) (p)->lpVtbl->GetLeadPin(p,a)
1225 #define IBaseVideoMixer_GetInputPinCount(p,a) (p)->lpVtbl->GetInputPinCount(p,a)
1226 #define IBaseVideoMixer_IsUsingClock(p,a) (p)->lpVtbl->IsUsingClock(p,a)
1227 #define IBaseVideoMixer_SetUsingClock(p,a) (p)->lpVtbl->SetUsingClock(p,a)
1228 #define IBaseVideoMixer_GetClockPeriod(p,a) (p)->lpVtbl->GetClockPeriod(p,a)
1229 #define IBaseVideoMixer_SetClockPeriod(p,a) (p)->lpVtbl->SetClockPeriod(p,a)
1230
1231 #endif
1232
1233 #define IBaseVideoMixer_METHODS \
1234     ICOM_MSVTABLE_COMPAT_FIELDS \
1235     /*** IUnknown methods ***/ \
1236     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1237     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1238     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1239     /*** IBaseVideoMixer methods ***/ \
1240     STDMETHOD_(HRESULT,SetLeadPin)(THIS_ int iPin) PURE; \
1241     STDMETHOD_(HRESULT,GetLeadPin)(THIS_ int* piPin) PURE; \
1242     STDMETHOD_(HRESULT,GetInputPinCount)(THIS_ int* piPinCount) PURE; \
1243     STDMETHOD_(HRESULT,IsUsingClock)(THIS_ int* pbValue) PURE; \
1244     STDMETHOD_(HRESULT,SetUsingClock)(THIS_ int bValue) PURE; \
1245     STDMETHOD_(HRESULT,GetClockPeriod)(THIS_ int* pbValue) PURE; \
1246     STDMETHOD_(HRESULT,SetClockPeriod)(THIS_ int bValue) PURE;
1247
1248 HRESULT CALLBACK IBaseVideoMixer_SetLeadPin_Proxy(
1249     IBaseVideoMixer* This,
1250     int iPin);
1251 void __RPC_STUB IBaseVideoMixer_SetLeadPin_Stub(
1252     struct IRpcStubBuffer* This,
1253     struct IRpcChannelBuffer* pRpcChannelBuffer,
1254     PRPC_MESSAGE pRpcMessage,
1255     DWORD* pdwStubPhase);
1256 HRESULT CALLBACK IBaseVideoMixer_GetLeadPin_Proxy(
1257     IBaseVideoMixer* This,
1258     int* piPin);
1259 void __RPC_STUB IBaseVideoMixer_GetLeadPin_Stub(
1260     struct IRpcStubBuffer* This,
1261     struct IRpcChannelBuffer* pRpcChannelBuffer,
1262     PRPC_MESSAGE pRpcMessage,
1263     DWORD* pdwStubPhase);
1264 HRESULT CALLBACK IBaseVideoMixer_GetInputPinCount_Proxy(
1265     IBaseVideoMixer* This,
1266     int* piPinCount);
1267 void __RPC_STUB IBaseVideoMixer_GetInputPinCount_Stub(
1268     struct IRpcStubBuffer* This,
1269     struct IRpcChannelBuffer* pRpcChannelBuffer,
1270     PRPC_MESSAGE pRpcMessage,
1271     DWORD* pdwStubPhase);
1272 HRESULT CALLBACK IBaseVideoMixer_IsUsingClock_Proxy(
1273     IBaseVideoMixer* This,
1274     int* pbValue);
1275 void __RPC_STUB IBaseVideoMixer_IsUsingClock_Stub(
1276     struct IRpcStubBuffer* This,
1277     struct IRpcChannelBuffer* pRpcChannelBuffer,
1278     PRPC_MESSAGE pRpcMessage,
1279     DWORD* pdwStubPhase);
1280 HRESULT CALLBACK IBaseVideoMixer_SetUsingClock_Proxy(
1281     IBaseVideoMixer* This,
1282     int bValue);
1283 void __RPC_STUB IBaseVideoMixer_SetUsingClock_Stub(
1284     struct IRpcStubBuffer* This,
1285     struct IRpcChannelBuffer* pRpcChannelBuffer,
1286     PRPC_MESSAGE pRpcMessage,
1287     DWORD* pdwStubPhase);
1288 HRESULT CALLBACK IBaseVideoMixer_GetClockPeriod_Proxy(
1289     IBaseVideoMixer* This,
1290     int* pbValue);
1291 void __RPC_STUB IBaseVideoMixer_GetClockPeriod_Stub(
1292     struct IRpcStubBuffer* This,
1293     struct IRpcChannelBuffer* pRpcChannelBuffer,
1294     PRPC_MESSAGE pRpcMessage,
1295     DWORD* pdwStubPhase);
1296 HRESULT CALLBACK IBaseVideoMixer_SetClockPeriod_Proxy(
1297     IBaseVideoMixer* This,
1298     int bValue);
1299 void __RPC_STUB IBaseVideoMixer_SetClockPeriod_Stub(
1300     struct IRpcStubBuffer* This,
1301     struct IRpcChannelBuffer* pRpcChannelBuffer,
1302     PRPC_MESSAGE pRpcMessage,
1303     DWORD* pdwStubPhase);
1304
1305 #endif  /* __IBaseVideoMixer_INTERFACE_DEFINED__ */
1306
1307 #define iPALETTE_COLORS 256
1308 #define iEGA_COLORS 16
1309 #define iMASK_COLORS 3
1310 #define iTRUECOLOR 16
1311 #define iRED 0
1312 #define iGREEN 1
1313 #define iBLUE 2
1314 #define iPALETTE 8
1315 #define iMAXBITS 8
1316 typedef struct tag_TRUECOLORINFO {
1317     DWORD dwBitMasks[3];
1318     RGBQUAD bmiColors[256];
1319 } TRUECOLORINFO;
1320
1321 typedef struct tagVIDEOINFOHEADER {
1322     RECT rcSource;
1323     RECT rcTarget;
1324     DWORD dwBitRate;
1325     DWORD dwBitErrorRate;
1326     REFERENCE_TIME AvgTimePerFrame;
1327     BITMAPINFOHEADER bmiHeader;
1328 } VIDEOINFOHEADER;
1329
1330 typedef struct tagVIDEOINFO {
1331     RECT rcSource;
1332     RECT rcTarget;
1333     DWORD dwBitRate;
1334     DWORD dwBitErrorRate;
1335     REFERENCE_TIME AvgTimePerFrame;
1336     BITMAPINFOHEADER bmiHeader;
1337     union {
1338         RGBQUAD bmiColors[256];
1339         DWORD dwBitMasks[3];
1340         TRUECOLORINFO TrueColorInfo;
1341     } DUMMYUNIONNAME;
1342 } VIDEOINFO;
1343
1344 typedef struct tagMPEG1VIDEOINFO {
1345     VIDEOINFOHEADER hdr;
1346     DWORD dwStartTimeCode;
1347     DWORD cbSequenceHeader;
1348     BYTE bSequenceHeader[1];
1349 } MPEG1VIDEOINFO;
1350
1351 #define MAX_SIZE_MPEG1_SEQUENCE_INFO 140
1352 #define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
1353 typedef struct tagAnalogVideoInfo {
1354     RECT rcSource;
1355     RECT rcTarget;
1356     DWORD dwActiveWidth;
1357     DWORD dwActiveHeight;
1358     REFERENCE_TIME AvgTimePerFrame;
1359 } ANALOGVIDEOINFO;
1360
1361 typedef enum {
1362     AM_PROPERTY_FRAMESTEP_STEP = 0x1,
1363     AM_PROPERTY_FRAMESTEP_CANCEL = 0x2,
1364     AM_PROPERTY_FRAMESTEP_CANSTEP = 0x3,
1365     AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x4
1366 } AM_PROPERTY_FRAMESTEP;
1367
1368 typedef struct _AM_FRAMESTEP_STEP {
1369     DWORD dwFramesToStep;
1370 } AM_FRAMESTEP_STEP;
1371
1372 #ifdef __cplusplus
1373 }
1374 #endif
1375 #endif /* __WIDL_AMVIDEO_H */