Fixed the behavior for SHGetFileInfo when the SHGFI_USEFILEATTRIBUTES
[wine] / dlls / quartz / fgpass.c
1 /*
2  * Implementation of IBasicAudio, IBasicVideo2, IVideoWindow for FilterGraph.
3  *
4  * hidenori@a2.ctktv.ne.jp
5  */
6
7 #include "config.h"
8
9 #include "windef.h"
10 #include "winbase.h"
11 #include "wingdi.h"
12 #include "winuser.h"
13 #include "winerror.h"
14 #include "strmif.h"
15 #include "control.h"
16 #include "uuids.h"
17
18 #include "debugtools.h"
19 DEFAULT_DEBUG_CHANNEL(quartz);
20
21 #include "quartz_private.h"
22 #include "fgraph.h"
23
24
25 static HRESULT CFilterGraph_QIFilters(
26         CFilterGraph* This, REFIID riid, void** ppvobj )
27 {
28         QUARTZ_CompListItem*    pItem;
29         HRESULT hr = E_NOINTERFACE;
30
31         TRACE( "(%p,%p,%p)\n",This,riid,ppvobj);
32
33         QUARTZ_CompList_Lock( This->m_pFilterList );
34         pItem = QUARTZ_CompList_GetLast( This->m_pFilterList );
35         while ( pItem != NULL )
36         {
37                 if ( IUnknown_QueryInterface( QUARTZ_CompList_GetItemPtr(pItem),riid,ppvobj) == S_OK )
38                 {
39                         hr = S_OK;
40                         break;
41                 }
42                 pItem = QUARTZ_CompList_GetPrev( This->m_pFilterList, pItem );
43         }
44         QUARTZ_CompList_Unlock( This->m_pFilterList );
45
46         return hr;
47 }
48
49
50 static HRESULT CFilterGraph_QueryBasicAudio(
51         CFilterGraph* This, IBasicAudio** ppAudio )
52 {
53         return CFilterGraph_QIFilters(This,&IID_IBasicAudio,(void**)ppAudio);
54 }
55
56 static HRESULT CFilterGraph_QueryBasicVideo(
57         CFilterGraph* This, IBasicVideo** ppVideo )
58 {
59         return CFilterGraph_QIFilters(This,&IID_IBasicVideo,(void**)ppVideo);
60 }
61
62 static HRESULT CFilterGraph_QueryBasicVideo2(
63         CFilterGraph* This, IBasicVideo2** ppVideo )
64 {
65         return CFilterGraph_QIFilters(This,&IID_IBasicVideo2,(void**)ppVideo);
66 }
67
68 static HRESULT CFilterGraph_QueryVideoWindow(
69         CFilterGraph* This, IVideoWindow** ppVidWin )
70 {
71         return CFilterGraph_QIFilters(This,&IID_IVideoWindow,(void**)ppVidWin);
72 }
73
74
75
76 /***************************************************************************
77  *
78  *      CFilterGraph::IBasicAudio
79  *
80  */
81
82 #define QUERYBASICAUDIO \
83         IBasicAudio* pAudio = NULL; \
84         HRESULT hr; \
85         hr = CFilterGraph_QueryBasicAudio( This, &pAudio ); \
86         if ( FAILED(hr) ) return hr;
87
88
89 static HRESULT WINAPI
90 IBasicAudio_fnQueryInterface(IBasicAudio* iface,REFIID riid,void** ppobj)
91 {
92         CFilterGraph_THIS(iface,basaud);
93
94         TRACE("(%p)->()\n",This);
95
96         return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
97 }
98
99 static ULONG WINAPI
100 IBasicAudio_fnAddRef(IBasicAudio* iface)
101 {
102         CFilterGraph_THIS(iface,basaud);
103
104         TRACE("(%p)->()\n",This);
105
106         return IUnknown_AddRef(This->unk.punkControl);
107 }
108
109 static ULONG WINAPI
110 IBasicAudio_fnRelease(IBasicAudio* iface)
111 {
112         CFilterGraph_THIS(iface,basaud);
113
114         TRACE("(%p)->()\n",This);
115
116         return IUnknown_Release(This->unk.punkControl);
117 }
118
119 static HRESULT WINAPI
120 IBasicAudio_fnGetTypeInfoCount(IBasicAudio* iface,UINT* pcTypeInfo)
121 {
122         CFilterGraph_THIS(iface,basaud);
123
124         FIXME("(%p)->()\n",This);
125
126         return E_NOTIMPL;
127 }
128
129 static HRESULT WINAPI
130 IBasicAudio_fnGetTypeInfo(IBasicAudio* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
131 {
132         CFilterGraph_THIS(iface,basaud);
133
134         FIXME("(%p)->()\n",This);
135
136         return E_NOTIMPL;
137 }
138
139 static HRESULT WINAPI
140 IBasicAudio_fnGetIDsOfNames(IBasicAudio* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
141 {
142         CFilterGraph_THIS(iface,basaud);
143
144         FIXME("(%p)->()\n",This);
145
146         return E_NOTIMPL;
147 }
148
149 static HRESULT WINAPI
150 IBasicAudio_fnInvoke(IBasicAudio* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
151 {
152         CFilterGraph_THIS(iface,basaud);
153
154         FIXME("(%p)->()\n",This);
155
156         return E_NOTIMPL;
157 }
158
159
160 static HRESULT WINAPI
161 IBasicAudio_fnput_Volume(IBasicAudio* iface,long lVol)
162 {
163         CFilterGraph_THIS(iface,basaud);
164         QUERYBASICAUDIO
165
166         TRACE("(%p)->()\n",This);
167
168         return IBasicAudio_put_Volume(pAudio,lVol);
169 }
170
171 static HRESULT WINAPI
172 IBasicAudio_fnget_Volume(IBasicAudio* iface,long* plVol)
173 {
174         CFilterGraph_THIS(iface,basaud);
175         QUERYBASICAUDIO
176
177         TRACE("(%p)->()\n",This);
178
179         return IBasicAudio_get_Volume(pAudio,plVol);
180 }
181
182 static HRESULT WINAPI
183 IBasicAudio_fnput_Balance(IBasicAudio* iface,long lBalance)
184 {
185         CFilterGraph_THIS(iface,basaud);
186         QUERYBASICAUDIO
187
188         TRACE("(%p)->()\n",This);
189
190         return IBasicAudio_put_Balance(pAudio,lBalance);
191 }
192
193 static HRESULT WINAPI
194 IBasicAudio_fnget_Balance(IBasicAudio* iface,long* plBalance)
195 {
196         CFilterGraph_THIS(iface,basaud);
197         QUERYBASICAUDIO
198
199         TRACE("(%p)->()\n",This);
200
201         return IBasicAudio_get_Balance(pAudio,plBalance);
202 }
203
204
205 static ICOM_VTABLE(IBasicAudio) ibasicaudio =
206 {
207         ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
208         /* IUnknown fields */
209         IBasicAudio_fnQueryInterface,
210         IBasicAudio_fnAddRef,
211         IBasicAudio_fnRelease,
212         /* IDispatch fields */
213         IBasicAudio_fnGetTypeInfoCount,
214         IBasicAudio_fnGetTypeInfo,
215         IBasicAudio_fnGetIDsOfNames,
216         IBasicAudio_fnInvoke,
217         /* IBasicAudio fields */
218         IBasicAudio_fnput_Volume,
219         IBasicAudio_fnget_Volume,
220         IBasicAudio_fnput_Balance,
221         IBasicAudio_fnget_Balance,
222 };
223
224
225 HRESULT CFilterGraph_InitIBasicAudio( CFilterGraph* pfg )
226 {
227         TRACE("(%p)\n",pfg);
228         ICOM_VTBL(&pfg->basaud) = &ibasicaudio;
229
230         return NOERROR;
231 }
232
233 void CFilterGraph_UninitIBasicAudio( CFilterGraph* pfg )
234 {
235         TRACE("(%p)\n",pfg);
236 }
237
238 #undef QUERYBASICAUDIO
239
240
241 /***************************************************************************
242  *
243  *      CFilterGraph::IBasicVideo2
244  *
245  */
246
247
248 #define QUERYBASICVIDEO \
249         IBasicVideo* pVideo = NULL; \
250         HRESULT hr; \
251         hr = CFilterGraph_QueryBasicVideo( This, &pVideo ); \
252         if ( FAILED(hr) ) return hr;
253
254 #define QUERYBASICVIDEO2        \
255         IBasicVideo2* pVideo = NULL; \
256         HRESULT hr; \
257         hr = CFilterGraph_QueryBasicVideo2( This, &pVideo ); \
258         if ( FAILED(hr) ) return hr;
259
260
261 static HRESULT WINAPI
262 IBasicVideo2_fnQueryInterface(IBasicVideo2* iface,REFIID riid,void** ppobj)
263 {
264         CFilterGraph_THIS(iface,basvid);
265
266         TRACE("(%p)->()\n",This);
267
268         return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
269 }
270
271 static ULONG WINAPI
272 IBasicVideo2_fnAddRef(IBasicVideo2* iface)
273 {
274         CFilterGraph_THIS(iface,basvid);
275
276         TRACE("(%p)->()\n",This);
277
278         return IUnknown_AddRef(This->unk.punkControl);
279 }
280
281 static ULONG WINAPI
282 IBasicVideo2_fnRelease(IBasicVideo2* iface)
283 {
284         CFilterGraph_THIS(iface,basvid);
285
286         TRACE("(%p)->()\n",This);
287
288         return IUnknown_Release(This->unk.punkControl);
289 }
290
291 static HRESULT WINAPI
292 IBasicVideo2_fnGetTypeInfoCount(IBasicVideo2* iface,UINT* pcTypeInfo)
293 {
294         CFilterGraph_THIS(iface,basvid);
295
296         FIXME("(%p)->()\n",This);
297
298         return E_NOTIMPL;
299 }
300
301 static HRESULT WINAPI
302 IBasicVideo2_fnGetTypeInfo(IBasicVideo2* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
303 {
304         CFilterGraph_THIS(iface,basvid);
305
306         FIXME("(%p)->()\n",This);
307
308         return E_NOTIMPL;
309 }
310
311 static HRESULT WINAPI
312 IBasicVideo2_fnGetIDsOfNames(IBasicVideo2* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
313 {
314         CFilterGraph_THIS(iface,basvid);
315
316         FIXME("(%p)->()\n",This);
317
318         return E_NOTIMPL;
319 }
320
321 static HRESULT WINAPI
322 IBasicVideo2_fnInvoke(IBasicVideo2* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
323 {
324         CFilterGraph_THIS(iface,basvid);
325
326         FIXME("(%p)->()\n",This);
327
328         return E_NOTIMPL;
329 }
330
331
332 static HRESULT WINAPI
333 IBasicVideo2_fnget_AvgTimePerFrame(IBasicVideo2* iface,REFTIME* prefTime)
334 {
335         CFilterGraph_THIS(iface,basvid);
336         QUERYBASICVIDEO
337
338         TRACE("(%p)->()\n",This);
339
340         return IBasicVideo_get_AvgTimePerFrame(pVideo,prefTime);
341 }
342
343 static HRESULT WINAPI
344 IBasicVideo2_fnget_BitRate(IBasicVideo2* iface,long* plRate)
345 {
346         CFilterGraph_THIS(iface,basvid);
347         QUERYBASICVIDEO
348
349         TRACE("(%p)->()\n",This);
350
351         return IBasicVideo_get_BitRate(pVideo,plRate);
352 }
353
354 static HRESULT WINAPI
355 IBasicVideo2_fnget_BitErrorRate(IBasicVideo2* iface,long* plRate)
356 {
357         CFilterGraph_THIS(iface,basvid);
358         QUERYBASICVIDEO
359
360         TRACE("(%p)->()\n",This);
361
362         return IBasicVideo_get_BitErrorRate(pVideo,plRate);
363 }
364
365 static HRESULT WINAPI
366 IBasicVideo2_fnget_VideoWidth(IBasicVideo2* iface,long* plWidth)
367 {
368         CFilterGraph_THIS(iface,basvid);
369         QUERYBASICVIDEO
370
371         TRACE("(%p)->()\n",This);
372
373         return IBasicVideo_get_VideoWidth(pVideo,plWidth);
374 }
375
376 static HRESULT WINAPI
377 IBasicVideo2_fnget_VideoHeight(IBasicVideo2* iface,long* plHeight)
378 {
379         CFilterGraph_THIS(iface,basvid);
380         QUERYBASICVIDEO
381
382         TRACE("(%p)->()\n",This);
383
384         return IBasicVideo_get_VideoHeight(pVideo,plHeight);
385 }
386
387 static HRESULT WINAPI
388 IBasicVideo2_fnput_SourceLeft(IBasicVideo2* iface,long lLeft)
389 {
390         CFilterGraph_THIS(iface,basvid);
391         QUERYBASICVIDEO
392
393         TRACE("(%p)->()\n",This);
394
395         return IBasicVideo_put_SourceLeft(pVideo,lLeft);
396 }
397
398 static HRESULT WINAPI
399 IBasicVideo2_fnget_SourceLeft(IBasicVideo2* iface,long* plLeft)
400 {
401         CFilterGraph_THIS(iface,basvid);
402         QUERYBASICVIDEO
403
404         TRACE("(%p)->()\n",This);
405
406         return IBasicVideo_get_SourceLeft(pVideo,plLeft);
407 }
408
409 static HRESULT WINAPI
410 IBasicVideo2_fnput_SourceWidth(IBasicVideo2* iface,long lWidth)
411 {
412         CFilterGraph_THIS(iface,basvid);
413         QUERYBASICVIDEO
414
415         TRACE("(%p)->()\n",This);
416
417         return IBasicVideo_put_SourceWidth(pVideo,lWidth);
418 }
419
420 static HRESULT WINAPI
421 IBasicVideo2_fnget_SourceWidth(IBasicVideo2* iface,long* plWidth)
422 {
423         CFilterGraph_THIS(iface,basvid);
424         QUERYBASICVIDEO
425
426         TRACE("(%p)->()\n",This);
427
428         return IBasicVideo_get_SourceWidth(pVideo,plWidth);
429 }
430
431 static HRESULT WINAPI
432 IBasicVideo2_fnput_SourceTop(IBasicVideo2* iface,long lTop)
433 {
434         CFilterGraph_THIS(iface,basvid);
435         QUERYBASICVIDEO
436
437         TRACE("(%p)->()\n",This);
438
439         return IBasicVideo_put_SourceTop(pVideo,lTop);
440 }
441
442 static HRESULT WINAPI
443 IBasicVideo2_fnget_SourceTop(IBasicVideo2* iface,long* plTop)
444 {
445         CFilterGraph_THIS(iface,basvid);
446         QUERYBASICVIDEO
447
448         TRACE("(%p)->()\n",This);
449
450         return IBasicVideo_get_SourceTop(pVideo,plTop);
451 }
452
453 static HRESULT WINAPI
454 IBasicVideo2_fnput_SourceHeight(IBasicVideo2* iface,long lHeight)
455 {
456         CFilterGraph_THIS(iface,basvid);
457         QUERYBASICVIDEO
458
459         TRACE("(%p)->()\n",This);
460
461         return IBasicVideo_put_SourceHeight(pVideo,lHeight);
462 }
463
464 static HRESULT WINAPI
465 IBasicVideo2_fnget_SourceHeight(IBasicVideo2* iface,long* plHeight)
466 {
467         CFilterGraph_THIS(iface,basvid);
468         QUERYBASICVIDEO
469
470         TRACE("(%p)->()\n",This);
471
472         return IBasicVideo_get_SourceHeight(pVideo,plHeight);
473 }
474
475 static HRESULT WINAPI
476 IBasicVideo2_fnput_DestinationLeft(IBasicVideo2* iface,long lLeft)
477 {
478         CFilterGraph_THIS(iface,basvid);
479         QUERYBASICVIDEO
480
481         TRACE("(%p)->()\n",This);
482
483         return IBasicVideo_put_DestinationLeft(pVideo,lLeft);
484 }
485
486 static HRESULT WINAPI
487 IBasicVideo2_fnget_DestinationLeft(IBasicVideo2* iface,long* plLeft)
488 {
489         CFilterGraph_THIS(iface,basvid);
490         QUERYBASICVIDEO
491
492         TRACE("(%p)->()\n",This);
493
494         return IBasicVideo_get_DestinationLeft(pVideo,plLeft);
495 }
496
497 static HRESULT WINAPI
498 IBasicVideo2_fnput_DestinationWidth(IBasicVideo2* iface,long lWidth)
499 {
500         CFilterGraph_THIS(iface,basvid);
501         QUERYBASICVIDEO
502
503         TRACE("(%p)->()\n",This);
504
505         return IBasicVideo_put_DestinationWidth(pVideo,lWidth);
506 }
507
508 static HRESULT WINAPI
509 IBasicVideo2_fnget_DestinationWidth(IBasicVideo2* iface,long* plWidth)
510 {
511         CFilterGraph_THIS(iface,basvid);
512         QUERYBASICVIDEO
513
514         TRACE("(%p)->()\n",This);
515
516         return IBasicVideo_get_DestinationWidth(pVideo,plWidth);
517 }
518
519 static HRESULT WINAPI
520 IBasicVideo2_fnput_DestinationTop(IBasicVideo2* iface,long lTop)
521 {
522         CFilterGraph_THIS(iface,basvid);
523         QUERYBASICVIDEO
524
525         TRACE("(%p)->()\n",This);
526
527         return IBasicVideo_put_DestinationTop(pVideo,lTop);
528 }
529
530 static HRESULT WINAPI
531 IBasicVideo2_fnget_DestinationTop(IBasicVideo2* iface,long* plTop)
532 {
533         CFilterGraph_THIS(iface,basvid);
534         QUERYBASICVIDEO
535
536         TRACE("(%p)->()\n",This);
537
538         return IBasicVideo_get_DestinationTop(pVideo,plTop);
539 }
540
541 static HRESULT WINAPI
542 IBasicVideo2_fnput_DestinationHeight(IBasicVideo2* iface,long lHeight)
543 {
544         CFilterGraph_THIS(iface,basvid);
545         QUERYBASICVIDEO
546
547         TRACE("(%p)->()\n",This);
548
549         return IBasicVideo_put_DestinationHeight(pVideo,lHeight);
550 }
551
552 static HRESULT WINAPI
553 IBasicVideo2_fnget_DestinationHeight(IBasicVideo2* iface,long* plHeight)
554 {
555         CFilterGraph_THIS(iface,basvid);
556         QUERYBASICVIDEO
557
558         TRACE("(%p)->()\n",This);
559
560         return IBasicVideo_get_DestinationHeight(pVideo,plHeight);
561 }
562
563 static HRESULT WINAPI
564 IBasicVideo2_fnSetSourcePosition(IBasicVideo2* iface,long lLeft,long lTop,long lWidth,long lHeight)
565 {
566         CFilterGraph_THIS(iface,basvid);
567         QUERYBASICVIDEO
568
569         TRACE("(%p)->()\n",This);
570
571         return IBasicVideo_SetSourcePosition(pVideo,lLeft,lTop,lWidth,lHeight);
572 }
573
574 static HRESULT WINAPI
575 IBasicVideo2_fnGetSourcePosition(IBasicVideo2* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
576 {
577         CFilterGraph_THIS(iface,basvid);
578         QUERYBASICVIDEO
579
580         TRACE("(%p)->()\n",This);
581
582         return IBasicVideo_GetSourcePosition(pVideo,plLeft,plTop,plWidth,plHeight);
583 }
584
585 static HRESULT WINAPI
586 IBasicVideo2_fnSetDefaultSourcePosition(IBasicVideo2* iface)
587 {
588         CFilterGraph_THIS(iface,basvid);
589         QUERYBASICVIDEO
590
591         TRACE("(%p)->()\n",This);
592
593         return IBasicVideo_SetDefaultSourcePosition(pVideo);
594 }
595
596 static HRESULT WINAPI
597 IBasicVideo2_fnSetDestinationPosition(IBasicVideo2* iface,long lLeft,long lTop,long lWidth,long lHeight)
598 {
599         CFilterGraph_THIS(iface,basvid);
600         QUERYBASICVIDEO
601
602         TRACE("(%p)->()\n",This);
603
604         return IBasicVideo_SetDestinationPosition(pVideo,lLeft,lTop,lWidth,lHeight);
605 }
606
607 static HRESULT WINAPI
608 IBasicVideo2_fnGetDestinationPosition(IBasicVideo2* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
609 {
610         CFilterGraph_THIS(iface,basvid);
611         QUERYBASICVIDEO
612
613         TRACE("(%p)->()\n",This);
614
615         return IBasicVideo_GetDestinationPosition(pVideo,plLeft,plTop,plWidth,plHeight);
616 }
617
618 static HRESULT WINAPI
619 IBasicVideo2_fnSetDefaultDestinationPosition(IBasicVideo2* iface)
620 {
621         CFilterGraph_THIS(iface,basvid);
622         QUERYBASICVIDEO
623
624         TRACE("(%p)->()\n",This);
625
626         return IBasicVideo_SetDefaultDestinationPosition(pVideo);
627 }
628
629 static HRESULT WINAPI
630 IBasicVideo2_fnGetVideoSize(IBasicVideo2* iface,long* plWidth,long* plHeight)
631 {
632         CFilterGraph_THIS(iface,basvid);
633         QUERYBASICVIDEO
634
635         TRACE("(%p)->()\n",This);
636
637         return IBasicVideo_GetVideoSize(pVideo,plWidth,plHeight);
638 }
639
640 static HRESULT WINAPI
641 IBasicVideo2_fnGetVideoPaletteEntries(IBasicVideo2* iface,long lStart,long lCount,long* plRet,long* plPaletteEntry)
642 {
643         CFilterGraph_THIS(iface,basvid);
644         QUERYBASICVIDEO
645
646         TRACE("(%p)->()\n",This);
647
648         return IBasicVideo_GetVideoPaletteEntries(pVideo,lStart,lCount,plRet,plPaletteEntry);
649 }
650
651 static HRESULT WINAPI
652 IBasicVideo2_fnGetCurrentImage(IBasicVideo2* iface,long* plBufferSize,long* plDIBBuffer)
653 {
654         CFilterGraph_THIS(iface,basvid);
655         QUERYBASICVIDEO
656
657         TRACE("(%p)->()\n",This);
658
659         return IBasicVideo_GetCurrentImage(pVideo,plBufferSize,plDIBBuffer);
660 }
661
662 static HRESULT WINAPI
663 IBasicVideo2_fnIsUsingDefaultSource(IBasicVideo2* iface)
664 {
665         CFilterGraph_THIS(iface,basvid);
666         QUERYBASICVIDEO
667
668         TRACE("(%p)->()\n",This);
669
670         return IBasicVideo_IsUsingDefaultSource(pVideo);
671 }
672
673 static HRESULT WINAPI
674 IBasicVideo2_fnIsUsingDefaultDestination(IBasicVideo2* iface)
675 {
676         CFilterGraph_THIS(iface,basvid);
677         QUERYBASICVIDEO
678
679         TRACE("(%p)->()\n",This);
680
681         return IBasicVideo_IsUsingDefaultDestination(pVideo);
682 }
683
684 static HRESULT WINAPI
685 IBasicVideo2_fnGetPreferredAspectRatio(IBasicVideo2* iface,long* plRateX,long* plRateY)
686 {
687         CFilterGraph_THIS(iface,basvid);
688         QUERYBASICVIDEO2
689
690         TRACE("(%p)->()\n",This);
691
692         return IBasicVideo2_GetPreferredAspectRatio(pVideo,plRateX,plRateY);
693 }
694
695
696
697
698 static ICOM_VTABLE(IBasicVideo2) ibasicvideo =
699 {
700         ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
701         /* IUnknown fields */
702         IBasicVideo2_fnQueryInterface,
703         IBasicVideo2_fnAddRef,
704         IBasicVideo2_fnRelease,
705         /* IDispatch fields */
706         IBasicVideo2_fnGetTypeInfoCount,
707         IBasicVideo2_fnGetTypeInfo,
708         IBasicVideo2_fnGetIDsOfNames,
709         IBasicVideo2_fnInvoke,
710         /* IBasicVideo fields */
711         IBasicVideo2_fnget_AvgTimePerFrame,
712         IBasicVideo2_fnget_BitRate,
713         IBasicVideo2_fnget_BitErrorRate,
714         IBasicVideo2_fnget_VideoWidth,
715         IBasicVideo2_fnget_VideoHeight,
716         IBasicVideo2_fnput_SourceLeft,
717         IBasicVideo2_fnget_SourceLeft,
718         IBasicVideo2_fnput_SourceWidth,
719         IBasicVideo2_fnget_SourceWidth,
720         IBasicVideo2_fnput_SourceTop,
721         IBasicVideo2_fnget_SourceTop,
722         IBasicVideo2_fnput_SourceHeight,
723         IBasicVideo2_fnget_SourceHeight,
724         IBasicVideo2_fnput_DestinationLeft,
725         IBasicVideo2_fnget_DestinationLeft,
726         IBasicVideo2_fnput_DestinationWidth,
727         IBasicVideo2_fnget_DestinationWidth,
728         IBasicVideo2_fnput_DestinationTop,
729         IBasicVideo2_fnget_DestinationTop,
730         IBasicVideo2_fnput_DestinationHeight,
731         IBasicVideo2_fnget_DestinationHeight,
732         IBasicVideo2_fnSetSourcePosition,
733         IBasicVideo2_fnGetSourcePosition,
734         IBasicVideo2_fnSetDefaultSourcePosition,
735         IBasicVideo2_fnSetDestinationPosition,
736         IBasicVideo2_fnGetDestinationPosition,
737         IBasicVideo2_fnSetDefaultDestinationPosition,
738         IBasicVideo2_fnGetVideoSize,
739         IBasicVideo2_fnGetVideoPaletteEntries,
740         IBasicVideo2_fnGetCurrentImage,
741         IBasicVideo2_fnIsUsingDefaultSource,
742         IBasicVideo2_fnIsUsingDefaultDestination,
743         /* IBasicVideo2 fields */
744         IBasicVideo2_fnGetPreferredAspectRatio,
745 };
746
747
748 HRESULT CFilterGraph_InitIBasicVideo2( CFilterGraph* pfg )
749 {
750         TRACE("(%p)\n",pfg);
751         ICOM_VTBL(&pfg->basvid) = &ibasicvideo;
752
753         return NOERROR;
754 }
755
756 void CFilterGraph_UninitIBasicVideo2( CFilterGraph* pfg )
757 {
758         TRACE("(%p)\n",pfg);
759 }
760
761 #undef QUERYBASICVIDEO2
762 #undef QUERYBASICVIDEO
763
764 /***************************************************************************
765  *
766  *      CFilterGraph::IVideoWindow
767  *
768  */
769
770 #define QUERYVIDEOWINDOW \
771         IVideoWindow* pVidWin = NULL; \
772         HRESULT hr; \
773         hr = CFilterGraph_QueryVideoWindow( This, &pVidWin ); \
774         if ( FAILED(hr) ) return hr;
775
776
777 static HRESULT WINAPI
778 IVideoWindow_fnQueryInterface(IVideoWindow* iface,REFIID riid,void** ppobj)
779 {
780         CFilterGraph_THIS(iface,vidwin);
781
782         TRACE("(%p)->()\n",This);
783
784         return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
785 }
786
787 static ULONG WINAPI
788 IVideoWindow_fnAddRef(IVideoWindow* iface)
789 {
790         CFilterGraph_THIS(iface,vidwin);
791
792         TRACE("(%p)->()\n",This);
793
794         return IUnknown_AddRef(This->unk.punkControl);
795 }
796
797 static ULONG WINAPI
798 IVideoWindow_fnRelease(IVideoWindow* iface)
799 {
800         CFilterGraph_THIS(iface,vidwin);
801
802         TRACE("(%p)->()\n",This);
803
804         return IUnknown_Release(This->unk.punkControl);
805 }
806
807 static HRESULT WINAPI
808 IVideoWindow_fnGetTypeInfoCount(IVideoWindow* iface,UINT* pcTypeInfo)
809 {
810         CFilterGraph_THIS(iface,vidwin);
811
812         FIXME("(%p)->()\n",This);
813
814         return E_NOTIMPL;
815 }
816
817 static HRESULT WINAPI
818 IVideoWindow_fnGetTypeInfo(IVideoWindow* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
819 {
820         CFilterGraph_THIS(iface,vidwin);
821
822         FIXME("(%p)->()\n",This);
823
824         return E_NOTIMPL;
825 }
826
827 static HRESULT WINAPI
828 IVideoWindow_fnGetIDsOfNames(IVideoWindow* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
829 {
830         CFilterGraph_THIS(iface,vidwin);
831
832         FIXME("(%p)->()\n",This);
833
834         return E_NOTIMPL;
835 }
836
837 static HRESULT WINAPI
838 IVideoWindow_fnInvoke(IVideoWindow* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
839 {
840         CFilterGraph_THIS(iface,vidwin);
841
842         FIXME("(%p)->()\n",This);
843
844         return E_NOTIMPL;
845 }
846
847
848
849 static HRESULT WINAPI
850 IVideoWindow_fnput_Caption(IVideoWindow* iface,BSTR strCaption)
851 {
852         CFilterGraph_THIS(iface,vidwin);
853         QUERYVIDEOWINDOW
854
855         TRACE("(%p)->()\n",This);
856
857         return IVideoWindow_put_Caption(pVidWin,strCaption);
858 }
859
860 static HRESULT WINAPI
861 IVideoWindow_fnget_Caption(IVideoWindow* iface,BSTR* pstrCaption)
862 {
863         CFilterGraph_THIS(iface,vidwin);
864         QUERYVIDEOWINDOW
865
866         TRACE("(%p)->()\n",This);
867
868         return IVideoWindow_get_Caption(pVidWin,pstrCaption);
869 }
870
871 static HRESULT WINAPI
872 IVideoWindow_fnput_WindowStyle(IVideoWindow* iface,long lStyle)
873 {
874         CFilterGraph_THIS(iface,vidwin);
875         QUERYVIDEOWINDOW
876
877         TRACE("(%p)->()\n",This);
878
879         return IVideoWindow_put_WindowStyle(pVidWin,lStyle);
880 }
881
882 static HRESULT WINAPI
883 IVideoWindow_fnget_WindowStyle(IVideoWindow* iface,long* plStyle)
884 {
885         CFilterGraph_THIS(iface,vidwin);
886         QUERYVIDEOWINDOW
887
888         TRACE("(%p)->()\n",This);
889
890         return IVideoWindow_get_WindowStyle(pVidWin,plStyle);
891 }
892
893 static HRESULT WINAPI
894 IVideoWindow_fnput_WindowStyleEx(IVideoWindow* iface,long lExStyle)
895 {
896         CFilterGraph_THIS(iface,vidwin);
897         QUERYVIDEOWINDOW
898
899         TRACE("(%p)->()\n",This);
900
901         return IVideoWindow_put_WindowStyleEx(pVidWin,lExStyle);
902 }
903
904 static HRESULT WINAPI
905 IVideoWindow_fnget_WindowStyleEx(IVideoWindow* iface,long* plExStyle)
906 {
907         CFilterGraph_THIS(iface,vidwin);
908         QUERYVIDEOWINDOW
909
910         TRACE("(%p)->()\n",This);
911
912         return IVideoWindow_get_WindowStyleEx(pVidWin,plExStyle);
913 }
914
915 static HRESULT WINAPI
916 IVideoWindow_fnput_AutoShow(IVideoWindow* iface,long lAutoShow)
917 {
918         CFilterGraph_THIS(iface,vidwin);
919         QUERYVIDEOWINDOW
920
921         TRACE("(%p)->()\n",This);
922
923         return IVideoWindow_put_AutoShow(pVidWin,lAutoShow);
924 }
925
926 static HRESULT WINAPI
927 IVideoWindow_fnget_AutoShow(IVideoWindow* iface,long* plAutoShow)
928 {
929         CFilterGraph_THIS(iface,vidwin);
930         QUERYVIDEOWINDOW
931
932         TRACE("(%p)->()\n",This);
933
934         return IVideoWindow_get_AutoShow(pVidWin,plAutoShow);
935 }
936
937 static HRESULT WINAPI
938 IVideoWindow_fnput_WindowState(IVideoWindow* iface,long lState)
939 {
940         CFilterGraph_THIS(iface,vidwin);
941         QUERYVIDEOWINDOW
942
943         TRACE("(%p)->()\n",This);
944
945         return IVideoWindow_put_WindowState(pVidWin,lState);
946 }
947
948 static HRESULT WINAPI
949 IVideoWindow_fnget_WindowState(IVideoWindow* iface,long* plState)
950 {
951         CFilterGraph_THIS(iface,vidwin);
952         QUERYVIDEOWINDOW
953
954         TRACE("(%p)->()\n",This);
955
956         return IVideoWindow_get_WindowState(pVidWin,plState);
957 }
958
959 static HRESULT WINAPI
960 IVideoWindow_fnput_BackgroundPalette(IVideoWindow* iface,long lBackPal)
961 {
962         CFilterGraph_THIS(iface,vidwin);
963         QUERYVIDEOWINDOW
964
965         TRACE("(%p)->()\n",This);
966
967         return IVideoWindow_put_BackgroundPalette(pVidWin,lBackPal);
968 }
969
970 static HRESULT WINAPI
971 IVideoWindow_fnget_BackgroundPalette(IVideoWindow* iface,long* plBackPal)
972 {
973         CFilterGraph_THIS(iface,vidwin);
974         QUERYVIDEOWINDOW
975
976         TRACE("(%p)->()\n",This);
977
978         return IVideoWindow_get_BackgroundPalette(pVidWin,plBackPal);
979 }
980
981 static HRESULT WINAPI
982 IVideoWindow_fnput_Visible(IVideoWindow* iface,long lVisible)
983 {
984         CFilterGraph_THIS(iface,vidwin);
985         QUERYVIDEOWINDOW
986
987         TRACE("(%p)->()\n",This);
988
989         return IVideoWindow_put_Visible(pVidWin,lVisible);
990 }
991
992 static HRESULT WINAPI
993 IVideoWindow_fnget_Visible(IVideoWindow* iface,long* plVisible)
994 {
995         CFilterGraph_THIS(iface,vidwin);
996         QUERYVIDEOWINDOW
997
998         TRACE("(%p)->()\n",This);
999
1000         return IVideoWindow_get_Visible(pVidWin,plVisible);
1001 }
1002
1003 static HRESULT WINAPI
1004 IVideoWindow_fnput_Left(IVideoWindow* iface,long lLeft)
1005 {
1006         CFilterGraph_THIS(iface,vidwin);
1007         QUERYVIDEOWINDOW
1008
1009         TRACE("(%p)->()\n",This);
1010
1011         return IVideoWindow_put_Left(pVidWin,lLeft);
1012 }
1013
1014 static HRESULT WINAPI
1015 IVideoWindow_fnget_Left(IVideoWindow* iface,long* plLeft)
1016 {
1017         CFilterGraph_THIS(iface,vidwin);
1018         QUERYVIDEOWINDOW
1019
1020         TRACE("(%p)->()\n",This);
1021
1022         return IVideoWindow_get_Left(pVidWin,plLeft);
1023 }
1024
1025 static HRESULT WINAPI
1026 IVideoWindow_fnput_Width(IVideoWindow* iface,long lWidth)
1027 {
1028         CFilterGraph_THIS(iface,vidwin);
1029         QUERYVIDEOWINDOW
1030
1031         TRACE("(%p)->()\n",This);
1032
1033         return IVideoWindow_put_Width(pVidWin,lWidth);
1034 }
1035
1036 static HRESULT WINAPI
1037 IVideoWindow_fnget_Width(IVideoWindow* iface,long* plWidth)
1038 {
1039         CFilterGraph_THIS(iface,vidwin);
1040         QUERYVIDEOWINDOW
1041
1042         TRACE("(%p)->()\n",This);
1043
1044         return IVideoWindow_get_Width(pVidWin,plWidth);
1045 }
1046
1047 static HRESULT WINAPI
1048 IVideoWindow_fnput_Top(IVideoWindow* iface,long lTop)
1049 {
1050         CFilterGraph_THIS(iface,vidwin);
1051         QUERYVIDEOWINDOW
1052
1053         TRACE("(%p)->()\n",This);
1054
1055         return IVideoWindow_put_Top(pVidWin,lTop);
1056 }
1057
1058 static HRESULT WINAPI
1059 IVideoWindow_fnget_Top(IVideoWindow* iface,long* plTop)
1060 {
1061         CFilterGraph_THIS(iface,vidwin);
1062         QUERYVIDEOWINDOW
1063
1064         TRACE("(%p)->()\n",This);
1065
1066         return IVideoWindow_get_Top(pVidWin,plTop);
1067 }
1068
1069 static HRESULT WINAPI
1070 IVideoWindow_fnput_Height(IVideoWindow* iface,long lHeight)
1071 {
1072         CFilterGraph_THIS(iface,vidwin);
1073         QUERYVIDEOWINDOW
1074
1075         TRACE("(%p)->()\n",This);
1076
1077         return IVideoWindow_put_Height(pVidWin,lHeight);
1078 }
1079
1080 static HRESULT WINAPI
1081 IVideoWindow_fnget_Height(IVideoWindow* iface,long* plHeight)
1082 {
1083         CFilterGraph_THIS(iface,vidwin);
1084         QUERYVIDEOWINDOW
1085
1086         TRACE("(%p)->()\n",This);
1087
1088         return IVideoWindow_get_Height(pVidWin,plHeight);
1089 }
1090
1091 static HRESULT WINAPI
1092 IVideoWindow_fnput_Owner(IVideoWindow* iface,OAHWND hwnd)
1093 {
1094         CFilterGraph_THIS(iface,vidwin);
1095         QUERYVIDEOWINDOW
1096
1097         TRACE("(%p)->()\n",This);
1098
1099         return IVideoWindow_put_Owner(pVidWin,hwnd);
1100 }
1101
1102 static HRESULT WINAPI
1103 IVideoWindow_fnget_Owner(IVideoWindow* iface,OAHWND* phwnd)
1104 {
1105         CFilterGraph_THIS(iface,vidwin);
1106         QUERYVIDEOWINDOW
1107
1108         TRACE("(%p)->()\n",This);
1109
1110         return IVideoWindow_get_Owner(pVidWin,phwnd);
1111 }
1112
1113 static HRESULT WINAPI
1114 IVideoWindow_fnput_MessageDrain(IVideoWindow* iface,OAHWND hwnd)
1115 {
1116         CFilterGraph_THIS(iface,vidwin);
1117         QUERYVIDEOWINDOW
1118
1119         TRACE("(%p)->()\n",This);
1120
1121         return IVideoWindow_put_MessageDrain(pVidWin,hwnd);
1122 }
1123
1124 static HRESULT WINAPI
1125 IVideoWindow_fnget_MessageDrain(IVideoWindow* iface,OAHWND* phwnd)
1126 {
1127         CFilterGraph_THIS(iface,vidwin);
1128         QUERYVIDEOWINDOW
1129
1130         TRACE("(%p)->()\n",This);
1131
1132         return IVideoWindow_get_MessageDrain(pVidWin,phwnd);
1133 }
1134
1135 static HRESULT WINAPI
1136 IVideoWindow_fnget_BorderColor(IVideoWindow* iface,long* plColor)
1137 {
1138         CFilterGraph_THIS(iface,vidwin);
1139         QUERYVIDEOWINDOW
1140
1141         TRACE("(%p)->()\n",This);
1142
1143         return IVideoWindow_get_BorderColor(pVidWin,plColor);
1144 }
1145
1146 static HRESULT WINAPI
1147 IVideoWindow_fnput_BorderColor(IVideoWindow* iface,long lColor)
1148 {
1149         CFilterGraph_THIS(iface,vidwin);
1150         QUERYVIDEOWINDOW
1151
1152         TRACE("(%p)->()\n",This);
1153
1154         return IVideoWindow_put_BorderColor(pVidWin,lColor);
1155 }
1156
1157 static HRESULT WINAPI
1158 IVideoWindow_fnget_FullScreenMode(IVideoWindow* iface,long* plMode)
1159 {
1160         CFilterGraph_THIS(iface,vidwin);
1161         QUERYVIDEOWINDOW
1162
1163         TRACE("(%p)->()\n",This);
1164
1165         return IVideoWindow_get_FullScreenMode(pVidWin,plMode);
1166 }
1167
1168 static HRESULT WINAPI
1169 IVideoWindow_fnput_FullScreenMode(IVideoWindow* iface,long lMode)
1170 {
1171         CFilterGraph_THIS(iface,vidwin);
1172         QUERYVIDEOWINDOW
1173
1174         TRACE("(%p)->()\n",This);
1175
1176         return IVideoWindow_put_FullScreenMode(pVidWin,lMode);
1177 }
1178
1179 static HRESULT WINAPI
1180 IVideoWindow_fnSetWindowForeground(IVideoWindow* iface,long lFocus)
1181 {
1182         CFilterGraph_THIS(iface,vidwin);
1183         QUERYVIDEOWINDOW
1184
1185         TRACE("(%p)->()\n",This);
1186
1187         return IVideoWindow_SetWindowForeground(pVidWin,lFocus);
1188 }
1189
1190 static HRESULT WINAPI
1191 IVideoWindow_fnNotifyOwnerMessage(IVideoWindow* iface,OAHWND hwnd,long message,LONG_PTR wParam,LONG_PTR lParam)
1192 {
1193         CFilterGraph_THIS(iface,vidwin);
1194         QUERYVIDEOWINDOW
1195
1196         TRACE("(%p)->()\n",This);
1197
1198         return IVideoWindow_NotifyOwnerMessage(pVidWin,hwnd,message,wParam,lParam);
1199 }
1200
1201 static HRESULT WINAPI
1202 IVideoWindow_fnSetWindowPosition(IVideoWindow* iface,long lLeft,long lTop,long lWidth,long lHeight)
1203 {
1204         CFilterGraph_THIS(iface,vidwin);
1205         QUERYVIDEOWINDOW
1206
1207         TRACE("(%p)->()\n",This);
1208
1209         return IVideoWindow_SetWindowPosition(pVidWin,lLeft,lTop,lWidth,lHeight);
1210 }
1211
1212 static HRESULT WINAPI
1213 IVideoWindow_fnGetWindowPosition(IVideoWindow* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
1214 {
1215         CFilterGraph_THIS(iface,vidwin);
1216         QUERYVIDEOWINDOW
1217
1218         TRACE("(%p)->()\n",This);
1219
1220         return IVideoWindow_GetWindowPosition(pVidWin,plLeft,plTop,plWidth,plHeight);
1221 }
1222
1223 static HRESULT WINAPI
1224 IVideoWindow_fnGetMinIdealImageSize(IVideoWindow* iface,long* plWidth,long* plHeight)
1225 {
1226         CFilterGraph_THIS(iface,vidwin);
1227         QUERYVIDEOWINDOW
1228
1229         TRACE("(%p)->()\n",This);
1230
1231         return IVideoWindow_GetMinIdealImageSize(pVidWin,plWidth,plHeight);
1232 }
1233
1234 static HRESULT WINAPI
1235 IVideoWindow_fnGetMaxIdealImageSize(IVideoWindow* iface,long* plWidth,long* plHeight)
1236 {
1237         CFilterGraph_THIS(iface,vidwin);
1238         QUERYVIDEOWINDOW
1239
1240         TRACE("(%p)->()\n",This);
1241
1242         return IVideoWindow_GetMaxIdealImageSize(pVidWin,plWidth,plHeight);
1243 }
1244
1245 static HRESULT WINAPI
1246 IVideoWindow_fnGetRestorePosition(IVideoWindow* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
1247 {
1248         CFilterGraph_THIS(iface,vidwin);
1249         QUERYVIDEOWINDOW
1250
1251         TRACE("(%p)->()\n",This);
1252
1253         return IVideoWindow_GetRestorePosition(pVidWin,plLeft,plTop,plWidth,plHeight);
1254 }
1255
1256 static HRESULT WINAPI
1257 IVideoWindow_fnHideCursor(IVideoWindow* iface,long lHide)
1258 {
1259         CFilterGraph_THIS(iface,vidwin);
1260         QUERYVIDEOWINDOW
1261
1262         TRACE("(%p)->()\n",This);
1263
1264         return IVideoWindow_HideCursor(pVidWin,lHide);
1265 }
1266
1267 static HRESULT WINAPI
1268 IVideoWindow_fnIsCursorHidden(IVideoWindow* iface,long* plHide)
1269 {
1270         CFilterGraph_THIS(iface,vidwin);
1271         QUERYVIDEOWINDOW
1272
1273         TRACE("(%p)->()\n",This);
1274
1275         return IVideoWindow_IsCursorHidden(pVidWin,plHide);
1276 }
1277
1278
1279
1280
1281 static ICOM_VTABLE(IVideoWindow) ivideowindow =
1282 {
1283         ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
1284         /* IUnknown fields */
1285         IVideoWindow_fnQueryInterface,
1286         IVideoWindow_fnAddRef,
1287         IVideoWindow_fnRelease,
1288         /* IDispatch fields */
1289         IVideoWindow_fnGetTypeInfoCount,
1290         IVideoWindow_fnGetTypeInfo,
1291         IVideoWindow_fnGetIDsOfNames,
1292         IVideoWindow_fnInvoke,
1293         /* IVideoWindow fields */
1294         IVideoWindow_fnput_Caption,
1295         IVideoWindow_fnget_Caption,
1296         IVideoWindow_fnput_WindowStyle,
1297         IVideoWindow_fnget_WindowStyle,
1298         IVideoWindow_fnput_WindowStyleEx,
1299         IVideoWindow_fnget_WindowStyleEx,
1300         IVideoWindow_fnput_AutoShow,
1301         IVideoWindow_fnget_AutoShow,
1302         IVideoWindow_fnput_WindowState,
1303         IVideoWindow_fnget_WindowState,
1304         IVideoWindow_fnput_BackgroundPalette,
1305         IVideoWindow_fnget_BackgroundPalette,
1306         IVideoWindow_fnput_Visible,
1307         IVideoWindow_fnget_Visible,
1308         IVideoWindow_fnput_Left,
1309         IVideoWindow_fnget_Left,
1310         IVideoWindow_fnput_Width,
1311         IVideoWindow_fnget_Width,
1312         IVideoWindow_fnput_Top,
1313         IVideoWindow_fnget_Top,
1314         IVideoWindow_fnput_Height,
1315         IVideoWindow_fnget_Height,
1316         IVideoWindow_fnput_Owner,
1317         IVideoWindow_fnget_Owner,
1318         IVideoWindow_fnput_MessageDrain,
1319         IVideoWindow_fnget_MessageDrain,
1320         IVideoWindow_fnget_BorderColor,
1321         IVideoWindow_fnput_BorderColor,
1322         IVideoWindow_fnget_FullScreenMode,
1323         IVideoWindow_fnput_FullScreenMode,
1324         IVideoWindow_fnSetWindowForeground,
1325         IVideoWindow_fnNotifyOwnerMessage,
1326         IVideoWindow_fnSetWindowPosition,
1327         IVideoWindow_fnGetWindowPosition,
1328         IVideoWindow_fnGetMinIdealImageSize,
1329         IVideoWindow_fnGetMaxIdealImageSize,
1330         IVideoWindow_fnGetRestorePosition,
1331         IVideoWindow_fnHideCursor,
1332         IVideoWindow_fnIsCursorHidden,
1333
1334 };
1335
1336
1337 HRESULT CFilterGraph_InitIVideoWindow( CFilterGraph* pfg )
1338 {
1339         TRACE("(%p)\n",pfg);
1340         ICOM_VTBL(&pfg->vidwin) = &ivideowindow;
1341
1342         return NOERROR;
1343 }
1344
1345 void CFilterGraph_UninitIVideoWindow( CFilterGraph* pfg )
1346 {
1347         TRACE("(%p)\n",pfg);
1348 }
1349
1350 #undef QUERYVIDEOWINDOW