Make the winehq.org domain the official one.
[wine.git] / dlls / quartz / filtergraph.c
blob4ea45e992560baddfd28e5aabf22227773374178
1 /* DirectShow FilterGraph object (QUARTZ.DLL)
3 * Copyright 2002 Lionel Ulmer
5 * This file contains the (internal) driver registration functions,
6 * driver enumeration APIs and DirectDraw creation functions.
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.
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.
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
23 #include "config.h"
24 #include <stdarg.h>
26 #include "windef.h"
27 #include "winbase.h"
28 #include "dshow.h"
29 #include "wine/debug.h"
30 #include "strmif.h"
31 #include "wine/unicode.h"
33 #include "quartz_private.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(quartz);
37 typedef struct _IFilterGraphImpl {
38 ICOM_VTABLE(IGraphBuilder) *IGraphBuilder_vtbl;
39 ICOM_VTABLE(IMediaControl) *IMediaControl_vtbl;
40 ICOM_VTABLE(IMediaSeeking) *IMediaSeeking_vtbl;
41 ICOM_VTABLE(IBasicAudio) *IBasicAudio_vtbl;
42 ICOM_VTABLE(IBasicVideo) *IBasicVideo_vtbl;
43 ICOM_VTABLE(IVideoWindow) *IVideoWindow_vtbl;
44 ICOM_VTABLE(IMediaEventEx) *IMediaEventEx_vtbl;
45 ICOM_VTABLE(IMediaFilter) *IMediaFilter_vtbl;
46 /* IAMGraphStreams */
47 /* IAMStats */
48 /* IBasicVideo2 */
49 /* IFilterChain */
50 /* IFilterGraph2 */
51 /* IFilterMapper2 */
52 /* IGraphConfig */
53 /* IGraphVersion */
54 /* IMediaEventSink */
55 /* IMediaPosition */
56 /* IQueueCommand */
57 /* IRegisterServiceProvider */
58 /* IResourceMananger */
59 /* IServiceProvider */
60 /* IVideoFrameStep */
62 ULONG ref;
63 IBaseFilter ** ppFiltersInGraph;
64 LPWSTR * pFilterNames;
65 int nFilters;
66 int filterCapacity;
67 } IFilterGraphImpl;
70 static HRESULT Filtergraph_QueryInterface(IFilterGraphImpl *This,
71 REFIID riid,
72 LPVOID *ppvObj) {
73 TRACE("(%p)->(%s (%p), %p)\n", This, debugstr_guid(riid), riid, ppvObj);
75 if (IsEqualGUID(&IID_IUnknown, riid) ||
76 IsEqualGUID(&IID_IGraphBuilder, riid)) {
77 *ppvObj = &(This->IGraphBuilder_vtbl);
78 TRACE(" returning IGraphBuilder interface (%p)\n", *ppvObj);
79 } else if (IsEqualGUID(&IID_IMediaControl, riid)) {
80 *ppvObj = &(This->IMediaControl_vtbl);
81 TRACE(" returning IMediaControl interface (%p)\n", *ppvObj);
82 } else if (IsEqualGUID(&IID_IMediaSeeking, riid)) {
83 *ppvObj = &(This->IMediaSeeking_vtbl);
84 TRACE(" returning IMediaSeeking interface (%p)\n", *ppvObj);
85 } else if (IsEqualGUID(&IID_IBasicAudio, riid)) {
86 *ppvObj = &(This->IBasicAudio_vtbl);
87 TRACE(" returning IBasicAudio interface (%p)\n", *ppvObj);
88 } else if (IsEqualGUID(&IID_IBasicVideo, riid)) {
89 *ppvObj = &(This->IBasicVideo_vtbl);
90 TRACE(" returning IBasicVideo interface (%p)\n", *ppvObj);
91 } else if (IsEqualGUID(&IID_IVideoWindow, riid)) {
92 *ppvObj = &(This->IVideoWindow_vtbl);
93 TRACE(" returning IVideoWindow interface (%p)\n", *ppvObj);
94 } else if (IsEqualGUID(&IID_IMediaEvent, riid) ||
95 IsEqualGUID(&IID_IMediaEventEx, riid)) {
96 *ppvObj = &(This->IMediaEventEx_vtbl);
97 TRACE(" returning IMediaEvent(Ex) interface (%p)\n", *ppvObj);
98 } else if (IsEqualGUID(&IID_IMediaFilter, riid) ||
99 IsEqualGUID(&IID_IPersist, riid)) {
100 *ppvObj = &(This->IMediaFilter_vtbl);
101 TRACE(" returning IMediaFilter interface (%p)\n", *ppvObj);
102 } else {
103 *ppvObj = NULL;
104 FIXME("unknown interface %s\n", debugstr_guid(riid));
105 return E_NOINTERFACE;
108 This->ref++;
109 return S_OK;
112 static ULONG Filtergraph_AddRef(IFilterGraphImpl *This) {
113 TRACE("(%p)->(): new ref = %ld\n", This, This->ref + 1);
115 return ++This->ref;
118 static ULONG Filtergraph_Release(IFilterGraphImpl *This) {
119 static ULONG ref;
121 TRACE("(%p)->(): new ref = %ld\n", This, This->ref - 1);
123 ref = --This->ref;
124 if (ref == 0) {
125 HeapFree(GetProcessHeap(), 0, This->ppFiltersInGraph);
126 HeapFree(GetProcessHeap(), 0, This->pFilterNames);
127 HeapFree(GetProcessHeap(), 0, This);
129 return ref;
133 /*** IUnknown methods ***/
134 static HRESULT WINAPI Graphbuilder_QueryInterface(IGraphBuilder *iface,
135 REFIID riid,
136 LPVOID*ppvObj) {
137 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
139 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
140 return Filtergraph_QueryInterface(This, riid, ppvObj);
143 static ULONG WINAPI Graphbuilder_AddRef(IGraphBuilder *iface) {
144 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
146 TRACE("(%p/%p)->() calling FilterGraph AddRef\n", This, iface);
148 return Filtergraph_AddRef(This);
151 static ULONG WINAPI Graphbuilder_Release(IGraphBuilder *iface) {
152 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
154 TRACE("(%p/%p)->() calling FilterGraph Release\n", This, iface);
156 return Filtergraph_Release(This);
159 /*** IFilterGraph methods ***/
160 static HRESULT WINAPI Graphbuilder_AddFilter(IGraphBuilder *iface,
161 IBaseFilter *pFilter,
162 LPCWSTR pName) {
163 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
164 int size;
165 HRESULT hr;
167 TRACE("(%p/%p)->(%p, %s (%p))\n", This, iface, pFilter, debugstr_w(pName), pName);
169 /* FIXME: generate name of filter if NULL */
171 if (This->nFilters + 1 > This->filterCapacity)
173 int newCapacity = 2*This->filterCapacity;
174 IBaseFilter ** ppNewFilters = CoTaskMemAlloc(newCapacity * sizeof(IBaseFilter*));
175 LPWSTR * pNewNames = CoTaskMemAlloc(newCapacity * sizeof(LPWSTR));
176 memcpy(ppNewFilters, This->ppFiltersInGraph, This->nFilters * sizeof(IBaseFilter*));
177 memcpy(pNewNames, This->pFilterNames, This->nFilters * sizeof(LPWSTR));
178 CoTaskMemFree(This->ppFiltersInGraph);
179 CoTaskMemFree(This->pFilterNames);
180 This->ppFiltersInGraph = ppNewFilters;
181 This->pFilterNames = pNewNames;
182 This->filterCapacity = newCapacity;
185 hr = IBaseFilter_JoinFilterGraph(pFilter, (IFilterGraph *)This, pName);
187 if (SUCCEEDED(hr))
189 size = (strlenW(pName) + 1) * sizeof(WCHAR);
190 IBaseFilter_AddRef(pFilter);
191 This->ppFiltersInGraph[This->nFilters] = pFilter;
192 This->pFilterNames[This->nFilters] = CoTaskMemAlloc(size);
193 memcpy(This->pFilterNames[This->nFilters], pName, size);
194 This->nFilters++;
197 return hr;
200 static HRESULT WINAPI Graphbuilder_RemoveFilter(IGraphBuilder *iface,
201 IBaseFilter *pFilter) {
202 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
203 int i;
204 HRESULT hr = E_FAIL;
206 TRACE("(%p/%p)->(%p)\n", This, iface, pFilter);
208 /* FIXME: check graph is stopped */
210 for (i = 0; i < This->nFilters; i++)
212 if (This->ppFiltersInGraph[i] == pFilter)
214 /* FIXME: disconnect pins */
215 hr = IBaseFilter_JoinFilterGraph(pFilter, NULL, This->pFilterNames[i]);
216 if (SUCCEEDED(hr))
218 IPin_Release(pFilter);
219 CoTaskMemFree(This->pFilterNames[i]);
220 memmove(This->ppFiltersInGraph+i, This->ppFiltersInGraph+i+1, sizeof(IBaseFilter*)*(This->nFilters - 1 - i));
221 memmove(This->pFilterNames+i, This->pFilterNames+i+1, sizeof(LPWSTR)*(This->nFilters - 1 - i));
222 This->nFilters--;
223 return S_OK;
225 break;
229 return hr; /* FIXME: check this error code */
232 static HRESULT WINAPI Graphbuilder_EnumFilter(IGraphBuilder *iface,
233 IEnumFilters **ppEnum) {
234 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
236 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppEnum);
238 return S_OK;
241 static HRESULT WINAPI Graphbuilder_FindFilterByName(IGraphBuilder *iface,
242 LPCWSTR pName,
243 IBaseFilter **ppFilter) {
244 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
245 int i;
247 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_w(pName), pName, ppFilter);
249 *ppFilter = NULL;
251 for (i = 0; i < This->nFilters; i++)
253 if (!strcmpW(pName, This->pFilterNames[i]))
255 *ppFilter = This->ppFiltersInGraph[i];
256 IBaseFilter_AddRef(*ppFilter);
257 return S_OK;
261 return E_FAIL; /* FIXME: check this error code */
264 static HRESULT WINAPI Graphbuilder_ConnectDirect(IGraphBuilder *iface,
265 IPin *ppinIn,
266 IPin *ppinOut,
267 const AM_MEDIA_TYPE *pmt) {
268 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
270 TRACE("(%p/%p)->(%p, %p, %p)\n", This, iface, ppinIn, ppinOut, pmt);
272 return IPin_Connect(ppinOut, ppinIn, pmt);
275 static HRESULT WINAPI Graphbuilder_Reconnect(IGraphBuilder *iface,
276 IPin *ppin) {
277 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
279 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppin);
281 return S_OK;
284 static HRESULT WINAPI Graphbuilder_Disconnect(IGraphBuilder *iface,
285 IPin *ppin) {
286 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
288 TRACE("(%p/%p)->(%p)\n", This, iface, ppin);
290 return IPin_Disconnect(ppin);
293 static HRESULT WINAPI Graphbuilder_SetDefaultSyncSource(IGraphBuilder *iface) {
294 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
296 TRACE("(%p/%p)->(): stub !!!\n", iface, This);
298 return S_OK;
301 /*** IGraphBuilder methods ***/
302 static HRESULT WINAPI Graphbuilder_Connect(IGraphBuilder *iface,
303 IPin *ppinOut,
304 IPin *ppinIn) {
305 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
307 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, ppinOut, ppinIn);
309 return S_OK;
312 static HRESULT WINAPI Graphbuilder_Render(IGraphBuilder *iface,
313 IPin *ppinOut) {
314 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
316 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppinOut);
318 return S_OK;
321 static HRESULT WINAPI Graphbuilder_RenderFile(IGraphBuilder *iface,
322 LPCWSTR lpcwstrFile,
323 LPCWSTR lpcwstrPlayList) {
324 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
326 TRACE("(%p/%p)->(%s (%p), %s (%p)): stub !!!\n", This, iface, debugstr_w(lpcwstrFile), lpcwstrFile, debugstr_w(lpcwstrPlayList), lpcwstrPlayList);
328 return S_OK;
331 static HRESULT WINAPI Graphbuilder_AddSourceFilter(IGraphBuilder *iface,
332 LPCWSTR lpcwstrFileName,
333 LPCWSTR lpcwstrFilterName,
334 IBaseFilter **ppFilter) {
335 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
337 TRACE("(%p/%p)->(%s (%p), %s (%p), %p): stub !!!\n", This, iface, debugstr_w(lpcwstrFileName), lpcwstrFileName, debugstr_w(lpcwstrFilterName), lpcwstrFilterName, ppFilter);
339 return S_OK;
342 static HRESULT WINAPI Graphbuilder_SetLogFile(IGraphBuilder *iface,
343 DWORD_PTR hFile) {
344 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
346 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) hFile);
348 return S_OK;
351 static HRESULT WINAPI Graphbuilder_Abort(IGraphBuilder *iface) {
352 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
354 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
356 return S_OK;
359 static HRESULT WINAPI Graphbuilder_ShouldOperationContinue(IGraphBuilder *iface) {
360 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
362 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
364 return S_OK;
368 static ICOM_VTABLE(IGraphBuilder) IGraphBuilder_VTable =
370 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
371 Graphbuilder_QueryInterface,
372 Graphbuilder_AddRef,
373 Graphbuilder_Release,
374 Graphbuilder_AddFilter,
375 Graphbuilder_RemoveFilter,
376 Graphbuilder_EnumFilter,
377 Graphbuilder_FindFilterByName,
378 Graphbuilder_ConnectDirect,
379 Graphbuilder_Reconnect,
380 Graphbuilder_Disconnect,
381 Graphbuilder_SetDefaultSyncSource,
382 Graphbuilder_Connect,
383 Graphbuilder_Render,
384 Graphbuilder_RenderFile,
385 Graphbuilder_AddSourceFilter,
386 Graphbuilder_SetLogFile,
387 Graphbuilder_Abort,
388 Graphbuilder_ShouldOperationContinue
391 /*** IUnknown methods ***/
392 static HRESULT WINAPI Mediacontrol_QueryInterface(IMediaControl *iface,
393 REFIID riid,
394 LPVOID*ppvObj) {
395 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
397 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
399 return Filtergraph_QueryInterface(This, riid, ppvObj);
402 static ULONG WINAPI Mediacontrol_AddRef(IMediaControl *iface) {
403 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
405 TRACE("(%p/%p)->()\n", This, iface);
407 return Filtergraph_AddRef(This);
410 static ULONG WINAPI Mediacontrol_Release(IMediaControl *iface) {
411 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
413 TRACE("(%p/%p)->()\n", This, iface);
415 return Filtergraph_Release(This);
419 /*** IDispatch methods ***/
420 static HRESULT WINAPI Mediacontrol_GetTypeInfoCount(IMediaControl *iface,
421 UINT*pctinfo) {
422 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
424 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
426 return S_OK;
429 static HRESULT WINAPI Mediacontrol_GetTypeInfo(IMediaControl *iface,
430 UINT iTInfo,
431 LCID lcid,
432 ITypeInfo**ppTInfo) {
433 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
435 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
437 return S_OK;
440 static HRESULT WINAPI Mediacontrol_GetIDsOfNames(IMediaControl *iface,
441 REFIID riid,
442 LPOLESTR*rgszNames,
443 UINT cNames,
444 LCID lcid,
445 DISPID*rgDispId) {
446 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
448 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
450 return S_OK;
453 static HRESULT WINAPI Mediacontrol_Invoke(IMediaControl *iface,
454 DISPID dispIdMember,
455 REFIID riid,
456 LCID lcid,
457 WORD wFlags,
458 DISPPARAMS*pDispParams,
459 VARIANT*pVarResult,
460 EXCEPINFO*pExepInfo,
461 UINT*puArgErr) {
462 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
464 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);
466 return S_OK;
469 /*** IMediaControl methods ***/
470 static HRESULT WINAPI Mediacontrol_Run(IMediaControl *iface) {
471 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
473 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
475 return S_OK;
478 static HRESULT WINAPI Mediacontrol_Pause(IMediaControl *iface) {
479 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
481 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
483 return S_OK;
486 static HRESULT WINAPI Mediacontrol_Stop(IMediaControl *iface) {
487 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
489 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
491 return S_OK;
494 static HRESULT WINAPI Mediacontrol_GetState(IMediaControl *iface,
495 LONG msTimeout,
496 OAFilterState *pfs) {
497 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
499 TRACE("(%p/%p)->(%ld, %p): stub !!!\n", This, iface, msTimeout, pfs);
501 return S_OK;
504 static HRESULT WINAPI Mediacontrol_RenderFile(IMediaControl *iface,
505 BSTR strFilename) {
506 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
508 TRACE("(%p/%p)->(%s (%p)): stub !!!\n", This, iface, debugstr_w(strFilename), strFilename);
510 return S_OK;
513 static HRESULT WINAPI Mediacontrol_AddSourceFilter(IMediaControl *iface,
514 BSTR strFilename,
515 IDispatch **ppUnk) {
516 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
518 TRACE("(%p/%p)->(%s (%p), %p): stub !!!\n", This, iface, debugstr_w(strFilename), strFilename, ppUnk);
520 return S_OK;
523 static HRESULT WINAPI Mediacontrol_get_FilterCollection(IMediaControl *iface,
524 IDispatch **ppUnk) {
525 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
527 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppUnk);
529 return S_OK;
532 static HRESULT WINAPI Mediacontrol_get_RegFilterCollection(IMediaControl *iface,
533 IDispatch **ppUnk) {
534 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
536 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppUnk);
538 return S_OK;
541 static HRESULT WINAPI Mediacontrol_StopWhenReady(IMediaControl *iface) {
542 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
544 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
546 return S_OK;
550 static ICOM_VTABLE(IMediaControl) IMediaControl_VTable =
552 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
553 Mediacontrol_QueryInterface,
554 Mediacontrol_AddRef,
555 Mediacontrol_Release,
556 Mediacontrol_GetTypeInfoCount,
557 Mediacontrol_GetTypeInfo,
558 Mediacontrol_GetIDsOfNames,
559 Mediacontrol_Invoke,
560 Mediacontrol_Run,
561 Mediacontrol_Pause,
562 Mediacontrol_Stop,
563 Mediacontrol_GetState,
564 Mediacontrol_RenderFile,
565 Mediacontrol_AddSourceFilter,
566 Mediacontrol_get_FilterCollection,
567 Mediacontrol_get_RegFilterCollection,
568 Mediacontrol_StopWhenReady
572 /*** IUnknown methods ***/
573 static HRESULT WINAPI Mediaseeking_QueryInterface(IMediaSeeking *iface,
574 REFIID riid,
575 LPVOID*ppvObj) {
576 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
578 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
580 return Filtergraph_QueryInterface(This, riid, ppvObj);
583 static ULONG WINAPI Mediaseeking_AddRef(IMediaSeeking *iface) {
584 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
586 TRACE("(%p/%p)->()\n", This, iface);
588 return Filtergraph_AddRef(This);
591 static ULONG WINAPI Mediaseeking_Release(IMediaSeeking *iface) {
592 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
594 TRACE("(%p/%p)->()\n", This, iface);
596 return Filtergraph_Release(This);
599 /*** IMediaSeeking methods ***/
600 static HRESULT WINAPI Mediaseeking_GetCapabilities(IMediaSeeking *iface,
601 DWORD *pCapabilities) {
602 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
604 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pCapabilities);
606 return S_OK;
609 static HRESULT WINAPI Mediaseeking_CheckCapabilities(IMediaSeeking *iface,
610 DWORD *pCapabilities) {
611 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
613 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pCapabilities);
615 return S_OK;
618 static HRESULT WINAPI Mediaseeking_IsFormatSupported(IMediaSeeking *iface,
619 const GUID *pFormat) {
620 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
622 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
624 return S_OK;
627 static HRESULT WINAPI Mediaseeking_QueryPreferredFormat(IMediaSeeking *iface,
628 GUID *pFormat) {
629 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
631 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
633 return S_OK;
636 static HRESULT WINAPI Mediaseeking_GetTimeFormat(IMediaSeeking *iface,
637 GUID *pFormat) {
638 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
640 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
642 return S_OK;
645 static HRESULT WINAPI Mediaseeking_IsUsingTimeFormat(IMediaSeeking *iface,
646 const GUID *pFormat) {
647 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
649 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
651 return S_OK;
654 static HRESULT WINAPI Mediaseeking_SetTimeFormat(IMediaSeeking *iface,
655 const GUID *pFormat) {
656 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
658 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
660 return S_OK;
663 static HRESULT WINAPI Mediaseeking_GetDuration(IMediaSeeking *iface,
664 LONGLONG *pDuration) {
665 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
667 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDuration);
669 return S_OK;
672 static HRESULT WINAPI Mediaseeking_GetStopPosition(IMediaSeeking *iface,
673 LONGLONG *pStop) {
674 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
676 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pStop);
678 return S_OK;
681 static HRESULT WINAPI Mediaseeking_GetCurrentPosition(IMediaSeeking *iface,
682 LONGLONG *pCurrent) {
683 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
685 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pCurrent);
687 return S_OK;
690 static HRESULT WINAPI Mediaseeking_ConvertTimeFormat(IMediaSeeking *iface,
691 LONGLONG *pTarget,
692 const GUID *pTargetFormat,
693 LONGLONG Source,
694 const GUID *pSourceFormat) {
695 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
697 TRACE("(%p/%p)->(%p, %p, %lld, %p): stub !!!\n", This, iface, pTarget, pTargetFormat, Source, pSourceFormat);
699 return S_OK;
702 static HRESULT WINAPI Mediaseeking_SetPositions(IMediaSeeking *iface,
703 LONGLONG *pCurrent,
704 DWORD dwCurrentFlags,
705 LONGLONG *pStop,
706 DWORD dwStopFlags) {
707 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
709 TRACE("(%p/%p)->(%p, %08lx, %p, %08lx): stub !!!\n", This, iface, pCurrent, dwCurrentFlags, pStop, dwStopFlags);
711 return S_OK;
714 static HRESULT WINAPI Mediaseeking_GetPositions(IMediaSeeking *iface,
715 LONGLONG *pCurrent,
716 LONGLONG *pStop) {
717 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
719 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pCurrent, pStop);
721 return S_OK;
724 static HRESULT WINAPI Mediaseeking_GetAvailable(IMediaSeeking *iface,
725 LONGLONG *pEarliest,
726 LONGLONG *pLatest) {
727 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
729 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pEarliest, pLatest);
731 return S_OK;
734 static HRESULT WINAPI Mediaseeking_SetRate(IMediaSeeking *iface,
735 double dRate) {
736 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
738 TRACE("(%p/%p)->(%f): stub !!!\n", This, iface, dRate);
740 return S_OK;
743 static HRESULT WINAPI Mediaseeking_GetRate(IMediaSeeking *iface,
744 double *pdRate) {
745 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
747 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pdRate);
749 return S_OK;
752 static HRESULT WINAPI Mediaseeking_GetPreroll(IMediaSeeking *iface,
753 LONGLONG *pllPreroll) {
754 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
756 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pllPreroll);
758 return S_OK;
762 static ICOM_VTABLE(IMediaSeeking) IMediaSeeking_VTable =
764 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
765 Mediaseeking_QueryInterface,
766 Mediaseeking_AddRef,
767 Mediaseeking_Release,
768 Mediaseeking_GetCapabilities,
769 Mediaseeking_CheckCapabilities,
770 Mediaseeking_IsFormatSupported,
771 Mediaseeking_QueryPreferredFormat,
772 Mediaseeking_GetTimeFormat,
773 Mediaseeking_IsUsingTimeFormat,
774 Mediaseeking_SetTimeFormat,
775 Mediaseeking_GetDuration,
776 Mediaseeking_GetStopPosition,
777 Mediaseeking_GetCurrentPosition,
778 Mediaseeking_ConvertTimeFormat,
779 Mediaseeking_SetPositions,
780 Mediaseeking_GetPositions,
781 Mediaseeking_GetAvailable,
782 Mediaseeking_SetRate,
783 Mediaseeking_GetRate,
784 Mediaseeking_GetPreroll
787 /*** IUnknown methods ***/
788 static HRESULT WINAPI Basicaudio_QueryInterface(IBasicAudio *iface,
789 REFIID riid,
790 LPVOID*ppvObj) {
791 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
793 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
795 return Filtergraph_QueryInterface(This, riid, ppvObj);
798 static ULONG WINAPI Basicaudio_AddRef(IBasicAudio *iface) {
799 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
801 TRACE("(%p/%p)->()\n", This, iface);
803 return Filtergraph_AddRef(This);
806 static ULONG WINAPI Basicaudio_Release(IBasicAudio *iface) {
807 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
809 TRACE("(%p/%p)->()\n", This, iface);
811 return Filtergraph_Release(This);
814 /*** IDispatch methods ***/
815 static HRESULT WINAPI Basicaudio_GetTypeInfoCount(IBasicAudio *iface,
816 UINT*pctinfo) {
817 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
819 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
821 return S_OK;
824 static HRESULT WINAPI Basicaudio_GetTypeInfo(IBasicAudio *iface,
825 UINT iTInfo,
826 LCID lcid,
827 ITypeInfo**ppTInfo) {
828 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
830 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
832 return S_OK;
835 static HRESULT WINAPI Basicaudio_GetIDsOfNames(IBasicAudio *iface,
836 REFIID riid,
837 LPOLESTR*rgszNames,
838 UINT cNames,
839 LCID lcid,
840 DISPID*rgDispId) {
841 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
843 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
845 return S_OK;
848 static HRESULT WINAPI Basicaudio_Invoke(IBasicAudio *iface,
849 DISPID dispIdMember,
850 REFIID riid,
851 LCID lcid,
852 WORD wFlags,
853 DISPPARAMS*pDispParams,
854 VARIANT*pVarResult,
855 EXCEPINFO*pExepInfo,
856 UINT*puArgErr) {
857 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
859 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);
861 return S_OK;
864 /*** IBasicAudio methods ***/
865 static HRESULT WINAPI Basicaudio_put_Volume(IBasicAudio *iface,
866 long lVolume) {
867 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
869 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lVolume);
871 return S_OK;
874 static HRESULT WINAPI Basicaudio_get_Volume(IBasicAudio *iface,
875 long *plVolume) {
876 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
878 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, plVolume);
880 return S_OK;
883 static HRESULT WINAPI Basicaudio_put_Balance(IBasicAudio *iface,
884 long lBalance) {
885 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
887 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lBalance);
889 return S_OK;
892 static HRESULT WINAPI Basicaudio_get_Balance(IBasicAudio *iface,
893 long *plBalance) {
894 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
896 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, plBalance);
898 return S_OK;
901 static ICOM_VTABLE(IBasicAudio) IBasicAudio_VTable =
903 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
904 Basicaudio_QueryInterface,
905 Basicaudio_AddRef,
906 Basicaudio_Release,
907 Basicaudio_GetTypeInfoCount,
908 Basicaudio_GetTypeInfo,
909 Basicaudio_GetIDsOfNames,
910 Basicaudio_Invoke,
911 Basicaudio_put_Volume,
912 Basicaudio_get_Volume,
913 Basicaudio_put_Balance,
914 Basicaudio_get_Balance
917 /*** IUnknown methods ***/
918 static HRESULT WINAPI Basicvideo_QueryInterface(IBasicVideo *iface,
919 REFIID riid,
920 LPVOID*ppvObj) {
921 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
923 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
925 return Filtergraph_QueryInterface(This, riid, ppvObj);
928 static ULONG WINAPI Basicvideo_AddRef(IBasicVideo *iface) {
929 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
931 TRACE("(%p/%p)->()\n", This, iface);
933 return Filtergraph_AddRef(This);
936 static ULONG WINAPI Basicvideo_Release(IBasicVideo *iface) {
937 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
939 TRACE("(%p/%p)->()\n", This, iface);
941 return Filtergraph_Release(This);
944 /*** IDispatch methods ***/
945 static HRESULT WINAPI Basicvideo_GetTypeInfoCount(IBasicVideo *iface,
946 UINT*pctinfo) {
947 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
949 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
951 return S_OK;
954 static HRESULT WINAPI Basicvideo_GetTypeInfo(IBasicVideo *iface,
955 UINT iTInfo,
956 LCID lcid,
957 ITypeInfo**ppTInfo) {
958 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
960 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
962 return S_OK;
965 static HRESULT WINAPI Basicvideo_GetIDsOfNames(IBasicVideo *iface,
966 REFIID riid,
967 LPOLESTR*rgszNames,
968 UINT cNames,
969 LCID lcid,
970 DISPID*rgDispId) {
971 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
973 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
975 return S_OK;
978 static HRESULT WINAPI Basicvideo_Invoke(IBasicVideo *iface,
979 DISPID dispIdMember,
980 REFIID riid,
981 LCID lcid,
982 WORD wFlags,
983 DISPPARAMS*pDispParams,
984 VARIANT*pVarResult,
985 EXCEPINFO*pExepInfo,
986 UINT*puArgErr) {
987 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
989 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);
991 return S_OK;
994 /*** IBasicVideo methods ***/
995 static HRESULT WINAPI Basicvideo_get_AvgTimePerFrame(IBasicVideo *iface,
996 REFTIME *pAvgTimePerFrame) {
997 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
999 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pAvgTimePerFrame);
1001 return S_OK;
1004 static HRESULT WINAPI Basicvideo_get_BitRate(IBasicVideo *iface,
1005 long *pBitRate) {
1006 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1008 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBitRate);
1010 return S_OK;
1013 static HRESULT WINAPI Basicvideo_get_BitErrorRate(IBasicVideo *iface,
1014 long *pBitErrorRate) {
1015 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1017 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBitErrorRate);
1019 return S_OK;
1022 static HRESULT WINAPI Basicvideo_get_VideoWidth(IBasicVideo *iface,
1023 long *pVideoWidth) {
1024 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1026 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVideoWidth);
1028 return S_OK;
1031 static HRESULT WINAPI Basicvideo_get_VideoHeight(IBasicVideo *iface,
1032 long *pVideoHeight) {
1033 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1035 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVideoHeight);
1037 return S_OK;
1040 static HRESULT WINAPI Basicvideo_put_SourceLeft(IBasicVideo *iface,
1041 long SourceLeft) {
1042 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1044 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceLeft);
1046 return S_OK;
1049 static HRESULT WINAPI Basicvideo_get_SourceLeft(IBasicVideo *iface,
1050 long *pSourceLeft) {
1051 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1053 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceLeft);
1055 return S_OK;
1058 static HRESULT WINAPI Basicvideo_put_SourceWidth(IBasicVideo *iface,
1059 long SourceWidth) {
1060 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1062 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceWidth);
1064 return S_OK;
1067 static HRESULT WINAPI Basicvideo_get_SourceWidth(IBasicVideo *iface,
1068 long *pSourceWidth) {
1069 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1071 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceWidth);
1073 return S_OK;
1076 static HRESULT WINAPI Basicvideo_put_SourceTop(IBasicVideo *iface,
1077 long SourceTop) {
1078 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1080 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceTop);
1082 return S_OK;
1085 static HRESULT WINAPI Basicvideo_get_SourceTop(IBasicVideo *iface,
1086 long *pSourceTop) {
1087 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1089 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceTop);
1091 return S_OK;
1094 static HRESULT WINAPI Basicvideo_put_SourceHeight(IBasicVideo *iface,
1095 long SourceHeight) {
1096 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1098 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceHeight);
1100 return S_OK;
1103 static HRESULT WINAPI Basicvideo_get_SourceHeight(IBasicVideo *iface,
1104 long *pSourceHeight) {
1105 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1107 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceHeight);
1109 return S_OK;
1112 static HRESULT WINAPI Basicvideo_put_DestinationLeft(IBasicVideo *iface,
1113 long DestinationLeft) {
1114 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1116 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationLeft);
1118 return S_OK;
1121 static HRESULT WINAPI Basicvideo_get_DestinationLeft(IBasicVideo *iface,
1122 long *pDestinationLeft) {
1123 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1125 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationLeft);
1127 return S_OK;
1130 static HRESULT WINAPI Basicvideo_put_DestinationWidth(IBasicVideo *iface,
1131 long DestinationWidth) {
1132 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1134 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationWidth);
1136 return S_OK;
1139 static HRESULT WINAPI Basicvideo_get_DestinationWidth(IBasicVideo *iface,
1140 long *pDestinationWidth) {
1141 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1143 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationWidth);
1145 return S_OK;
1148 static HRESULT WINAPI Basicvideo_put_DestinationTop(IBasicVideo *iface,
1149 long DestinationTop) {
1150 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1152 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationTop);
1154 return S_OK;
1157 static HRESULT WINAPI Basicvideo_get_DestinationTop(IBasicVideo *iface,
1158 long *pDestinationTop) {
1159 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1161 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationTop);
1163 return S_OK;
1166 static HRESULT WINAPI Basicvideo_put_DestinationHeight(IBasicVideo *iface,
1167 long DestinationHeight) {
1168 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1170 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationHeight);
1172 return S_OK;
1175 static HRESULT WINAPI Basicvideo_get_DestinationHeight(IBasicVideo *iface,
1176 long *pDestinationHeight) {
1177 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1179 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationHeight);
1181 return S_OK;
1184 static HRESULT WINAPI Basicvideo_SetSourcePosition(IBasicVideo *iface,
1185 long Left,
1186 long Top,
1187 long Width,
1188 long Height) {
1189 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1191 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
1193 return S_OK;
1196 static HRESULT WINAPI Basicvideo_GetSourcePosition(IBasicVideo *iface,
1197 long *pLeft,
1198 long *pTop,
1199 long *pWidth,
1200 long *pHeight) {
1201 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1203 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1205 return S_OK;
1208 static HRESULT WINAPI Basicvideo_SetDefaultSourcePosition(IBasicVideo *iface) {
1209 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1211 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1213 return S_OK;
1216 static HRESULT WINAPI Basicvideo_SetDestinationPosition(IBasicVideo *iface,
1217 long Left,
1218 long Top,
1219 long Width,
1220 long Height) {
1221 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1223 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
1225 return S_OK;
1228 static HRESULT WINAPI Basicvideo_GetDestinationPosition(IBasicVideo *iface,
1229 long *pLeft,
1230 long *pTop,
1231 long *pWidth,
1232 long *pHeight) {
1233 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1235 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1237 return S_OK;
1240 static HRESULT WINAPI Basicvideo_SetDefaultDestinationPosition(IBasicVideo *iface) {
1241 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1243 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1245 return S_OK;
1248 static HRESULT WINAPI Basicvideo_GetVideoSize(IBasicVideo *iface,
1249 long *pWidth,
1250 long *pHeight) {
1251 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1253 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1255 return S_OK;
1258 static HRESULT WINAPI Basicvideo_GetVideoPaletteEntries(IBasicVideo *iface,
1259 long StartIndex,
1260 long Entries,
1261 long *pRetrieved,
1262 long *pPalette) {
1263 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1265 TRACE("(%p/%p)->(%ld, %ld, %p, %p): stub !!!\n", This, iface, StartIndex, Entries, pRetrieved, pPalette);
1267 return S_OK;
1270 static HRESULT WINAPI Basicvideo_GetCurrentImage(IBasicVideo *iface,
1271 long *pBufferSize,
1272 long *pDIBImage) {
1273 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1275 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pBufferSize, pDIBImage);
1277 return S_OK;
1280 static HRESULT WINAPI Basicvideo_IsUsingDefaultSource(IBasicVideo *iface) {
1281 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1283 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1285 return S_OK;
1288 static HRESULT WINAPI Basicvideo_IsUsingDefaultDestination(IBasicVideo *iface) {
1289 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1291 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1293 return S_OK;
1297 static ICOM_VTABLE(IBasicVideo) IBasicVideo_VTable =
1299 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
1300 Basicvideo_QueryInterface,
1301 Basicvideo_AddRef,
1302 Basicvideo_Release,
1303 Basicvideo_GetTypeInfoCount,
1304 Basicvideo_GetTypeInfo,
1305 Basicvideo_GetIDsOfNames,
1306 Basicvideo_Invoke,
1307 Basicvideo_get_AvgTimePerFrame,
1308 Basicvideo_get_BitRate,
1309 Basicvideo_get_BitErrorRate,
1310 Basicvideo_get_VideoWidth,
1311 Basicvideo_get_VideoHeight,
1312 Basicvideo_put_SourceLeft,
1313 Basicvideo_get_SourceLeft,
1314 Basicvideo_put_SourceWidth,
1315 Basicvideo_get_SourceWidth,
1316 Basicvideo_put_SourceTop,
1317 Basicvideo_get_SourceTop,
1318 Basicvideo_put_SourceHeight,
1319 Basicvideo_get_SourceHeight,
1320 Basicvideo_put_DestinationLeft,
1321 Basicvideo_get_DestinationLeft,
1322 Basicvideo_put_DestinationWidth,
1323 Basicvideo_get_DestinationWidth,
1324 Basicvideo_put_DestinationTop,
1325 Basicvideo_get_DestinationTop,
1326 Basicvideo_put_DestinationHeight,
1327 Basicvideo_get_DestinationHeight,
1328 Basicvideo_SetSourcePosition,
1329 Basicvideo_GetSourcePosition,
1330 Basicvideo_SetDefaultSourcePosition,
1331 Basicvideo_SetDestinationPosition,
1332 Basicvideo_GetDestinationPosition,
1333 Basicvideo_SetDefaultDestinationPosition,
1334 Basicvideo_GetVideoSize,
1335 Basicvideo_GetVideoPaletteEntries,
1336 Basicvideo_GetCurrentImage,
1337 Basicvideo_IsUsingDefaultSource,
1338 Basicvideo_IsUsingDefaultDestination
1342 /*** IUnknown methods ***/
1343 static HRESULT WINAPI Videowindow_QueryInterface(IVideoWindow *iface,
1344 REFIID riid,
1345 LPVOID*ppvObj) {
1346 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1348 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
1350 return Filtergraph_QueryInterface(This, riid, ppvObj);
1353 static ULONG WINAPI Videowindow_AddRef(IVideoWindow *iface) {
1354 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1356 TRACE("(%p/%p)->()\n", This, iface);
1358 return Filtergraph_AddRef(This);
1361 static ULONG WINAPI Videowindow_Release(IVideoWindow *iface) {
1362 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1364 TRACE("(%p/%p)->()\n", This, iface);
1366 return Filtergraph_Release(This);
1369 /*** IDispatch methods ***/
1370 static HRESULT WINAPI Videowindow_GetTypeInfoCount(IVideoWindow *iface,
1371 UINT*pctinfo) {
1372 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1374 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
1376 return S_OK;
1379 static HRESULT WINAPI Videowindow_GetTypeInfo(IVideoWindow *iface,
1380 UINT iTInfo,
1381 LCID lcid,
1382 ITypeInfo**ppTInfo) {
1383 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1385 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
1387 return S_OK;
1390 static HRESULT WINAPI Videowindow_GetIDsOfNames(IVideoWindow *iface,
1391 REFIID riid,
1392 LPOLESTR*rgszNames,
1393 UINT cNames,
1394 LCID lcid,
1395 DISPID*rgDispId) {
1396 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1398 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
1400 return S_OK;
1403 static HRESULT WINAPI Videowindow_Invoke(IVideoWindow *iface,
1404 DISPID dispIdMember,
1405 REFIID riid,
1406 LCID lcid,
1407 WORD wFlags,
1408 DISPPARAMS*pDispParams,
1409 VARIANT*pVarResult,
1410 EXCEPINFO*pExepInfo,
1411 UINT*puArgErr) {
1412 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1414 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);
1416 return S_OK;
1419 /*** IVideoWindow methods ***/
1420 static HRESULT WINAPI Videowindow_put_Caption(IVideoWindow *iface,
1421 BSTR strCaption) {
1422 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1424 TRACE("(%p/%p)->(%s (%p)): stub !!!\n", This, iface, debugstr_w(strCaption), strCaption);
1426 return S_OK;
1429 static HRESULT WINAPI Videowindow_get_Caption(IVideoWindow *iface,
1430 BSTR *strCaption) {
1431 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1433 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, strCaption);
1435 return S_OK;
1438 static HRESULT WINAPI Videowindow_put_WindowStyle(IVideoWindow *iface,
1439 long WindowStyle) {
1440 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1442 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowStyle);
1444 return S_OK;
1447 static HRESULT WINAPI Videowindow_get_WindowStyle(IVideoWindow *iface,
1448 long *WindowStyle) {
1449 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1451 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowStyle);
1453 return S_OK;
1456 static HRESULT WINAPI Videowindow_put_WindowStyleEx(IVideoWindow *iface,
1457 long WindowStyleEx) {
1458 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1460 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowStyleEx);
1462 return S_OK;
1465 static HRESULT WINAPI Videowindow_get_WindowStyleEx(IVideoWindow *iface,
1466 long *WindowStyleEx) {
1467 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1469 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowStyleEx);
1471 return S_OK;
1474 static HRESULT WINAPI Videowindow_put_AutoShow(IVideoWindow *iface,
1475 long AutoShow) {
1476 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1478 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, AutoShow);
1480 return S_OK;
1483 static HRESULT WINAPI Videowindow_get_AutoShow(IVideoWindow *iface,
1484 long *AutoShow) {
1485 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1487 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, AutoShow);
1489 return S_OK;
1492 static HRESULT WINAPI Videowindow_put_WindowState(IVideoWindow *iface,
1493 long WindowState) {
1494 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1496 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowState);
1498 return S_OK;
1501 static HRESULT WINAPI Videowindow_get_WindowState(IVideoWindow *iface,
1502 long *WindowState) {
1503 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1505 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowState);
1507 return S_OK;
1510 static HRESULT WINAPI Videowindow_put_BackgroundPalette(IVideoWindow *iface,
1511 long BackgroundPalette) {
1512 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1514 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, BackgroundPalette);
1516 return S_OK;
1519 static HRESULT WINAPI Videowindow_get_BackgroundPalette(IVideoWindow *iface,
1520 long *pBackgroundPalette) {
1521 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1523 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBackgroundPalette);
1525 return S_OK;
1528 static HRESULT WINAPI Videowindow_put_Visible(IVideoWindow *iface,
1529 long Visible) {
1530 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1532 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Visible);
1534 return S_OK;
1537 static HRESULT WINAPI Videowindow_get_Visible(IVideoWindow *iface,
1538 long *pVisible) {
1539 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1541 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVisible);
1543 return S_OK;
1546 static HRESULT WINAPI Videowindow_put_Left(IVideoWindow *iface,
1547 long Left) {
1548 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1550 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Left);
1552 return S_OK;
1555 static HRESULT WINAPI Videowindow_get_Left(IVideoWindow *iface,
1556 long *pLeft) {
1557 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1559 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pLeft);
1561 return S_OK;
1564 static HRESULT WINAPI Videowindow_put_Width(IVideoWindow *iface,
1565 long Width) {
1566 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1568 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Width);
1570 return S_OK;
1573 static HRESULT WINAPI Videowindow_get_Width(IVideoWindow *iface,
1574 long *pWidth) {
1575 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1577 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pWidth);
1579 return S_OK;
1582 static HRESULT WINAPI Videowindow_put_Top(IVideoWindow *iface,
1583 long Top) {
1584 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1586 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Top);
1588 return S_OK;
1591 static HRESULT WINAPI Videowindow_get_Top(IVideoWindow *iface,
1592 long *pTop) {
1593 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1595 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pTop);
1597 return S_OK;
1600 static HRESULT WINAPI Videowindow_put_Height(IVideoWindow *iface,
1601 long Height) {
1602 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1604 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Height);
1606 return S_OK;
1609 static HRESULT WINAPI Videowindow_get_Height(IVideoWindow *iface,
1610 long *pHeight) {
1611 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1613 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pHeight);
1615 return S_OK;
1618 static HRESULT WINAPI Videowindow_put_Owner(IVideoWindow *iface,
1619 OAHWND Owner) {
1620 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1622 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Owner);
1624 return S_OK;
1627 static HRESULT WINAPI Videowindow_get_Owner(IVideoWindow *iface,
1628 OAHWND *Owner) {
1629 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1631 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Owner);
1633 return S_OK;
1636 static HRESULT WINAPI Videowindow_put_MessageDrain(IVideoWindow *iface,
1637 OAHWND Drain) {
1638 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1640 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Drain);
1642 return S_OK;
1645 static HRESULT WINAPI Videowindow_get_MessageDrain(IVideoWindow *iface,
1646 OAHWND *Drain) {
1647 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1649 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, Drain);
1651 return S_OK;
1654 static HRESULT WINAPI Videowindow_get_BorderColor(IVideoWindow *iface,
1655 long *Color) {
1656 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1658 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, Color);
1660 return S_OK;
1663 static HRESULT WINAPI Videowindow_put_BorderColor(IVideoWindow *iface,
1664 long Color) {
1665 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1667 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Color);
1669 return S_OK;
1672 static HRESULT WINAPI Videowindow_get_FullScreenMode(IVideoWindow *iface,
1673 long *FullScreenMode) {
1674 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1676 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, FullScreenMode);
1678 return S_OK;
1681 static HRESULT WINAPI Videowindow_put_FullScreenMode(IVideoWindow *iface,
1682 long FullScreenMode) {
1683 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1685 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, FullScreenMode);
1687 return S_OK;
1690 static HRESULT WINAPI Videowindow_SetWindowForeground(IVideoWindow *iface,
1691 long Focus) {
1692 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1694 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Focus);
1696 return S_OK;
1699 static HRESULT WINAPI Videowindow_NotifyOwnerMessage(IVideoWindow *iface,
1700 OAHWND hwnd,
1701 long uMsg,
1702 LONG_PTR wParam,
1703 LONG_PTR lParam) {
1704 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1706 TRACE("(%p/%p)->(%08lx, %ld, %08lx, %08lx): stub !!!\n", This, iface, (DWORD) hwnd, uMsg, wParam, lParam);
1708 return S_OK;
1711 static HRESULT WINAPI Videowindow_SetWindowPosition(IVideoWindow *iface,
1712 long Left,
1713 long Top,
1714 long Width,
1715 long Height) {
1716 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1718 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
1720 return S_OK;
1723 static HRESULT WINAPI Videowindow_GetWindowPosition(IVideoWindow *iface,
1724 long *pLeft,
1725 long *pTop,
1726 long *pWidth,
1727 long *pHeight) {
1728 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1730 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1732 return S_OK;
1735 static HRESULT WINAPI Videowindow_GetMinIdealImageSize(IVideoWindow *iface,
1736 long *pWidth,
1737 long *pHeight) {
1738 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1740 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1742 return S_OK;
1745 static HRESULT WINAPI Videowindow_GetMaxIdealImageSize(IVideoWindow *iface,
1746 long *pWidth,
1747 long *pHeight) {
1748 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1750 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1752 return S_OK;
1755 static HRESULT WINAPI Videowindow_GetRestorePosition(IVideoWindow *iface,
1756 long *pLeft,
1757 long *pTop,
1758 long *pWidth,
1759 long *pHeight) {
1760 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1762 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1764 return S_OK;
1767 static HRESULT WINAPI Videowindow_HideCursor(IVideoWindow *iface,
1768 long HideCursor) {
1769 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1771 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, HideCursor);
1773 return S_OK;
1776 static HRESULT WINAPI Videowindow_IsCursorHidden(IVideoWindow *iface,
1777 long *CursorHidden) {
1778 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1780 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, CursorHidden);
1782 return S_OK;
1786 static ICOM_VTABLE(IVideoWindow) IVideoWindow_VTable =
1788 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
1789 Videowindow_QueryInterface,
1790 Videowindow_AddRef,
1791 Videowindow_Release,
1792 Videowindow_GetTypeInfoCount,
1793 Videowindow_GetTypeInfo,
1794 Videowindow_GetIDsOfNames,
1795 Videowindow_Invoke,
1796 Videowindow_put_Caption,
1797 Videowindow_get_Caption,
1798 Videowindow_put_WindowStyle,
1799 Videowindow_get_WindowStyle,
1800 Videowindow_put_WindowStyleEx,
1801 Videowindow_get_WindowStyleEx,
1802 Videowindow_put_AutoShow,
1803 Videowindow_get_AutoShow,
1804 Videowindow_put_WindowState,
1805 Videowindow_get_WindowState,
1806 Videowindow_put_BackgroundPalette,
1807 Videowindow_get_BackgroundPalette,
1808 Videowindow_put_Visible,
1809 Videowindow_get_Visible,
1810 Videowindow_put_Left,
1811 Videowindow_get_Left,
1812 Videowindow_put_Width,
1813 Videowindow_get_Width,
1814 Videowindow_put_Top,
1815 Videowindow_get_Top,
1816 Videowindow_put_Height,
1817 Videowindow_get_Height,
1818 Videowindow_put_Owner,
1819 Videowindow_get_Owner,
1820 Videowindow_put_MessageDrain,
1821 Videowindow_get_MessageDrain,
1822 Videowindow_get_BorderColor,
1823 Videowindow_put_BorderColor,
1824 Videowindow_get_FullScreenMode,
1825 Videowindow_put_FullScreenMode,
1826 Videowindow_SetWindowForeground,
1827 Videowindow_NotifyOwnerMessage,
1828 Videowindow_SetWindowPosition,
1829 Videowindow_GetWindowPosition,
1830 Videowindow_GetMinIdealImageSize,
1831 Videowindow_GetMaxIdealImageSize,
1832 Videowindow_GetRestorePosition,
1833 Videowindow_HideCursor,
1834 Videowindow_IsCursorHidden
1838 /*** IUnknown methods ***/
1839 static HRESULT WINAPI Mediaevent_QueryInterface(IMediaEventEx *iface,
1840 REFIID riid,
1841 LPVOID*ppvObj) {
1842 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1844 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
1846 return Filtergraph_QueryInterface(This, riid, ppvObj);
1849 static ULONG WINAPI Mediaevent_AddRef(IMediaEventEx *iface) {
1850 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1852 TRACE("(%p/%p)->()\n", This, iface);
1854 return Filtergraph_AddRef(This);
1857 static ULONG WINAPI Mediaevent_Release(IMediaEventEx *iface) {
1858 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1860 TRACE("(%p/%p)->()\n", This, iface);
1862 return Filtergraph_Release(This);
1865 /*** IDispatch methods ***/
1866 static HRESULT WINAPI Mediaevent_GetTypeInfoCount(IMediaEventEx *iface,
1867 UINT*pctinfo) {
1868 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1870 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
1872 return S_OK;
1875 static HRESULT WINAPI Mediaevent_GetTypeInfo(IMediaEventEx *iface,
1876 UINT iTInfo,
1877 LCID lcid,
1878 ITypeInfo**ppTInfo) {
1879 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1881 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
1883 return S_OK;
1886 static HRESULT WINAPI Mediaevent_GetIDsOfNames(IMediaEventEx *iface,
1887 REFIID riid,
1888 LPOLESTR*rgszNames,
1889 UINT cNames,
1890 LCID lcid,
1891 DISPID*rgDispId) {
1892 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1894 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
1896 return S_OK;
1899 static HRESULT WINAPI Mediaevent_Invoke(IMediaEventEx *iface,
1900 DISPID dispIdMember,
1901 REFIID riid,
1902 LCID lcid,
1903 WORD wFlags,
1904 DISPPARAMS*pDispParams,
1905 VARIANT*pVarResult,
1906 EXCEPINFO*pExepInfo,
1907 UINT*puArgErr) {
1908 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1910 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);
1912 return S_OK;
1915 /*** IMediaEvent methods ***/
1916 static HRESULT WINAPI Mediaevent_GetEventHandle(IMediaEventEx *iface,
1917 OAEVENT *hEvent) {
1918 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1920 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, hEvent);
1922 return S_OK;
1925 static HRESULT WINAPI Mediaevent_GetEvent(IMediaEventEx *iface,
1926 long *lEventCode,
1927 LONG_PTR *lParam1,
1928 LONG_PTR *lParam2,
1929 long msTimeout) {
1930 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1932 TRACE("(%p/%p)->(%p, %p, %p, %ld): stub !!!\n", This, iface, lEventCode, lParam1, lParam2, msTimeout);
1934 return S_OK;
1937 static HRESULT WINAPI Mediaevent_WaitForCompletion(IMediaEventEx *iface,
1938 long msTimeout,
1939 long *pEvCode) {
1940 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1942 TRACE("(%p/%p)->(%ld, %p): stub !!!\n", This, iface, msTimeout, pEvCode);
1944 return S_OK;
1947 static HRESULT WINAPI Mediaevent_CancelDefaultHandling(IMediaEventEx *iface,
1948 long lEvCode) {
1949 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1951 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lEvCode);
1953 return S_OK;
1956 static HRESULT WINAPI Mediaevent_RestoreDefaultHandling(IMediaEventEx *iface,
1957 long lEvCode) {
1958 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1960 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lEvCode);
1962 return S_OK;
1965 static HRESULT WINAPI Mediaevent_FreeEventParams(IMediaEventEx *iface,
1966 long lEvCode,
1967 LONG_PTR lParam1,
1968 LONG_PTR lParam2) {
1969 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1971 TRACE("(%p/%p)->(%ld, %08lx, %08lx): stub !!!\n", This, iface, lEvCode, lParam1, lParam2);
1973 return S_OK;
1976 /*** IMediaEventEx methods ***/
1977 static HRESULT WINAPI Mediaevent_SetNotifyWindow(IMediaEventEx *iface,
1978 OAHWND hwnd,
1979 long lMsg,
1980 LONG_PTR lInstanceData) {
1981 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1983 TRACE("(%p/%p)->(%08lx, %ld, %08lx): stub !!!\n", This, iface, (DWORD) hwnd, lMsg, lInstanceData);
1985 return S_OK;
1988 static HRESULT WINAPI Mediaevent_SetNotifyFlags(IMediaEventEx *iface,
1989 long lNoNotifyFlags) {
1990 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1992 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lNoNotifyFlags);
1994 return S_OK;
1997 static HRESULT WINAPI Mediaevent_GetNotifyFlags(IMediaEventEx *iface,
1998 long *lplNoNotifyFlags) {
1999 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
2001 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, lplNoNotifyFlags);
2003 return S_OK;
2007 static ICOM_VTABLE(IMediaEventEx) IMediaEventEx_VTable =
2009 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
2010 Mediaevent_QueryInterface,
2011 Mediaevent_AddRef,
2012 Mediaevent_Release,
2013 Mediaevent_GetTypeInfoCount,
2014 Mediaevent_GetTypeInfo,
2015 Mediaevent_GetIDsOfNames,
2016 Mediaevent_Invoke,
2017 Mediaevent_GetEventHandle,
2018 Mediaevent_GetEvent,
2019 Mediaevent_WaitForCompletion,
2020 Mediaevent_CancelDefaultHandling,
2021 Mediaevent_RestoreDefaultHandling,
2022 Mediaevent_FreeEventParams,
2023 Mediaevent_SetNotifyWindow,
2024 Mediaevent_SetNotifyFlags,
2025 Mediaevent_GetNotifyFlags
2029 static HRESULT WINAPI MediaFilter_QueryInterface(IMediaFilter *iface, REFIID riid, LPVOID *ppv)
2031 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
2033 return Filtergraph_QueryInterface(This, riid, ppv);
2036 static ULONG WINAPI MediaFilter_AddRef(IMediaFilter *iface)
2038 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
2040 return Filtergraph_AddRef(This);
2043 static ULONG WINAPI MediaFilter_Release(IMediaFilter *iface)
2045 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
2047 return Filtergraph_Release(This);
2050 static HRESULT WINAPI MediaFilter_GetClassID(IMediaFilter *iface, CLSID * pClassID)
2052 FIXME("(%p): stub\n", pClassID);
2054 return E_NOTIMPL;
2057 static HRESULT WINAPI MediaFilter_Stop(IMediaFilter *iface)
2059 FIXME("(): stub\n");
2061 return E_NOTIMPL;
2064 static HRESULT WINAPI MediaFilter_Pause(IMediaFilter *iface)
2066 FIXME("(): stub\n");
2068 return E_NOTIMPL;
2071 static HRESULT WINAPI MediaFilter_Run(IMediaFilter *iface, REFERENCE_TIME tStart)
2073 FIXME("(%lld): stub\n", tStart);
2075 return E_NOTIMPL;
2078 static HRESULT WINAPI MediaFilter_GetState(IMediaFilter *iface, DWORD dwMsTimeout, FILTER_STATE * pState)
2080 FIXME("(%ld, %p): stub\n", dwMsTimeout, pState);
2082 return E_NOTIMPL;
2085 static HRESULT WINAPI MediaFilter_SetSyncSource(IMediaFilter *iface, IReferenceClock *pClock)
2087 FIXME("(%p): stub\n", pClock);
2089 return E_NOTIMPL;
2092 static HRESULT WINAPI MediaFilter_GetSyncSource(IMediaFilter *iface, IReferenceClock **ppClock)
2094 FIXME("(%p): stub\n", ppClock);
2096 return E_NOTIMPL;
2099 static ICOM_VTABLE(IMediaFilter) IMediaFilter_VTable =
2101 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
2102 MediaFilter_QueryInterface,
2103 MediaFilter_AddRef,
2104 MediaFilter_Release,
2105 MediaFilter_GetClassID,
2106 MediaFilter_Stop,
2107 MediaFilter_Pause,
2108 MediaFilter_Run,
2109 MediaFilter_GetState,
2110 MediaFilter_SetSyncSource,
2111 MediaFilter_GetSyncSource
2114 /* This is the only function that actually creates a FilterGraph class... */
2115 HRESULT FILTERGRAPH_create(IUnknown *pUnkOuter, LPVOID *ppObj) {
2116 IFilterGraphImpl *fimpl;
2118 TRACE("(%p,%p)\n", pUnkOuter, ppObj);
2120 fimpl = (IFilterGraphImpl *) HeapAlloc(GetProcessHeap(), 0, sizeof(*fimpl));
2121 fimpl->IGraphBuilder_vtbl = &IGraphBuilder_VTable;
2122 fimpl->IMediaControl_vtbl = &IMediaControl_VTable;
2123 fimpl->IMediaSeeking_vtbl = &IMediaSeeking_VTable;
2124 fimpl->IBasicAudio_vtbl = &IBasicAudio_VTable;
2125 fimpl->IBasicVideo_vtbl = &IBasicVideo_VTable;
2126 fimpl->IVideoWindow_vtbl = &IVideoWindow_VTable;
2127 fimpl->IMediaEventEx_vtbl = &IMediaEventEx_VTable;
2128 fimpl->IMediaFilter_vtbl = &IMediaFilter_VTable;
2129 fimpl->ref = 1;
2130 fimpl->ppFiltersInGraph = NULL;
2131 fimpl->pFilterNames = NULL;
2132 fimpl->nFilters = 0;
2133 fimpl->filterCapacity = 0;
2135 *ppObj = fimpl;
2136 return S_OK;