Stubbed some interfaces for the FilterGraph CLSID.
[wine] / dlls / quartz / filtergraph.c
1 /*              DirectShow FilterGraph object (QUARTZ.DLL)
2  *
3  * Copyright 2002 Lionel Ulmer
4  *
5  * This file contains the (internal) driver registration functions,
6  * driver enumeration APIs and DirectDraw creation functions.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22
23 #include "config.h"
24 #include "dshow.h"
25 #include "wine/debug.h"
26
27 #include "quartz_private.h"
28
29 WINE_DEFAULT_DEBUG_CHANNEL(quartz);
30
31 static HRESULT Filtergraph_QueryInterface(IFilterGraphImpl *This,
32                                           REFIID riid,
33                                           LPVOID *ppvObj) {
34     TRACE("(%p)->(%s (%p), %p)\n", This, debugstr_guid(riid), riid, ppvObj);
35     
36     if (IsEqualGUID(&IID_IUnknown, riid) ||
37         IsEqualGUID(&IID_IGraphBuilder, riid)) {
38         *ppvObj = &(This->IGraphBuilder_vtbl);
39         TRACE("   returning IGraphBuilder interface (%p)\n", *ppvObj);
40     } else if (IsEqualGUID(&IID_IMediaControl, riid)) {
41         *ppvObj = &(This->IMediaControl_vtbl);
42         TRACE("   returning IMediaControl interface (%p)\n", *ppvObj);
43     } else if (IsEqualGUID(&IID_IMediaSeeking, riid)) {
44         *ppvObj = &(This->IMediaSeeking_vtbl);
45         TRACE("   returning IMediaSeeking interface (%p)\n", *ppvObj);
46     } else if (IsEqualGUID(&IID_IBasicAudio, riid)) {
47         *ppvObj = &(This->IBasicAudio_vtbl);
48         TRACE("   returning IBasicAudio interface (%p)\n", *ppvObj);
49     } else if (IsEqualGUID(&IID_IBasicVideo, riid)) {
50         *ppvObj = &(This->IBasicVideo_vtbl);
51         TRACE("   returning IBasicVideo interface (%p)\n", *ppvObj);
52     } else if (IsEqualGUID(&IID_IVideoWindow, riid)) {
53         *ppvObj = &(This->IVideoWindow_vtbl);
54         TRACE("   returning IVideoWindow interface (%p)\n", *ppvObj);
55     }  else if (IsEqualGUID(&IID_IMediaEvent, riid) ||
56                 IsEqualGUID(&IID_IMediaEventEx, riid)) {
57         *ppvObj = &(This->IMediaEventEx_vtbl);
58         TRACE("   returning IMediaEvent(Ex) interface (%p)\n", *ppvObj);
59     } else {
60         *ppvObj = NULL;
61         FIXME("   unknown interface !\n");
62         return E_NOINTERFACE;
63     }
64
65     This->ref++;
66     return S_OK;
67 }
68
69 static ULONG Filtergraph_AddRef(IFilterGraphImpl *This) {
70     TRACE("(%p)->(): new ref = %ld\n", This, This->ref + 1);
71     
72     return ++This->ref;
73 }
74
75 static ULONG Filtergraph_Release(IFilterGraphImpl *This) {
76     static ULONG ref;
77     
78     TRACE("(%p)->(): new ref = %ld\n", This, This->ref - 1);
79     
80     ref = --This->ref;
81     if (ref == 0) {
82         HeapFree(GetProcessHeap(), 0, This);
83     }
84     return ref;
85 }
86
87
88 /*** IUnknown methods ***/
89 static HRESULT WINAPI Graphbuilder_QueryInterface(IGraphBuilder *iface,
90                                                   REFIID riid,
91                                                   LPVOID*ppvObj) {
92     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
93     
94     TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
95     return Filtergraph_QueryInterface(This, riid, ppvObj);
96 }
97
98 static ULONG WINAPI Graphbuilder_AddRef(IGraphBuilder *iface) {
99     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
100     
101     TRACE("(%p/%p)->() calling FilterGraph AddRef\n", This, iface);
102     
103     return Filtergraph_AddRef(This);
104 }
105
106 static ULONG WINAPI Graphbuilder_Release(IGraphBuilder *iface) {
107     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
108     
109     TRACE("(%p/%p)->() calling FilterGraph Release\n", This, iface);
110
111     return Filtergraph_Release(This);
112 }
113
114 /*** IFilterGraph methods ***/
115 static HRESULT WINAPI Graphbuilder_AddFilter(IGraphBuilder *iface,
116                                              IBaseFilter *pFilter,
117                                              LPCWSTR pName) {
118     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
119
120     TRACE("(%p/%p)->(%p, %s (%p)): stub !!!\n", This, iface, pFilter, debugstr_w(pName), pName);
121
122     return S_OK;
123 }
124
125 static HRESULT WINAPI Graphbuilder_RemoveFilter(IGraphBuilder *iface,
126                                                 IBaseFilter *pFilter) {
127     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
128
129     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFilter);
130
131     return S_OK;
132 }
133
134 static HRESULT WINAPI Graphbuilder_EnumFilter(IGraphBuilder *iface,
135                                               IEnumFilters **ppEnum) {
136     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
137
138     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppEnum);
139
140     return S_OK;
141 }
142
143 static HRESULT WINAPI Graphbuilder_FindFilterByName(IGraphBuilder *iface,
144                                                     LPCWSTR pName,
145                                                     IBaseFilter **ppFilter) {
146     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
147
148     TRACE("(%p/%p)->(%s (%p), %p): stub !!!\n", This, iface, debugstr_w(pName), pName, ppFilter);
149
150     return S_OK;
151 }
152
153 static HRESULT WINAPI Graphbuilder_ConnectDirect(IGraphBuilder *iface,
154                                                  IPin *ppinIn,
155                                                  IPin *ppinOut,
156                                                  const AM_MEDIA_TYPE *pmt) {
157     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
158
159     TRACE("(%p/%p)->(%p, %p, %p): stub !!!\n", This, iface, ppinIn, ppinOut, pmt);
160
161     return S_OK;
162 }
163
164 static HRESULT WINAPI Graphbuilder_Reconnect(IGraphBuilder *iface,
165                                              IPin *ppin) {
166     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
167
168     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppin);
169
170     return S_OK;
171 }
172
173 static HRESULT WINAPI Graphbuilder_Disconnect(IGraphBuilder *iface,
174                                               IPin *ppin) {
175     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
176
177     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppin);
178
179     return S_OK;
180 }
181
182 static HRESULT WINAPI Graphbuilder_SetDefaultSyncSource(IGraphBuilder *iface) {
183     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
184
185     TRACE("(%p/%p)->(): stub !!!\n", iface, This);
186
187     return S_OK;
188 }
189
190 /*** IGraphBuilder methods ***/
191 static HRESULT WINAPI Graphbuilder_Connect(IGraphBuilder *iface,
192                                            IPin *ppinOut,
193                                            IPin *ppinIn) {
194     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
195
196     TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, ppinOut, ppinIn);
197
198     return S_OK;
199 }
200
201 static HRESULT WINAPI Graphbuilder_Render(IGraphBuilder *iface,
202                                           IPin *ppinOut) {
203     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
204
205     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppinOut);
206
207     return S_OK;
208 }
209
210 static HRESULT WINAPI Graphbuilder_RenderFile(IGraphBuilder *iface,
211                                               LPCWSTR lpcwstrFile,
212                                               LPCWSTR lpcwstrPlayList) {
213     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
214
215     TRACE("(%p/%p)->(%s (%p), %s (%p)): stub !!!\n", This, iface, debugstr_w(lpcwstrFile), lpcwstrFile, debugstr_w(lpcwstrPlayList), lpcwstrPlayList);
216
217     return S_OK;
218 }
219
220 static HRESULT WINAPI Graphbuilder_AddSourceFilter(IGraphBuilder *iface,
221                                                    LPCWSTR lpcwstrFileName,
222                                                    LPCWSTR lpcwstrFilterName,
223                                                    IBaseFilter **ppFilter) {
224     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
225
226     TRACE("(%p/%p)->(%s (%p), %s (%p), %p): stub !!!\n", This, iface, debugstr_w(lpcwstrFileName), lpcwstrFileName, debugstr_w(lpcwstrFilterName), lpcwstrFilterName, ppFilter);
227
228     return S_OK;
229 }
230
231 static HRESULT WINAPI Graphbuilder_SetLogFile(IGraphBuilder *iface,
232                                               DWORD_PTR hFile) {
233     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
234
235     TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) hFile);
236
237     return S_OK;
238 }
239
240 static HRESULT WINAPI Graphbuilder_Abort(IGraphBuilder *iface) {
241     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
242
243     TRACE("(%p/%p)->(): stub !!!\n", This, iface);
244
245     return S_OK;
246 }
247
248 static HRESULT WINAPI Graphbuilder_ShouldOperationContinue(IGraphBuilder *iface) {
249     ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
250
251     TRACE("(%p/%p)->(): stub !!!\n", This, iface);
252
253     return S_OK;
254 }
255
256
257 static ICOM_VTABLE(IGraphBuilder) IGraphBuilder_VTable =
258 {
259     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
260     Graphbuilder_QueryInterface,
261     Graphbuilder_AddRef,
262     Graphbuilder_Release,
263     Graphbuilder_AddFilter,
264     Graphbuilder_RemoveFilter,
265     Graphbuilder_EnumFilter,
266     Graphbuilder_FindFilterByName,
267     Graphbuilder_ConnectDirect,
268     Graphbuilder_Reconnect,
269     Graphbuilder_Disconnect,
270     Graphbuilder_SetDefaultSyncSource,
271     Graphbuilder_Connect,
272     Graphbuilder_Render,
273     Graphbuilder_RenderFile,
274     Graphbuilder_AddSourceFilter,
275     Graphbuilder_SetLogFile,
276     Graphbuilder_Abort,
277     Graphbuilder_ShouldOperationContinue
278 };
279
280 /*** IUnknown methods ***/
281 static HRESULT WINAPI Mediacontrol_QueryInterface(IMediaControl *iface,
282                                                   REFIID riid,
283                                                   LPVOID*ppvObj) {
284     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
285
286     TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
287
288     return Filtergraph_QueryInterface(This, riid, ppvObj);
289 }
290
291 static ULONG WINAPI Mediacontrol_AddRef(IMediaControl *iface) {
292     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
293
294     TRACE("(%p/%p)->()\n", This, iface);
295
296     return Filtergraph_AddRef(This);
297 }
298
299 static ULONG WINAPI Mediacontrol_Release(IMediaControl *iface) {
300     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
301
302     TRACE("(%p/%p)->()\n", This, iface);
303
304     return Filtergraph_Release(This);
305
306 }
307
308 /*** IDispatch methods ***/
309 static HRESULT WINAPI Mediacontrol_GetTypeInfoCount(IMediaControl *iface,
310                                                     UINT*pctinfo) {
311     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
312
313     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
314
315     return S_OK;
316 }
317
318 static HRESULT WINAPI Mediacontrol_GetTypeInfo(IMediaControl *iface,
319                                                UINT iTInfo,
320                                                LCID lcid,
321                                                ITypeInfo**ppTInfo) {
322     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
323
324     TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
325
326     return S_OK;
327 }
328
329 static HRESULT WINAPI Mediacontrol_GetIDsOfNames(IMediaControl *iface,
330                                                  REFIID riid,
331                                                  LPOLESTR*rgszNames,
332                                                  UINT cNames,
333                                                  LCID lcid,
334                                                  DISPID*rgDispId) {
335     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
336
337     TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
338
339     return S_OK;
340 }
341
342 static HRESULT WINAPI Mediacontrol_Invoke(IMediaControl *iface,
343                                           DISPID dispIdMember,
344                                           REFIID riid,
345                                           LCID lcid,
346                                           WORD wFlags,
347                                           DISPPARAMS*pDispParams,
348                                           VARIANT*pVarResult,
349                                           EXCEPINFO*pExepInfo,
350                                           UINT*puArgErr) {
351     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
352
353     TRACE("(%p/%p)->(%ld, %s (%p), %ld, %04x, %p, %p, %p, %p): stub !!!\n", This, iface, dispIdMember, debugstr_guid(riid), riid, lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
354
355     return S_OK;
356 }
357
358 /*** IMediaControl methods ***/
359 static HRESULT WINAPI Mediacontrol_Run(IMediaControl *iface) {
360     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
361
362     TRACE("(%p/%p)->(): stub !!!\n", This, iface);
363
364     return S_OK;
365 }
366
367 static HRESULT WINAPI Mediacontrol_Pause(IMediaControl *iface) {
368     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
369
370     TRACE("(%p/%p)->(): stub !!!\n", This, iface);
371
372     return S_OK;
373 }
374
375 static HRESULT WINAPI Mediacontrol_Stop(IMediaControl *iface) {
376     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
377
378     TRACE("(%p/%p)->(): stub !!!\n", This, iface);
379
380     return S_OK;
381 }
382
383 static HRESULT WINAPI Mediacontrol_GetState(IMediaControl *iface,
384                                             LONG msTimeout,
385                                             OAFilterState *pfs) {
386     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
387
388     TRACE("(%p/%p)->(%ld, %p): stub !!!\n", This, iface, msTimeout, pfs);
389
390     return S_OK;
391 }
392
393 static HRESULT WINAPI Mediacontrol_RenderFile(IMediaControl *iface,
394                                               BSTR strFilename) {
395     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
396
397     TRACE("(%p/%p)->(%s (%p)): stub !!!\n", This, iface, debugstr_w(strFilename), strFilename);
398
399     return S_OK;
400 }
401
402 static HRESULT WINAPI Mediacontrol_AddSourceFilter(IMediaControl *iface,
403                                                    BSTR strFilename,
404                                                    IDispatch **ppUnk) {
405     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
406
407     TRACE("(%p/%p)->(%s (%p), %p): stub !!!\n", This, iface, debugstr_w(strFilename), strFilename, ppUnk);
408
409     return S_OK;
410 }
411
412 static HRESULT WINAPI Mediacontrol_get_FilterCollection(IMediaControl *iface,
413                                                         IDispatch **ppUnk) {
414     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
415
416     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppUnk);
417
418     return S_OK;
419 }
420
421 static HRESULT WINAPI Mediacontrol_get_RegFilterCollection(IMediaControl *iface,
422                                                            IDispatch **ppUnk) {
423     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
424
425     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppUnk);
426
427     return S_OK;
428 }
429
430 static HRESULT WINAPI Mediacontrol_StopWhenReady(IMediaControl *iface) {
431     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
432
433     TRACE("(%p/%p)->(): stub !!!\n", This, iface);
434
435     return S_OK;
436 }
437
438
439 static ICOM_VTABLE(IMediaControl) IMediaControl_VTable =
440 {
441     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
442     Mediacontrol_QueryInterface,
443     Mediacontrol_AddRef,
444     Mediacontrol_Release,
445     Mediacontrol_GetTypeInfoCount,
446     Mediacontrol_GetTypeInfo,
447     Mediacontrol_GetIDsOfNames,
448     Mediacontrol_Invoke,
449     Mediacontrol_Run,
450     Mediacontrol_Pause,
451     Mediacontrol_Stop,
452     Mediacontrol_GetState,
453     Mediacontrol_RenderFile,
454     Mediacontrol_AddSourceFilter,
455     Mediacontrol_get_FilterCollection,
456     Mediacontrol_get_RegFilterCollection,
457     Mediacontrol_StopWhenReady
458 };
459
460
461 /*** IUnknown methods ***/
462 static HRESULT WINAPI Mediaseeking_QueryInterface(IMediaSeeking *iface,
463                                                   REFIID riid,
464                                                   LPVOID*ppvObj) {
465     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
466
467     TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
468
469     return Filtergraph_QueryInterface(This, riid, ppvObj);
470 }
471
472 static ULONG WINAPI Mediaseeking_AddRef(IMediaSeeking *iface) {
473     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
474
475     TRACE("(%p/%p)->()\n", This, iface);
476
477     return Filtergraph_AddRef(This);
478 }
479
480 static ULONG WINAPI Mediaseeking_Release(IMediaSeeking *iface) {
481     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
482
483     TRACE("(%p/%p)->()\n", This, iface);
484
485     return Filtergraph_Release(This);
486 }
487
488 /*** IMediaSeeking methods ***/
489 static HRESULT WINAPI Mediaseeking_GetCapabilities(IMediaSeeking *iface,
490                                                    DWORD *pCapabilities) {
491     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
492
493     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pCapabilities);
494
495     return S_OK;
496 }
497
498 static HRESULT WINAPI Mediaseeking_CheckCapabilities(IMediaSeeking *iface,
499                                                      DWORD *pCapabilities) {
500     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
501
502     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pCapabilities);
503
504     return S_OK;
505 }
506
507 static HRESULT WINAPI Mediaseeking_IsFormatSupported(IMediaSeeking *iface,
508                                                      GUID *pFormat) {
509     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
510
511     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
512
513     return S_OK;
514 }
515
516 static HRESULT WINAPI Mediaseeking_QueryPreferredFormat(IMediaSeeking *iface,
517                                                         GUID *pFormat) {
518     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
519
520     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
521
522     return S_OK;
523 }
524
525 static HRESULT WINAPI Mediaseeking_GetTimeFormat(IMediaSeeking *iface,
526                                                  GUID *pFormat) {
527     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
528
529     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
530
531     return S_OK;
532 }
533
534 static HRESULT WINAPI Mediaseeking_IsUsingTimeFormat(IMediaSeeking *iface,
535                                                      GUID *pFormat) {
536     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
537
538     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
539
540     return S_OK;
541 }
542
543 static HRESULT WINAPI Mediaseeking_SetTimeFormat(IMediaSeeking *iface,
544                                                  GUID *pFormat) {
545     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
546
547     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
548
549     return S_OK;
550 }
551
552 static HRESULT WINAPI Mediaseeking_GetDuration(IMediaSeeking *iface,
553                                                LONGLONG *pDuration) {
554     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
555
556     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDuration);
557
558     return S_OK;
559 }
560
561 static HRESULT WINAPI Mediaseeking_GetStopPosition(IMediaSeeking *iface,
562                                                    LONGLONG *pStop) {
563     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
564
565     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pStop);
566
567     return S_OK;
568 }
569
570 static HRESULT WINAPI Mediaseeking_GetCurrentPosition(IMediaSeeking *iface,
571                                                       LONGLONG *pCurrent) {
572     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
573
574     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pCurrent);
575
576     return S_OK;
577 }
578
579 static HRESULT WINAPI Mediaseeking_ConvertTimeFormat(IMediaSeeking *iface,
580                                                      LONGLONG *pTarget,
581                                                      GUID *pTargetFormat,
582                                                      LONGLONG Source,
583                                                      GUID *pSourceFormat) {
584     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
585
586     TRACE("(%p/%p)->(%p, %p, %lld, %p): stub !!!\n", This, iface, pTarget, pTargetFormat, Source, pSourceFormat);
587
588     return S_OK;
589 }
590
591 static HRESULT WINAPI Mediaseeking_SetPositions(IMediaSeeking *iface,
592                                                 LONGLONG *pCurrent,
593                                                 DWORD dwCurrentFlags,
594                                                 LONGLONG *pStop,
595                                                 DWORD dwStopFlags) {
596     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
597
598     TRACE("(%p/%p)->(%p, %08lx, %p, %08lx): stub !!!\n", This, iface, pCurrent, dwCurrentFlags, pStop, dwStopFlags);
599
600     return S_OK;
601 }
602
603 static HRESULT WINAPI Mediaseeking_GetPositions(IMediaSeeking *iface,
604                                                 LONGLONG *pCurrent,
605                                                 LONGLONG *pStop) {
606     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
607
608     TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pCurrent, pStop);
609
610     return S_OK;
611 }
612
613 static HRESULT WINAPI Mediaseeking_GetAvailable(IMediaSeeking *iface,
614                                                 LONGLONG *pEarliest,
615                                                 LONGLONG *pLatest) {
616     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
617
618     TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pEarliest, pLatest);
619
620     return S_OK;
621 }
622
623 static HRESULT WINAPI Mediaseeking_SetRate(IMediaSeeking *iface,
624                                            double dRate) {
625     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
626
627     TRACE("(%p/%p)->(%f): stub !!!\n", This, iface, dRate);
628
629     return S_OK;
630 }
631
632 static HRESULT WINAPI Mediaseeking_GetRate(IMediaSeeking *iface,
633                                            double *pdRate) {
634     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
635
636     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pdRate);
637
638     return S_OK;
639 }
640
641 static HRESULT WINAPI Mediaseeking_GetPreroll(IMediaSeeking *iface,
642                                               LONGLONG *pllPreroll) {
643     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
644
645     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pllPreroll);
646
647     return S_OK;
648 }
649
650
651 static ICOM_VTABLE(IMediaSeeking) IMediaSeeking_VTable =
652 {
653     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
654     Mediaseeking_QueryInterface,
655     Mediaseeking_AddRef,
656     Mediaseeking_Release,
657     Mediaseeking_GetCapabilities,
658     Mediaseeking_CheckCapabilities,
659     Mediaseeking_IsFormatSupported,
660     Mediaseeking_QueryPreferredFormat,
661     Mediaseeking_GetTimeFormat,
662     Mediaseeking_IsUsingTimeFormat,
663     Mediaseeking_SetTimeFormat,
664     Mediaseeking_GetDuration,
665     Mediaseeking_GetStopPosition,
666     Mediaseeking_GetCurrentPosition,
667     Mediaseeking_ConvertTimeFormat,
668     Mediaseeking_SetPositions,
669     Mediaseeking_GetPositions,
670     Mediaseeking_GetAvailable,
671     Mediaseeking_SetRate,
672     Mediaseeking_GetRate,
673     Mediaseeking_GetPreroll
674 };
675
676 /*** IUnknown methods ***/
677 static HRESULT WINAPI Basicaudio_QueryInterface(IBasicAudio *iface,
678                                                 REFIID riid,
679                                                 LPVOID*ppvObj) {
680     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
681
682     TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
683
684     return Filtergraph_QueryInterface(This, riid, ppvObj);
685 }
686
687 static ULONG WINAPI Basicaudio_AddRef(IBasicAudio *iface) {
688     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
689
690     TRACE("(%p/%p)->()\n", This, iface);
691
692     return Filtergraph_AddRef(This);
693 }
694
695 static ULONG WINAPI Basicaudio_Release(IBasicAudio *iface) {
696     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
697
698     TRACE("(%p/%p)->()\n", This, iface);
699
700     return Filtergraph_Release(This);
701 }
702
703 /*** IDispatch methods ***/
704 static HRESULT WINAPI Basicaudio_GetTypeInfoCount(IBasicAudio *iface,
705                                                   UINT*pctinfo) {
706     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
707
708     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
709
710     return S_OK;
711 }
712
713 static HRESULT WINAPI Basicaudio_GetTypeInfo(IBasicAudio *iface,
714                                              UINT iTInfo,
715                                              LCID lcid,
716                                              ITypeInfo**ppTInfo) {
717     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
718
719     TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
720
721     return S_OK;
722 }
723
724 static HRESULT WINAPI Basicaudio_GetIDsOfNames(IBasicAudio *iface,
725                                                REFIID riid,
726                                                LPOLESTR*rgszNames,
727                                                UINT cNames,
728                                                LCID lcid,
729                                                DISPID*rgDispId) {
730     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
731
732     TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
733
734     return S_OK;
735 }
736
737 static HRESULT WINAPI Basicaudio_Invoke(IBasicAudio *iface,
738                                         DISPID dispIdMember,
739                                         REFIID riid,
740                                         LCID lcid,
741                                         WORD wFlags,
742                                         DISPPARAMS*pDispParams,
743                                         VARIANT*pVarResult,
744                                         EXCEPINFO*pExepInfo,
745                                         UINT*puArgErr) {
746     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
747
748     TRACE("(%p/%p)->(%ld, %s (%p), %ld, %04x, %p, %p, %p, %p): stub !!!\n", This, iface, dispIdMember, debugstr_guid(riid), riid, lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
749
750     return S_OK;
751 }
752
753 /*** IBasicAudio methods ***/
754 static HRESULT WINAPI Basicaudio_put_Volume(IBasicAudio *iface,
755                                             long lVolume) {
756     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
757
758     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lVolume);
759
760     return S_OK;
761 }
762
763 static HRESULT WINAPI Basicaudio_get_Volume(IBasicAudio *iface,
764                                             long *plVolume) {
765     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
766
767     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, plVolume);
768
769     return S_OK;
770 }
771
772 static HRESULT WINAPI Basicaudio_put_Balance(IBasicAudio *iface,
773                                              long lBalance) {
774     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
775
776     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lBalance);
777
778     return S_OK;
779 }
780
781 static HRESULT WINAPI Basicaudio_get_Balance(IBasicAudio *iface,
782                                              long *plBalance) {
783     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
784
785     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, plBalance);
786
787     return S_OK;
788 }
789
790 static ICOM_VTABLE(IBasicAudio) IBasicAudio_VTable =
791 {
792     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
793     Basicaudio_QueryInterface,
794     Basicaudio_AddRef,
795     Basicaudio_Release,
796     Basicaudio_GetTypeInfoCount,
797     Basicaudio_GetTypeInfo,
798     Basicaudio_GetIDsOfNames,
799     Basicaudio_Invoke,
800     Basicaudio_put_Volume,
801     Basicaudio_get_Volume,
802     Basicaudio_put_Balance,
803     Basicaudio_get_Balance
804 };
805
806 /*** IUnknown methods ***/
807 static HRESULT WINAPI Basicvideo_QueryInterface(IBasicVideo *iface,
808                                                 REFIID riid,
809                                                 LPVOID*ppvObj) {
810     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
811
812     TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
813
814     return Filtergraph_QueryInterface(This, riid, ppvObj);
815 }
816
817 static ULONG WINAPI Basicvideo_AddRef(IBasicVideo *iface) {
818     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
819
820     TRACE("(%p/%p)->()\n", This, iface);
821
822     return Filtergraph_AddRef(This);
823 }
824
825 static ULONG WINAPI Basicvideo_Release(IBasicVideo *iface) {
826     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
827
828     TRACE("(%p/%p)->()\n", This, iface);
829
830     return Filtergraph_Release(This);
831 }
832
833 /*** IDispatch methods ***/
834 static HRESULT WINAPI Basicvideo_GetTypeInfoCount(IBasicVideo *iface,
835                                                   UINT*pctinfo) {
836     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
837
838     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
839
840     return S_OK;
841 }
842
843 static HRESULT WINAPI Basicvideo_GetTypeInfo(IBasicVideo *iface,
844                                              UINT iTInfo,
845                                              LCID lcid,
846                                              ITypeInfo**ppTInfo) {
847     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
848
849     TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
850
851     return S_OK;
852 }
853
854 static HRESULT WINAPI Basicvideo_GetIDsOfNames(IBasicVideo *iface,
855                                                REFIID riid,
856                                                LPOLESTR*rgszNames,
857                                                UINT cNames,
858                                                LCID lcid,
859                                                DISPID*rgDispId) {
860     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
861
862     TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
863
864     return S_OK;
865 }
866
867 static HRESULT WINAPI Basicvideo_Invoke(IBasicVideo *iface,
868                                         DISPID dispIdMember,
869                                         REFIID riid,
870                                         LCID lcid,
871                                         WORD wFlags,
872                                         DISPPARAMS*pDispParams,
873                                         VARIANT*pVarResult,
874                                         EXCEPINFO*pExepInfo,
875                                         UINT*puArgErr) {
876     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
877
878     TRACE("(%p/%p)->(%ld, %s (%p), %ld, %04x, %p, %p, %p, %p): stub !!!\n", This, iface, dispIdMember, debugstr_guid(riid), riid, lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
879
880     return S_OK;
881 }
882
883 /*** IBasicVideo methods ***/
884 static HRESULT WINAPI Basicvideo_get_AvgTimePerFrame(IBasicVideo *iface,
885                                                      REFTIME *pAvgTimePerFrame) {
886     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
887
888     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pAvgTimePerFrame);
889
890     return S_OK;
891 }
892
893 static HRESULT WINAPI Basicvideo_get_BitRate(IBasicVideo *iface,
894                                              long *pBitRate) {
895     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
896
897     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBitRate);
898
899     return S_OK;
900 }
901
902 static HRESULT WINAPI Basicvideo_get_BitErrorRate(IBasicVideo *iface,
903                                                   long *pBitErrorRate) {
904     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
905
906     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBitErrorRate);
907
908     return S_OK;
909 }
910
911 static HRESULT WINAPI Basicvideo_get_VideoWidth(IBasicVideo *iface,
912                                                 long *pVideoWidth) {
913     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
914
915     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVideoWidth);
916
917     return S_OK;
918 }
919
920 static HRESULT WINAPI Basicvideo_get_VideoHeight(IBasicVideo *iface,
921                                                  long *pVideoHeight) {
922     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
923
924     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVideoHeight);
925
926     return S_OK;
927 }
928
929 static HRESULT WINAPI Basicvideo_put_SourceLeft(IBasicVideo *iface,
930                                                 long SourceLeft) {
931     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
932
933     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceLeft);
934
935     return S_OK;
936 }
937
938 static HRESULT WINAPI Basicvideo_get_SourceLeft(IBasicVideo *iface,
939                                                 long *pSourceLeft) {
940     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
941
942     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceLeft);
943
944     return S_OK;
945 }
946
947 static HRESULT WINAPI Basicvideo_put_SourceWidth(IBasicVideo *iface,
948                                                  long SourceWidth) {
949     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
950
951     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceWidth);
952
953     return S_OK;
954 }
955
956 static HRESULT WINAPI Basicvideo_get_SourceWidth(IBasicVideo *iface,
957                                                  long *pSourceWidth) {
958     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
959
960     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceWidth);
961
962     return S_OK;
963 }
964
965 static HRESULT WINAPI Basicvideo_put_SourceTop(IBasicVideo *iface,
966                                                long SourceTop) {
967     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
968
969     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceTop);
970
971     return S_OK;
972 }
973
974 static HRESULT WINAPI Basicvideo_get_SourceTop(IBasicVideo *iface,
975                                                long *pSourceTop) {
976     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
977
978     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceTop);
979
980     return S_OK;
981 }
982
983 static HRESULT WINAPI Basicvideo_put_SourceHeight(IBasicVideo *iface,
984                                                   long SourceHeight) {
985     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
986
987     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceHeight);
988
989     return S_OK;
990 }
991
992 static HRESULT WINAPI Basicvideo_get_SourceHeight(IBasicVideo *iface,
993                                                   long *pSourceHeight) {
994     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
995
996     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceHeight);
997
998     return S_OK;
999 }
1000
1001 static HRESULT WINAPI Basicvideo_put_DestinationLeft(IBasicVideo *iface,
1002                                                      long DestinationLeft) {
1003     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1004
1005     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationLeft);
1006
1007     return S_OK;
1008 }
1009
1010 static HRESULT WINAPI Basicvideo_get_DestinationLeft(IBasicVideo *iface,
1011                                                      long *pDestinationLeft) {
1012     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1013
1014     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationLeft);
1015
1016     return S_OK;
1017 }
1018
1019 static HRESULT WINAPI Basicvideo_put_DestinationWidth(IBasicVideo *iface,
1020                                                       long DestinationWidth) {
1021     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1022
1023     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationWidth);
1024
1025     return S_OK;
1026 }
1027
1028 static HRESULT WINAPI Basicvideo_get_DestinationWidth(IBasicVideo *iface,
1029                                                       long *pDestinationWidth) {
1030     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1031
1032     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationWidth);
1033
1034     return S_OK;
1035 }
1036
1037 static HRESULT WINAPI Basicvideo_put_DestinationTop(IBasicVideo *iface,
1038                                                     long DestinationTop) {
1039     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1040
1041     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationTop);
1042
1043     return S_OK;
1044 }
1045
1046 static HRESULT WINAPI Basicvideo_get_DestinationTop(IBasicVideo *iface,
1047                                                     long *pDestinationTop) {
1048     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1049
1050     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationTop);
1051
1052     return S_OK;
1053 }
1054
1055 static HRESULT WINAPI Basicvideo_put_DestinationHeight(IBasicVideo *iface,
1056                                                        long DestinationHeight) {
1057     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1058
1059     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationHeight);
1060
1061     return S_OK;
1062 }
1063
1064 static HRESULT WINAPI Basicvideo_get_DestinationHeight(IBasicVideo *iface,
1065                                                        long *pDestinationHeight) {
1066     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1067
1068     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationHeight);
1069
1070     return S_OK;
1071 }
1072
1073 static HRESULT WINAPI Basicvideo_SetSourcePosition(IBasicVideo *iface,
1074                                                    long Left,
1075                                                    long Top,
1076                                                    long Width,
1077                                                    long Height) {
1078     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1079
1080     TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
1081
1082     return S_OK;
1083 }
1084
1085 static HRESULT WINAPI Basicvideo_GetSourcePosition(IBasicVideo *iface,
1086                                                    long *pLeft,
1087                                                    long *pTop,
1088                                                    long *pWidth,
1089                                                    long *pHeight) {
1090     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1091
1092     TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1093
1094     return S_OK;
1095 }
1096
1097 static HRESULT WINAPI Basicvideo_SetDefaultSourcePosition(IBasicVideo *iface) {
1098     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1099
1100     TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1101
1102     return S_OK;
1103 }
1104
1105 static HRESULT WINAPI Basicvideo_SetDestinationPosition(IBasicVideo *iface,
1106                                                         long Left,
1107                                                         long Top,
1108                                                         long Width,
1109                                                         long Height) {
1110     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1111
1112     TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
1113
1114     return S_OK;
1115 }
1116
1117 static HRESULT WINAPI Basicvideo_GetDestinationPosition(IBasicVideo *iface,
1118                                                         long *pLeft,
1119                                                         long *pTop,
1120                                                         long *pWidth,
1121                                                         long *pHeight) {
1122     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1123
1124     TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1125
1126     return S_OK;
1127 }
1128
1129 static HRESULT WINAPI Basicvideo_SetDefaultDestinationPosition(IBasicVideo *iface) {
1130     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1131
1132     TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1133
1134     return S_OK;
1135 }
1136
1137 static HRESULT WINAPI Basicvideo_GetVideoSize(IBasicVideo *iface,
1138                                               long *pWidth,
1139                                               long *pHeight) {
1140     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1141
1142     TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1143
1144     return S_OK;
1145 }
1146
1147 static HRESULT WINAPI Basicvideo_GetVideoPaletteEntries(IBasicVideo *iface,
1148                                                         long StartIndex,
1149                                                         long Entries,
1150                                                         long *pRetrieved,
1151                                                         long *pPalette) {
1152     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1153
1154     TRACE("(%p/%p)->(%ld, %ld, %p, %p): stub !!!\n", This, iface, StartIndex, Entries, pRetrieved, pPalette);
1155
1156     return S_OK;
1157 }
1158
1159 static HRESULT WINAPI Basicvideo_GetCurrentImage(IBasicVideo *iface,
1160                                                  long *pBufferSize,
1161                                                  long *pDIBImage) {
1162     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1163
1164     TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pBufferSize, pDIBImage);
1165
1166     return S_OK;
1167 }
1168
1169 static HRESULT WINAPI Basicvideo_IsUsingDefaultSource(IBasicVideo *iface) {
1170     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1171
1172     TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1173
1174     return S_OK;
1175 }
1176
1177 static HRESULT WINAPI Basicvideo_IsUsingDefaultDestination(IBasicVideo *iface) {
1178     ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1179
1180     TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1181
1182     return S_OK;
1183 }
1184
1185
1186 static ICOM_VTABLE(IBasicVideo) IBasicVideo_VTable =
1187 {
1188     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
1189     Basicvideo_QueryInterface,
1190     Basicvideo_AddRef,
1191     Basicvideo_Release,
1192     Basicvideo_GetTypeInfoCount,
1193     Basicvideo_GetTypeInfo,
1194     Basicvideo_GetIDsOfNames,
1195     Basicvideo_Invoke,
1196     Basicvideo_get_AvgTimePerFrame,
1197     Basicvideo_get_BitRate,
1198     Basicvideo_get_BitErrorRate,
1199     Basicvideo_get_VideoWidth,
1200     Basicvideo_get_VideoHeight,
1201     Basicvideo_put_SourceLeft,
1202     Basicvideo_get_SourceLeft,
1203     Basicvideo_put_SourceWidth,
1204     Basicvideo_get_SourceWidth,
1205     Basicvideo_put_SourceTop,
1206     Basicvideo_get_SourceTop,
1207     Basicvideo_put_SourceHeight,
1208     Basicvideo_get_SourceHeight,
1209     Basicvideo_put_DestinationLeft,
1210     Basicvideo_get_DestinationLeft,
1211     Basicvideo_put_DestinationWidth,
1212     Basicvideo_get_DestinationWidth,
1213     Basicvideo_put_DestinationTop,
1214     Basicvideo_get_DestinationTop,
1215     Basicvideo_put_DestinationHeight,
1216     Basicvideo_get_DestinationHeight,
1217     Basicvideo_SetSourcePosition,
1218     Basicvideo_GetSourcePosition,
1219     Basicvideo_SetDefaultSourcePosition,
1220     Basicvideo_SetDestinationPosition,
1221     Basicvideo_GetDestinationPosition,
1222     Basicvideo_SetDefaultDestinationPosition,
1223     Basicvideo_GetVideoSize,
1224     Basicvideo_GetVideoPaletteEntries,
1225     Basicvideo_GetCurrentImage,
1226     Basicvideo_IsUsingDefaultSource,
1227     Basicvideo_IsUsingDefaultDestination
1228 };
1229
1230
1231 /*** IUnknown methods ***/
1232 static HRESULT WINAPI Videowindow_QueryInterface(IVideoWindow *iface,
1233                                                  REFIID riid,
1234                                                  LPVOID*ppvObj) {
1235     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1236
1237     TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
1238
1239     return Filtergraph_QueryInterface(This, riid, ppvObj);
1240 }
1241
1242 static ULONG WINAPI Videowindow_AddRef(IVideoWindow *iface) {
1243     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1244
1245     TRACE("(%p/%p)->()\n", This, iface);
1246
1247     return Filtergraph_AddRef(This);
1248 }
1249
1250 static ULONG WINAPI Videowindow_Release(IVideoWindow *iface) {
1251     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1252
1253     TRACE("(%p/%p)->()\n", This, iface);
1254
1255     return Filtergraph_Release(This);
1256 }
1257
1258 /*** IDispatch methods ***/
1259 static HRESULT WINAPI Videowindow_GetTypeInfoCount(IVideoWindow *iface,
1260                                                    UINT*pctinfo) {
1261     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1262
1263     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
1264
1265     return S_OK;
1266 }
1267
1268 static HRESULT WINAPI Videowindow_GetTypeInfo(IVideoWindow *iface,
1269                                               UINT iTInfo,
1270                                               LCID lcid,
1271                                               ITypeInfo**ppTInfo) {
1272     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1273
1274     TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
1275
1276     return S_OK;
1277 }
1278
1279 static HRESULT WINAPI Videowindow_GetIDsOfNames(IVideoWindow *iface,
1280                                                 REFIID riid,
1281                                                 LPOLESTR*rgszNames,
1282                                                 UINT cNames,
1283                                                 LCID lcid,
1284                                                 DISPID*rgDispId) {
1285     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1286
1287     TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
1288
1289     return S_OK;
1290 }
1291
1292 static HRESULT WINAPI Videowindow_Invoke(IVideoWindow *iface,
1293                                          DISPID dispIdMember,
1294                                          REFIID riid,
1295                                          LCID lcid,
1296                                          WORD wFlags,
1297                                          DISPPARAMS*pDispParams,
1298                                          VARIANT*pVarResult,
1299                                          EXCEPINFO*pExepInfo,
1300                                          UINT*puArgErr) {
1301     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1302
1303     TRACE("(%p/%p)->(%ld, %s (%p), %ld, %04x, %p, %p, %p, %p): stub !!!\n", This, iface, dispIdMember, debugstr_guid(riid), riid, lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
1304
1305     return S_OK;
1306 }
1307
1308 /*** IVideoWindow methods ***/
1309 static HRESULT WINAPI Videowindow_put_Caption(IVideoWindow *iface,
1310                                               BSTR strCaption) {
1311     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1312
1313     TRACE("(%p/%p)->(%s (%p)): stub !!!\n", This, iface, debugstr_w(strCaption), strCaption);
1314
1315     return S_OK;
1316 }
1317
1318 static HRESULT WINAPI Videowindow_get_Caption(IVideoWindow *iface,
1319                                               BSTR *strCaption) {
1320     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1321
1322     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, strCaption);
1323
1324     return S_OK;
1325 }
1326
1327 static HRESULT WINAPI Videowindow_put_WindowStyle(IVideoWindow *iface,
1328                                                   long WindowStyle) {
1329     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1330
1331     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowStyle);
1332
1333     return S_OK;
1334 }
1335
1336 static HRESULT WINAPI Videowindow_get_WindowStyle(IVideoWindow *iface,
1337                                                   long *WindowStyle) {
1338     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1339
1340     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowStyle);
1341
1342     return S_OK;
1343 }
1344
1345 static HRESULT WINAPI Videowindow_put_WindowStyleEx(IVideoWindow *iface,
1346                                                     long WindowStyleEx) {
1347     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1348
1349     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowStyleEx);
1350
1351     return S_OK;
1352 }
1353
1354 static HRESULT WINAPI Videowindow_get_WindowStyleEx(IVideoWindow *iface,
1355                                                     long *WindowStyleEx) {
1356     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1357
1358     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowStyleEx);
1359
1360     return S_OK;
1361 }
1362
1363 static HRESULT WINAPI Videowindow_put_AutoShow(IVideoWindow *iface,
1364                                                long AutoShow) {
1365     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1366
1367     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, AutoShow);
1368
1369     return S_OK;
1370 }
1371
1372 static HRESULT WINAPI Videowindow_get_AutoShow(IVideoWindow *iface,
1373                                                long *AutoShow) {
1374     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1375
1376     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, AutoShow);
1377
1378     return S_OK;
1379 }
1380
1381 static HRESULT WINAPI Videowindow_put_WindowState(IVideoWindow *iface,
1382                                                   long WindowState) {
1383     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1384
1385     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowState);
1386
1387     return S_OK;
1388 }
1389
1390 static HRESULT WINAPI Videowindow_get_WindowState(IVideoWindow *iface,
1391                                                   long *WindowState) {
1392     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1393
1394     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowState);
1395
1396     return S_OK;
1397 }
1398
1399 static HRESULT WINAPI Videowindow_put_BackgroundPalette(IVideoWindow *iface,
1400                                                         long BackgroundPalette) {
1401     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1402
1403     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, BackgroundPalette);
1404
1405     return S_OK;
1406 }
1407
1408 static HRESULT WINAPI Videowindow_get_BackgroundPalette(IVideoWindow *iface,
1409                                                         long *pBackgroundPalette) {
1410     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1411
1412     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBackgroundPalette);
1413
1414     return S_OK;
1415 }
1416
1417 static HRESULT WINAPI Videowindow_put_Visible(IVideoWindow *iface,
1418                                               long Visible) {
1419     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1420
1421     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Visible);
1422
1423     return S_OK;
1424 }
1425
1426 static HRESULT WINAPI Videowindow_get_Visible(IVideoWindow *iface,
1427                                               long *pVisible) {
1428     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1429
1430     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVisible);
1431
1432     return S_OK;
1433 }
1434
1435 static HRESULT WINAPI Videowindow_put_Left(IVideoWindow *iface,
1436                                            long Left) {
1437     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1438
1439     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Left);
1440
1441     return S_OK;
1442 }
1443
1444 static HRESULT WINAPI Videowindow_get_Left(IVideoWindow *iface,
1445                                            long *pLeft) {
1446     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1447
1448     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pLeft);
1449
1450     return S_OK;
1451 }
1452
1453 static HRESULT WINAPI Videowindow_put_Width(IVideoWindow *iface,
1454                                             long Width) {
1455     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1456
1457     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Width);
1458
1459     return S_OK;
1460 }
1461
1462 static HRESULT WINAPI Videowindow_get_Width(IVideoWindow *iface,
1463                                             long *pWidth) {
1464     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1465
1466     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pWidth);
1467
1468     return S_OK;
1469 }
1470
1471 static HRESULT WINAPI Videowindow_put_Top(IVideoWindow *iface,
1472                                           long Top) {
1473     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1474
1475     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Top);
1476
1477     return S_OK;
1478 }
1479
1480 static HRESULT WINAPI Videowindow_get_Top(IVideoWindow *iface,
1481                                           long *pTop) {
1482     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1483
1484     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pTop);
1485
1486     return S_OK;
1487 }
1488
1489 static HRESULT WINAPI Videowindow_put_Height(IVideoWindow *iface,
1490                                              long Height) {
1491     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1492
1493     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Height);
1494
1495     return S_OK;
1496 }
1497
1498 static HRESULT WINAPI Videowindow_get_Height(IVideoWindow *iface,
1499                                              long *pHeight) {
1500     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1501
1502     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pHeight);
1503
1504     return S_OK;
1505 }
1506
1507 static HRESULT WINAPI Videowindow_put_Owner(IVideoWindow *iface,
1508                                             OAHWND Owner) {
1509     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1510
1511     TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Owner);
1512
1513     return S_OK;
1514 }
1515
1516 static HRESULT WINAPI Videowindow_get_Owner(IVideoWindow *iface,
1517                                             OAHWND *Owner) {
1518     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1519
1520     TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Owner);
1521
1522     return S_OK;
1523 }
1524
1525 static HRESULT WINAPI Videowindow_put_MessageDrain(IVideoWindow *iface,
1526                                                    OAHWND Drain) {
1527     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1528
1529     TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Drain);
1530
1531     return S_OK;
1532 }
1533
1534 static HRESULT WINAPI Videowindow_get_MessageDrain(IVideoWindow *iface,
1535                                                    OAHWND *Drain) {
1536     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1537
1538     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, Drain);
1539
1540     return S_OK;
1541 }
1542
1543 static HRESULT WINAPI Videowindow_get_BorderColor(IVideoWindow *iface,
1544                                                   long *Color) {
1545     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1546
1547     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, Color);
1548
1549     return S_OK;
1550 }
1551
1552 static HRESULT WINAPI Videowindow_put_BorderColor(IVideoWindow *iface,
1553                                                   long Color) {
1554     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1555
1556     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Color);
1557
1558     return S_OK;
1559 }
1560
1561 static HRESULT WINAPI Videowindow_get_FullScreenMode(IVideoWindow *iface,
1562                                                      long *FullScreenMode) {
1563     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1564
1565     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, FullScreenMode);
1566
1567     return S_OK;
1568 }
1569
1570 static HRESULT WINAPI Videowindow_put_FullScreenMode(IVideoWindow *iface,
1571                                                      long FullScreenMode) {
1572     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1573
1574     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, FullScreenMode);
1575
1576     return S_OK;
1577 }
1578
1579 static HRESULT WINAPI Videowindow_SetWindowForeground(IVideoWindow *iface,
1580                                                       long Focus) {
1581     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1582
1583     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Focus);
1584
1585     return S_OK;
1586 }
1587
1588 static HRESULT WINAPI Videowindow_NotifyOwnerMessage(IVideoWindow *iface,
1589                                                      OAHWND hwnd,
1590                                                      long uMsg,
1591                                                      LONG_PTR wParam,
1592                                                      LONG_PTR lParam) {
1593     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1594
1595     TRACE("(%p/%p)->(%08lx, %ld, %08lx, %08lx): stub !!!\n", This, iface, (DWORD) hwnd, uMsg, wParam, lParam);
1596
1597     return S_OK;
1598 }
1599
1600 static HRESULT WINAPI Videowindow_SetWindowPosition(IVideoWindow *iface,
1601                                                     long Left,
1602                                                     long Top,
1603                                                     long Width,
1604                                                     long Height) {
1605     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1606     
1607     TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
1608
1609     return S_OK;
1610 }
1611
1612 static HRESULT WINAPI Videowindow_GetWindowPosition(IVideoWindow *iface,
1613                                                     long *pLeft,
1614                                                     long *pTop,
1615                                                     long *pWidth,
1616                                                     long *pHeight) {
1617     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1618
1619     TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1620
1621     return S_OK;
1622 }
1623
1624 static HRESULT WINAPI Videowindow_GetMinIdealImageSize(IVideoWindow *iface,
1625                                                        long *pWidth,
1626                                                        long *pHeight) {
1627     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1628
1629     TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1630
1631     return S_OK;
1632 }
1633
1634 static HRESULT WINAPI Videowindow_GetMaxIdealImageSize(IVideoWindow *iface,
1635                                                        long *pWidth,
1636                                                        long *pHeight) {
1637     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1638
1639     TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1640
1641     return S_OK;
1642 }
1643
1644 static HRESULT WINAPI Videowindow_GetRestorePosition(IVideoWindow *iface,
1645                                                      long *pLeft,
1646                                                      long *pTop,
1647                                                      long *pWidth,
1648                                                      long *pHeight) {
1649     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1650
1651     TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1652
1653     return S_OK;
1654 }
1655
1656 static HRESULT WINAPI Videowindow_HideCursor(IVideoWindow *iface,
1657                                              long HideCursor) {
1658     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1659
1660     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, HideCursor);
1661
1662     return S_OK;
1663 }
1664
1665 static HRESULT WINAPI Videowindow_IsCursorHidden(IVideoWindow *iface,
1666                                                  long *CursorHidden) {
1667     ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1668
1669     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, CursorHidden);
1670
1671     return S_OK;
1672 }
1673
1674
1675 static ICOM_VTABLE(IVideoWindow) IVideoWindow_VTable =
1676 {
1677     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
1678     Videowindow_QueryInterface,
1679     Videowindow_AddRef,
1680     Videowindow_Release,
1681     Videowindow_GetTypeInfoCount,
1682     Videowindow_GetTypeInfo,
1683     Videowindow_GetIDsOfNames,
1684     Videowindow_Invoke,
1685     Videowindow_put_Caption,
1686     Videowindow_get_Caption,
1687     Videowindow_put_WindowStyle,
1688     Videowindow_get_WindowStyle,
1689     Videowindow_put_WindowStyleEx,
1690     Videowindow_get_WindowStyleEx,
1691     Videowindow_put_AutoShow,
1692     Videowindow_get_AutoShow,
1693     Videowindow_put_WindowState,
1694     Videowindow_get_WindowState,
1695     Videowindow_put_BackgroundPalette,
1696     Videowindow_get_BackgroundPalette,
1697     Videowindow_put_Visible,
1698     Videowindow_get_Visible,
1699     Videowindow_put_Left,
1700     Videowindow_get_Left,
1701     Videowindow_put_Width,
1702     Videowindow_get_Width,
1703     Videowindow_put_Top,
1704     Videowindow_get_Top,
1705     Videowindow_put_Height,
1706     Videowindow_get_Height,
1707     Videowindow_put_Owner,
1708     Videowindow_get_Owner,
1709     Videowindow_put_MessageDrain,
1710     Videowindow_get_MessageDrain,
1711     Videowindow_get_BorderColor,
1712     Videowindow_put_BorderColor,
1713     Videowindow_get_FullScreenMode,
1714     Videowindow_put_FullScreenMode,
1715     Videowindow_SetWindowForeground,
1716     Videowindow_NotifyOwnerMessage,
1717     Videowindow_SetWindowPosition,
1718     Videowindow_GetWindowPosition,
1719     Videowindow_GetMinIdealImageSize,
1720     Videowindow_GetMaxIdealImageSize,
1721     Videowindow_GetRestorePosition,
1722     Videowindow_HideCursor,
1723     Videowindow_IsCursorHidden
1724 };
1725
1726
1727 /*** IUnknown methods ***/
1728 static HRESULT WINAPI Mediaevent_QueryInterface(IMediaEventEx *iface,
1729                                                 REFIID riid,
1730                                                 LPVOID*ppvObj) {
1731     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1732
1733     TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
1734
1735     return Filtergraph_QueryInterface(This, riid, ppvObj);
1736 }
1737
1738 static ULONG WINAPI Mediaevent_AddRef(IMediaEventEx *iface) {
1739     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1740
1741     TRACE("(%p/%p)->()\n", This, iface);
1742
1743     return Filtergraph_AddRef(This);
1744 }
1745
1746 static ULONG WINAPI Mediaevent_Release(IMediaEventEx *iface) {
1747     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1748
1749     TRACE("(%p/%p)->()\n", This, iface);
1750
1751     return Filtergraph_Release(This);
1752 }
1753
1754 /*** IDispatch methods ***/
1755 static HRESULT WINAPI Mediaevent_GetTypeInfoCount(IMediaEventEx *iface,
1756                                                   UINT*pctinfo) {
1757     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1758
1759     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
1760
1761     return S_OK;
1762 }
1763
1764 static HRESULT WINAPI Mediaevent_GetTypeInfo(IMediaEventEx *iface,
1765                                              UINT iTInfo,
1766                                              LCID lcid,
1767                                              ITypeInfo**ppTInfo) {
1768     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1769
1770     TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
1771
1772     return S_OK;
1773 }
1774
1775 static HRESULT WINAPI Mediaevent_GetIDsOfNames(IMediaEventEx *iface,
1776                                                REFIID riid,
1777                                                LPOLESTR*rgszNames,
1778                                                UINT cNames,
1779                                                LCID lcid,
1780                                                DISPID*rgDispId) {
1781     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1782
1783     TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
1784
1785     return S_OK;
1786 }
1787
1788 static HRESULT WINAPI Mediaevent_Invoke(IMediaEventEx *iface,
1789                                         DISPID dispIdMember,
1790                                         REFIID riid,
1791                                         LCID lcid,
1792                                         WORD wFlags,
1793                                         DISPPARAMS*pDispParams,
1794                                         VARIANT*pVarResult,
1795                                         EXCEPINFO*pExepInfo,
1796                                         UINT*puArgErr) {
1797     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1798
1799     TRACE("(%p/%p)->(%ld, %s (%p), %ld, %04x, %p, %p, %p, %p): stub !!!\n", This, iface, dispIdMember, debugstr_guid(riid), riid, lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
1800
1801     return S_OK;
1802 }
1803
1804 /*** IMediaEvent methods ***/
1805 static HRESULT WINAPI Mediaevent_GetEventHandle(IMediaEventEx *iface,
1806                                                 OAEVENT *hEvent) {
1807     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1808
1809     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, hEvent);
1810
1811     return S_OK;
1812 }
1813
1814 static HRESULT WINAPI Mediaevent_GetEvent(IMediaEventEx *iface,
1815                                           long *lEventCode,
1816                                           LONG_PTR *lParam1,
1817                                           LONG_PTR *lParam2,
1818                                           long msTimeout) {
1819     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1820
1821     TRACE("(%p/%p)->(%p, %p, %p, %ld): stub !!!\n", This, iface, lEventCode, lParam1, lParam2, msTimeout);
1822
1823     return S_OK;
1824 }
1825
1826 static HRESULT WINAPI Mediaevent_WaitForCompletion(IMediaEventEx *iface,
1827                                                    long msTimeout,
1828                                                    long *pEvCode) {
1829     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1830
1831     TRACE("(%p/%p)->(%ld, %p): stub !!!\n", This, iface, msTimeout, pEvCode);
1832
1833     return S_OK;
1834 }
1835
1836 static HRESULT WINAPI Mediaevent_CancelDefaultHandling(IMediaEventEx *iface,
1837                                                        long lEvCode) {
1838     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1839
1840     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lEvCode);
1841
1842     return S_OK;
1843 }
1844
1845 static HRESULT WINAPI Mediaevent_RestoreDefaultHandling(IMediaEventEx *iface,
1846                                                         long lEvCode) {
1847     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1848
1849     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lEvCode);
1850
1851     return S_OK;
1852 }
1853
1854 static HRESULT WINAPI Mediaevent_FreeEventParams(IMediaEventEx *iface,
1855                                                  long lEvCode,
1856                                                  LONG_PTR lParam1,
1857                                                  LONG_PTR lParam2) {
1858     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1859
1860     TRACE("(%p/%p)->(%ld, %08lx, %08lx): stub !!!\n", This, iface, lEvCode, lParam1, lParam2);
1861
1862     return S_OK;
1863 }
1864
1865 /*** IMediaEventEx methods ***/
1866 static HRESULT WINAPI Mediaevent_SetNotifyWindow(IMediaEventEx *iface,
1867                                                  OAHWND hwnd,
1868                                                  long lMsg,
1869                                                  LONG_PTR lInstanceData) {
1870     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1871
1872     TRACE("(%p/%p)->(%08lx, %ld, %08lx): stub !!!\n", This, iface, (DWORD) hwnd, lMsg, lInstanceData);
1873
1874     return S_OK;
1875 }
1876
1877 static HRESULT WINAPI Mediaevent_SetNotifyFlags(IMediaEventEx *iface,
1878                                                 long lNoNotifyFlags) {
1879     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1880
1881     TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lNoNotifyFlags);
1882
1883     return S_OK;
1884 }
1885
1886 static HRESULT WINAPI Mediaevent_GetNotifyFlags(IMediaEventEx *iface,
1887                                                 long *lplNoNotifyFlags) {
1888     ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1889
1890     TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, lplNoNotifyFlags);
1891
1892     return S_OK;
1893 }
1894
1895
1896 static ICOM_VTABLE(IMediaEventEx) IMediaEventEx_VTable =
1897 {
1898     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
1899     Mediaevent_QueryInterface,
1900     Mediaevent_AddRef,
1901     Mediaevent_Release,
1902     Mediaevent_GetTypeInfoCount,
1903     Mediaevent_GetTypeInfo,
1904     Mediaevent_GetIDsOfNames,
1905     Mediaevent_Invoke,
1906     Mediaevent_GetEventHandle,
1907     Mediaevent_GetEvent,
1908     Mediaevent_WaitForCompletion,
1909     Mediaevent_CancelDefaultHandling,
1910     Mediaevent_RestoreDefaultHandling,
1911     Mediaevent_FreeEventParams,
1912     Mediaevent_SetNotifyWindow,
1913     Mediaevent_SetNotifyFlags,
1914     Mediaevent_GetNotifyFlags
1915 };
1916
1917
1918
1919
1920
1921 /* This is the only function that actually creates a FilterGraph class... */
1922 HRESULT FILTERGRAPH_create(IUnknown *pUnkOuter, LPVOID *ppObj) {
1923     IFilterGraphImpl *fimpl;
1924
1925     TRACE("(%p,%p)\n", pUnkOuter, ppObj);
1926
1927     fimpl = (IFilterGraphImpl *) HeapAlloc(GetProcessHeap(), 0, sizeof(*fimpl));
1928     fimpl->IGraphBuilder_vtbl = &IGraphBuilder_VTable;
1929     fimpl->IMediaControl_vtbl = &IMediaControl_VTable;
1930     fimpl->IMediaSeeking_vtbl = &IMediaSeeking_VTable;
1931     fimpl->IBasicAudio_vtbl = &IBasicAudio_VTable;
1932     fimpl->IBasicVideo_vtbl = &IBasicVideo_VTable;
1933     fimpl->IVideoWindow_vtbl = &IVideoWindow_VTable;
1934     fimpl->IMediaEventEx_vtbl = &IMediaEventEx_VTable;
1935     fimpl->ref = 1;
1936
1937     *ppObj = fimpl;
1938     return S_OK;
1939 }