Removed useless warning.
[wine/multimedia.git] / dlls / quartz / filtergraph.c
blob69366750904fda6fdd66ca8601eac4eec18556ed
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 /* NOTE: despite the implication, it doesn't matter which
265 * way round you put in the input and output pins */
266 static HRESULT WINAPI Graphbuilder_ConnectDirect(IGraphBuilder *iface,
267 IPin *ppinIn,
268 IPin *ppinOut,
269 const AM_MEDIA_TYPE *pmt) {
270 PIN_DIRECTION dir;
271 HRESULT hr;
273 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
275 TRACE("(%p/%p)->(%p, %p, %p)\n", This, iface, ppinIn, ppinOut, pmt);
277 /* FIXME: check pins are in graph */
279 hr = IPin_QueryDirection(ppinIn, &dir);
280 if (SUCCEEDED(hr))
282 if (dir == PINDIR_INPUT)
283 hr = IPin_Connect(ppinOut, ppinIn, pmt);
284 else
285 hr = IPin_Connect(ppinIn, ppinOut, pmt);
288 return hr;
291 static HRESULT WINAPI Graphbuilder_Reconnect(IGraphBuilder *iface,
292 IPin *ppin) {
293 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
295 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppin);
297 return S_OK;
300 static HRESULT WINAPI Graphbuilder_Disconnect(IGraphBuilder *iface,
301 IPin *ppin) {
302 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
304 TRACE("(%p/%p)->(%p)\n", This, iface, ppin);
306 return IPin_Disconnect(ppin);
309 static HRESULT WINAPI Graphbuilder_SetDefaultSyncSource(IGraphBuilder *iface) {
310 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
312 TRACE("(%p/%p)->(): stub !!!\n", iface, This);
314 return S_OK;
317 /*** IGraphBuilder methods ***/
318 static HRESULT WINAPI Graphbuilder_Connect(IGraphBuilder *iface,
319 IPin *ppinOut,
320 IPin *ppinIn) {
321 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
323 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, ppinOut, ppinIn);
325 return S_OK;
328 static HRESULT WINAPI Graphbuilder_Render(IGraphBuilder *iface,
329 IPin *ppinOut) {
330 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
332 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppinOut);
334 return S_OK;
337 static HRESULT WINAPI Graphbuilder_RenderFile(IGraphBuilder *iface,
338 LPCWSTR lpcwstrFile,
339 LPCWSTR lpcwstrPlayList) {
340 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
342 TRACE("(%p/%p)->(%s (%p), %s (%p)): stub !!!\n", This, iface, debugstr_w(lpcwstrFile), lpcwstrFile, debugstr_w(lpcwstrPlayList), lpcwstrPlayList);
344 return S_OK;
347 static HRESULT WINAPI Graphbuilder_AddSourceFilter(IGraphBuilder *iface,
348 LPCWSTR lpcwstrFileName,
349 LPCWSTR lpcwstrFilterName,
350 IBaseFilter **ppFilter) {
351 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
353 TRACE("(%p/%p)->(%s (%p), %s (%p), %p): stub !!!\n", This, iface, debugstr_w(lpcwstrFileName), lpcwstrFileName, debugstr_w(lpcwstrFilterName), lpcwstrFilterName, ppFilter);
355 return S_OK;
358 static HRESULT WINAPI Graphbuilder_SetLogFile(IGraphBuilder *iface,
359 DWORD_PTR hFile) {
360 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
362 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) hFile);
364 return S_OK;
367 static HRESULT WINAPI Graphbuilder_Abort(IGraphBuilder *iface) {
368 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
370 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
372 return S_OK;
375 static HRESULT WINAPI Graphbuilder_ShouldOperationContinue(IGraphBuilder *iface) {
376 ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface);
378 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
380 return S_OK;
384 static ICOM_VTABLE(IGraphBuilder) IGraphBuilder_VTable =
386 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
387 Graphbuilder_QueryInterface,
388 Graphbuilder_AddRef,
389 Graphbuilder_Release,
390 Graphbuilder_AddFilter,
391 Graphbuilder_RemoveFilter,
392 Graphbuilder_EnumFilter,
393 Graphbuilder_FindFilterByName,
394 Graphbuilder_ConnectDirect,
395 Graphbuilder_Reconnect,
396 Graphbuilder_Disconnect,
397 Graphbuilder_SetDefaultSyncSource,
398 Graphbuilder_Connect,
399 Graphbuilder_Render,
400 Graphbuilder_RenderFile,
401 Graphbuilder_AddSourceFilter,
402 Graphbuilder_SetLogFile,
403 Graphbuilder_Abort,
404 Graphbuilder_ShouldOperationContinue
407 /*** IUnknown methods ***/
408 static HRESULT WINAPI Mediacontrol_QueryInterface(IMediaControl *iface,
409 REFIID riid,
410 LPVOID*ppvObj) {
411 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
413 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
415 return Filtergraph_QueryInterface(This, riid, ppvObj);
418 static ULONG WINAPI Mediacontrol_AddRef(IMediaControl *iface) {
419 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
421 TRACE("(%p/%p)->()\n", This, iface);
423 return Filtergraph_AddRef(This);
426 static ULONG WINAPI Mediacontrol_Release(IMediaControl *iface) {
427 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
429 TRACE("(%p/%p)->()\n", This, iface);
431 return Filtergraph_Release(This);
435 /*** IDispatch methods ***/
436 static HRESULT WINAPI Mediacontrol_GetTypeInfoCount(IMediaControl *iface,
437 UINT*pctinfo) {
438 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
440 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
442 return S_OK;
445 static HRESULT WINAPI Mediacontrol_GetTypeInfo(IMediaControl *iface,
446 UINT iTInfo,
447 LCID lcid,
448 ITypeInfo**ppTInfo) {
449 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
451 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
453 return S_OK;
456 static HRESULT WINAPI Mediacontrol_GetIDsOfNames(IMediaControl *iface,
457 REFIID riid,
458 LPOLESTR*rgszNames,
459 UINT cNames,
460 LCID lcid,
461 DISPID*rgDispId) {
462 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
464 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
466 return S_OK;
469 static HRESULT WINAPI Mediacontrol_Invoke(IMediaControl *iface,
470 DISPID dispIdMember,
471 REFIID riid,
472 LCID lcid,
473 WORD wFlags,
474 DISPPARAMS*pDispParams,
475 VARIANT*pVarResult,
476 EXCEPINFO*pExepInfo,
477 UINT*puArgErr) {
478 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
480 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);
482 return S_OK;
485 /*** IMediaControl methods ***/
486 static HRESULT WINAPI Mediacontrol_Run(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_Pause(IMediaControl *iface) {
495 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
497 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
499 return S_OK;
502 static HRESULT WINAPI Mediacontrol_Stop(IMediaControl *iface) {
503 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
505 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
507 return S_OK;
510 static HRESULT WINAPI Mediacontrol_GetState(IMediaControl *iface,
511 LONG msTimeout,
512 OAFilterState *pfs) {
513 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
515 TRACE("(%p/%p)->(%ld, %p): stub !!!\n", This, iface, msTimeout, pfs);
517 return S_OK;
520 static HRESULT WINAPI Mediacontrol_RenderFile(IMediaControl *iface,
521 BSTR strFilename) {
522 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
524 TRACE("(%p/%p)->(%s (%p)): stub !!!\n", This, iface, debugstr_w(strFilename), strFilename);
526 return S_OK;
529 static HRESULT WINAPI Mediacontrol_AddSourceFilter(IMediaControl *iface,
530 BSTR strFilename,
531 IDispatch **ppUnk) {
532 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
534 TRACE("(%p/%p)->(%s (%p), %p): stub !!!\n", This, iface, debugstr_w(strFilename), strFilename, ppUnk);
536 return S_OK;
539 static HRESULT WINAPI Mediacontrol_get_FilterCollection(IMediaControl *iface,
540 IDispatch **ppUnk) {
541 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
543 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppUnk);
545 return S_OK;
548 static HRESULT WINAPI Mediacontrol_get_RegFilterCollection(IMediaControl *iface,
549 IDispatch **ppUnk) {
550 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
552 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, ppUnk);
554 return S_OK;
557 static HRESULT WINAPI Mediacontrol_StopWhenReady(IMediaControl *iface) {
558 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
560 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
562 return S_OK;
566 static ICOM_VTABLE(IMediaControl) IMediaControl_VTable =
568 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
569 Mediacontrol_QueryInterface,
570 Mediacontrol_AddRef,
571 Mediacontrol_Release,
572 Mediacontrol_GetTypeInfoCount,
573 Mediacontrol_GetTypeInfo,
574 Mediacontrol_GetIDsOfNames,
575 Mediacontrol_Invoke,
576 Mediacontrol_Run,
577 Mediacontrol_Pause,
578 Mediacontrol_Stop,
579 Mediacontrol_GetState,
580 Mediacontrol_RenderFile,
581 Mediacontrol_AddSourceFilter,
582 Mediacontrol_get_FilterCollection,
583 Mediacontrol_get_RegFilterCollection,
584 Mediacontrol_StopWhenReady
588 /*** IUnknown methods ***/
589 static HRESULT WINAPI Mediaseeking_QueryInterface(IMediaSeeking *iface,
590 REFIID riid,
591 LPVOID*ppvObj) {
592 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
594 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
596 return Filtergraph_QueryInterface(This, riid, ppvObj);
599 static ULONG WINAPI Mediaseeking_AddRef(IMediaSeeking *iface) {
600 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
602 TRACE("(%p/%p)->()\n", This, iface);
604 return Filtergraph_AddRef(This);
607 static ULONG WINAPI Mediaseeking_Release(IMediaSeeking *iface) {
608 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
610 TRACE("(%p/%p)->()\n", This, iface);
612 return Filtergraph_Release(This);
615 /*** IMediaSeeking methods ***/
616 static HRESULT WINAPI Mediaseeking_GetCapabilities(IMediaSeeking *iface,
617 DWORD *pCapabilities) {
618 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
620 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pCapabilities);
622 return S_OK;
625 static HRESULT WINAPI Mediaseeking_CheckCapabilities(IMediaSeeking *iface,
626 DWORD *pCapabilities) {
627 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
629 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pCapabilities);
631 return S_OK;
634 static HRESULT WINAPI Mediaseeking_IsFormatSupported(IMediaSeeking *iface,
635 const GUID *pFormat) {
636 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
638 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
640 return S_OK;
643 static HRESULT WINAPI Mediaseeking_QueryPreferredFormat(IMediaSeeking *iface,
644 GUID *pFormat) {
645 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
647 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
649 return S_OK;
652 static HRESULT WINAPI Mediaseeking_GetTimeFormat(IMediaSeeking *iface,
653 GUID *pFormat) {
654 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
656 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
658 return S_OK;
661 static HRESULT WINAPI Mediaseeking_IsUsingTimeFormat(IMediaSeeking *iface,
662 const GUID *pFormat) {
663 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
665 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
667 return S_OK;
670 static HRESULT WINAPI Mediaseeking_SetTimeFormat(IMediaSeeking *iface,
671 const GUID *pFormat) {
672 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
674 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
676 return S_OK;
679 static HRESULT WINAPI Mediaseeking_GetDuration(IMediaSeeking *iface,
680 LONGLONG *pDuration) {
681 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
683 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDuration);
685 return S_OK;
688 static HRESULT WINAPI Mediaseeking_GetStopPosition(IMediaSeeking *iface,
689 LONGLONG *pStop) {
690 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
692 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pStop);
694 return S_OK;
697 static HRESULT WINAPI Mediaseeking_GetCurrentPosition(IMediaSeeking *iface,
698 LONGLONG *pCurrent) {
699 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
701 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pCurrent);
703 return S_OK;
706 static HRESULT WINAPI Mediaseeking_ConvertTimeFormat(IMediaSeeking *iface,
707 LONGLONG *pTarget,
708 const GUID *pTargetFormat,
709 LONGLONG Source,
710 const GUID *pSourceFormat) {
711 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
713 TRACE("(%p/%p)->(%p, %p, %lld, %p): stub !!!\n", This, iface, pTarget, pTargetFormat, Source, pSourceFormat);
715 return S_OK;
718 static HRESULT WINAPI Mediaseeking_SetPositions(IMediaSeeking *iface,
719 LONGLONG *pCurrent,
720 DWORD dwCurrentFlags,
721 LONGLONG *pStop,
722 DWORD dwStopFlags) {
723 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
725 TRACE("(%p/%p)->(%p, %08lx, %p, %08lx): stub !!!\n", This, iface, pCurrent, dwCurrentFlags, pStop, dwStopFlags);
727 return S_OK;
730 static HRESULT WINAPI Mediaseeking_GetPositions(IMediaSeeking *iface,
731 LONGLONG *pCurrent,
732 LONGLONG *pStop) {
733 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
735 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pCurrent, pStop);
737 return S_OK;
740 static HRESULT WINAPI Mediaseeking_GetAvailable(IMediaSeeking *iface,
741 LONGLONG *pEarliest,
742 LONGLONG *pLatest) {
743 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
745 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pEarliest, pLatest);
747 return S_OK;
750 static HRESULT WINAPI Mediaseeking_SetRate(IMediaSeeking *iface,
751 double dRate) {
752 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
754 TRACE("(%p/%p)->(%f): stub !!!\n", This, iface, dRate);
756 return S_OK;
759 static HRESULT WINAPI Mediaseeking_GetRate(IMediaSeeking *iface,
760 double *pdRate) {
761 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
763 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pdRate);
765 return S_OK;
768 static HRESULT WINAPI Mediaseeking_GetPreroll(IMediaSeeking *iface,
769 LONGLONG *pllPreroll) {
770 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
772 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pllPreroll);
774 return S_OK;
778 static ICOM_VTABLE(IMediaSeeking) IMediaSeeking_VTable =
780 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
781 Mediaseeking_QueryInterface,
782 Mediaseeking_AddRef,
783 Mediaseeking_Release,
784 Mediaseeking_GetCapabilities,
785 Mediaseeking_CheckCapabilities,
786 Mediaseeking_IsFormatSupported,
787 Mediaseeking_QueryPreferredFormat,
788 Mediaseeking_GetTimeFormat,
789 Mediaseeking_IsUsingTimeFormat,
790 Mediaseeking_SetTimeFormat,
791 Mediaseeking_GetDuration,
792 Mediaseeking_GetStopPosition,
793 Mediaseeking_GetCurrentPosition,
794 Mediaseeking_ConvertTimeFormat,
795 Mediaseeking_SetPositions,
796 Mediaseeking_GetPositions,
797 Mediaseeking_GetAvailable,
798 Mediaseeking_SetRate,
799 Mediaseeking_GetRate,
800 Mediaseeking_GetPreroll
803 /*** IUnknown methods ***/
804 static HRESULT WINAPI Basicaudio_QueryInterface(IBasicAudio *iface,
805 REFIID riid,
806 LPVOID*ppvObj) {
807 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
809 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
811 return Filtergraph_QueryInterface(This, riid, ppvObj);
814 static ULONG WINAPI Basicaudio_AddRef(IBasicAudio *iface) {
815 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
817 TRACE("(%p/%p)->()\n", This, iface);
819 return Filtergraph_AddRef(This);
822 static ULONG WINAPI Basicaudio_Release(IBasicAudio *iface) {
823 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
825 TRACE("(%p/%p)->()\n", This, iface);
827 return Filtergraph_Release(This);
830 /*** IDispatch methods ***/
831 static HRESULT WINAPI Basicaudio_GetTypeInfoCount(IBasicAudio *iface,
832 UINT*pctinfo) {
833 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
835 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
837 return S_OK;
840 static HRESULT WINAPI Basicaudio_GetTypeInfo(IBasicAudio *iface,
841 UINT iTInfo,
842 LCID lcid,
843 ITypeInfo**ppTInfo) {
844 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
846 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
848 return S_OK;
851 static HRESULT WINAPI Basicaudio_GetIDsOfNames(IBasicAudio *iface,
852 REFIID riid,
853 LPOLESTR*rgszNames,
854 UINT cNames,
855 LCID lcid,
856 DISPID*rgDispId) {
857 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
859 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
861 return S_OK;
864 static HRESULT WINAPI Basicaudio_Invoke(IBasicAudio *iface,
865 DISPID dispIdMember,
866 REFIID riid,
867 LCID lcid,
868 WORD wFlags,
869 DISPPARAMS*pDispParams,
870 VARIANT*pVarResult,
871 EXCEPINFO*pExepInfo,
872 UINT*puArgErr) {
873 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
875 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);
877 return S_OK;
880 /*** IBasicAudio methods ***/
881 static HRESULT WINAPI Basicaudio_put_Volume(IBasicAudio *iface,
882 long lVolume) {
883 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
885 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lVolume);
887 return S_OK;
890 static HRESULT WINAPI Basicaudio_get_Volume(IBasicAudio *iface,
891 long *plVolume) {
892 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
894 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, plVolume);
896 return S_OK;
899 static HRESULT WINAPI Basicaudio_put_Balance(IBasicAudio *iface,
900 long lBalance) {
901 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
903 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lBalance);
905 return S_OK;
908 static HRESULT WINAPI Basicaudio_get_Balance(IBasicAudio *iface,
909 long *plBalance) {
910 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicAudio_vtbl, iface);
912 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, plBalance);
914 return S_OK;
917 static ICOM_VTABLE(IBasicAudio) IBasicAudio_VTable =
919 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
920 Basicaudio_QueryInterface,
921 Basicaudio_AddRef,
922 Basicaudio_Release,
923 Basicaudio_GetTypeInfoCount,
924 Basicaudio_GetTypeInfo,
925 Basicaudio_GetIDsOfNames,
926 Basicaudio_Invoke,
927 Basicaudio_put_Volume,
928 Basicaudio_get_Volume,
929 Basicaudio_put_Balance,
930 Basicaudio_get_Balance
933 /*** IUnknown methods ***/
934 static HRESULT WINAPI Basicvideo_QueryInterface(IBasicVideo *iface,
935 REFIID riid,
936 LPVOID*ppvObj) {
937 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
939 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
941 return Filtergraph_QueryInterface(This, riid, ppvObj);
944 static ULONG WINAPI Basicvideo_AddRef(IBasicVideo *iface) {
945 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
947 TRACE("(%p/%p)->()\n", This, iface);
949 return Filtergraph_AddRef(This);
952 static ULONG WINAPI Basicvideo_Release(IBasicVideo *iface) {
953 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
955 TRACE("(%p/%p)->()\n", This, iface);
957 return Filtergraph_Release(This);
960 /*** IDispatch methods ***/
961 static HRESULT WINAPI Basicvideo_GetTypeInfoCount(IBasicVideo *iface,
962 UINT*pctinfo) {
963 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
965 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
967 return S_OK;
970 static HRESULT WINAPI Basicvideo_GetTypeInfo(IBasicVideo *iface,
971 UINT iTInfo,
972 LCID lcid,
973 ITypeInfo**ppTInfo) {
974 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
976 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
978 return S_OK;
981 static HRESULT WINAPI Basicvideo_GetIDsOfNames(IBasicVideo *iface,
982 REFIID riid,
983 LPOLESTR*rgszNames,
984 UINT cNames,
985 LCID lcid,
986 DISPID*rgDispId) {
987 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
989 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
991 return S_OK;
994 static HRESULT WINAPI Basicvideo_Invoke(IBasicVideo *iface,
995 DISPID dispIdMember,
996 REFIID riid,
997 LCID lcid,
998 WORD wFlags,
999 DISPPARAMS*pDispParams,
1000 VARIANT*pVarResult,
1001 EXCEPINFO*pExepInfo,
1002 UINT*puArgErr) {
1003 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1005 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);
1007 return S_OK;
1010 /*** IBasicVideo methods ***/
1011 static HRESULT WINAPI Basicvideo_get_AvgTimePerFrame(IBasicVideo *iface,
1012 REFTIME *pAvgTimePerFrame) {
1013 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1015 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pAvgTimePerFrame);
1017 return S_OK;
1020 static HRESULT WINAPI Basicvideo_get_BitRate(IBasicVideo *iface,
1021 long *pBitRate) {
1022 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1024 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBitRate);
1026 return S_OK;
1029 static HRESULT WINAPI Basicvideo_get_BitErrorRate(IBasicVideo *iface,
1030 long *pBitErrorRate) {
1031 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1033 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBitErrorRate);
1035 return S_OK;
1038 static HRESULT WINAPI Basicvideo_get_VideoWidth(IBasicVideo *iface,
1039 long *pVideoWidth) {
1040 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1042 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVideoWidth);
1044 return S_OK;
1047 static HRESULT WINAPI Basicvideo_get_VideoHeight(IBasicVideo *iface,
1048 long *pVideoHeight) {
1049 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1051 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVideoHeight);
1053 return S_OK;
1056 static HRESULT WINAPI Basicvideo_put_SourceLeft(IBasicVideo *iface,
1057 long SourceLeft) {
1058 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1060 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceLeft);
1062 return S_OK;
1065 static HRESULT WINAPI Basicvideo_get_SourceLeft(IBasicVideo *iface,
1066 long *pSourceLeft) {
1067 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1069 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceLeft);
1071 return S_OK;
1074 static HRESULT WINAPI Basicvideo_put_SourceWidth(IBasicVideo *iface,
1075 long SourceWidth) {
1076 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1078 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceWidth);
1080 return S_OK;
1083 static HRESULT WINAPI Basicvideo_get_SourceWidth(IBasicVideo *iface,
1084 long *pSourceWidth) {
1085 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1087 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceWidth);
1089 return S_OK;
1092 static HRESULT WINAPI Basicvideo_put_SourceTop(IBasicVideo *iface,
1093 long SourceTop) {
1094 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1096 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceTop);
1098 return S_OK;
1101 static HRESULT WINAPI Basicvideo_get_SourceTop(IBasicVideo *iface,
1102 long *pSourceTop) {
1103 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1105 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceTop);
1107 return S_OK;
1110 static HRESULT WINAPI Basicvideo_put_SourceHeight(IBasicVideo *iface,
1111 long SourceHeight) {
1112 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1114 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceHeight);
1116 return S_OK;
1119 static HRESULT WINAPI Basicvideo_get_SourceHeight(IBasicVideo *iface,
1120 long *pSourceHeight) {
1121 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1123 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceHeight);
1125 return S_OK;
1128 static HRESULT WINAPI Basicvideo_put_DestinationLeft(IBasicVideo *iface,
1129 long DestinationLeft) {
1130 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1132 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationLeft);
1134 return S_OK;
1137 static HRESULT WINAPI Basicvideo_get_DestinationLeft(IBasicVideo *iface,
1138 long *pDestinationLeft) {
1139 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1141 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationLeft);
1143 return S_OK;
1146 static HRESULT WINAPI Basicvideo_put_DestinationWidth(IBasicVideo *iface,
1147 long DestinationWidth) {
1148 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1150 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationWidth);
1152 return S_OK;
1155 static HRESULT WINAPI Basicvideo_get_DestinationWidth(IBasicVideo *iface,
1156 long *pDestinationWidth) {
1157 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1159 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationWidth);
1161 return S_OK;
1164 static HRESULT WINAPI Basicvideo_put_DestinationTop(IBasicVideo *iface,
1165 long DestinationTop) {
1166 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1168 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationTop);
1170 return S_OK;
1173 static HRESULT WINAPI Basicvideo_get_DestinationTop(IBasicVideo *iface,
1174 long *pDestinationTop) {
1175 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1177 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationTop);
1179 return S_OK;
1182 static HRESULT WINAPI Basicvideo_put_DestinationHeight(IBasicVideo *iface,
1183 long DestinationHeight) {
1184 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1186 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationHeight);
1188 return S_OK;
1191 static HRESULT WINAPI Basicvideo_get_DestinationHeight(IBasicVideo *iface,
1192 long *pDestinationHeight) {
1193 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1195 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationHeight);
1197 return S_OK;
1200 static HRESULT WINAPI Basicvideo_SetSourcePosition(IBasicVideo *iface,
1201 long Left,
1202 long Top,
1203 long Width,
1204 long Height) {
1205 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1207 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
1209 return S_OK;
1212 static HRESULT WINAPI Basicvideo_GetSourcePosition(IBasicVideo *iface,
1213 long *pLeft,
1214 long *pTop,
1215 long *pWidth,
1216 long *pHeight) {
1217 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1219 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1221 return S_OK;
1224 static HRESULT WINAPI Basicvideo_SetDefaultSourcePosition(IBasicVideo *iface) {
1225 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1227 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1229 return S_OK;
1232 static HRESULT WINAPI Basicvideo_SetDestinationPosition(IBasicVideo *iface,
1233 long Left,
1234 long Top,
1235 long Width,
1236 long Height) {
1237 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1239 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
1241 return S_OK;
1244 static HRESULT WINAPI Basicvideo_GetDestinationPosition(IBasicVideo *iface,
1245 long *pLeft,
1246 long *pTop,
1247 long *pWidth,
1248 long *pHeight) {
1249 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1251 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1253 return S_OK;
1256 static HRESULT WINAPI Basicvideo_SetDefaultDestinationPosition(IBasicVideo *iface) {
1257 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1259 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1261 return S_OK;
1264 static HRESULT WINAPI Basicvideo_GetVideoSize(IBasicVideo *iface,
1265 long *pWidth,
1266 long *pHeight) {
1267 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1269 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1271 return S_OK;
1274 static HRESULT WINAPI Basicvideo_GetVideoPaletteEntries(IBasicVideo *iface,
1275 long StartIndex,
1276 long Entries,
1277 long *pRetrieved,
1278 long *pPalette) {
1279 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1281 TRACE("(%p/%p)->(%ld, %ld, %p, %p): stub !!!\n", This, iface, StartIndex, Entries, pRetrieved, pPalette);
1283 return S_OK;
1286 static HRESULT WINAPI Basicvideo_GetCurrentImage(IBasicVideo *iface,
1287 long *pBufferSize,
1288 long *pDIBImage) {
1289 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1291 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pBufferSize, pDIBImage);
1293 return S_OK;
1296 static HRESULT WINAPI Basicvideo_IsUsingDefaultSource(IBasicVideo *iface) {
1297 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1299 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1301 return S_OK;
1304 static HRESULT WINAPI Basicvideo_IsUsingDefaultDestination(IBasicVideo *iface) {
1305 ICOM_THIS_MULTI(IFilterGraphImpl, IBasicVideo_vtbl, iface);
1307 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1309 return S_OK;
1313 static ICOM_VTABLE(IBasicVideo) IBasicVideo_VTable =
1315 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
1316 Basicvideo_QueryInterface,
1317 Basicvideo_AddRef,
1318 Basicvideo_Release,
1319 Basicvideo_GetTypeInfoCount,
1320 Basicvideo_GetTypeInfo,
1321 Basicvideo_GetIDsOfNames,
1322 Basicvideo_Invoke,
1323 Basicvideo_get_AvgTimePerFrame,
1324 Basicvideo_get_BitRate,
1325 Basicvideo_get_BitErrorRate,
1326 Basicvideo_get_VideoWidth,
1327 Basicvideo_get_VideoHeight,
1328 Basicvideo_put_SourceLeft,
1329 Basicvideo_get_SourceLeft,
1330 Basicvideo_put_SourceWidth,
1331 Basicvideo_get_SourceWidth,
1332 Basicvideo_put_SourceTop,
1333 Basicvideo_get_SourceTop,
1334 Basicvideo_put_SourceHeight,
1335 Basicvideo_get_SourceHeight,
1336 Basicvideo_put_DestinationLeft,
1337 Basicvideo_get_DestinationLeft,
1338 Basicvideo_put_DestinationWidth,
1339 Basicvideo_get_DestinationWidth,
1340 Basicvideo_put_DestinationTop,
1341 Basicvideo_get_DestinationTop,
1342 Basicvideo_put_DestinationHeight,
1343 Basicvideo_get_DestinationHeight,
1344 Basicvideo_SetSourcePosition,
1345 Basicvideo_GetSourcePosition,
1346 Basicvideo_SetDefaultSourcePosition,
1347 Basicvideo_SetDestinationPosition,
1348 Basicvideo_GetDestinationPosition,
1349 Basicvideo_SetDefaultDestinationPosition,
1350 Basicvideo_GetVideoSize,
1351 Basicvideo_GetVideoPaletteEntries,
1352 Basicvideo_GetCurrentImage,
1353 Basicvideo_IsUsingDefaultSource,
1354 Basicvideo_IsUsingDefaultDestination
1358 /*** IUnknown methods ***/
1359 static HRESULT WINAPI Videowindow_QueryInterface(IVideoWindow *iface,
1360 REFIID riid,
1361 LPVOID*ppvObj) {
1362 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1364 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
1366 return Filtergraph_QueryInterface(This, riid, ppvObj);
1369 static ULONG WINAPI Videowindow_AddRef(IVideoWindow *iface) {
1370 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1372 TRACE("(%p/%p)->()\n", This, iface);
1374 return Filtergraph_AddRef(This);
1377 static ULONG WINAPI Videowindow_Release(IVideoWindow *iface) {
1378 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1380 TRACE("(%p/%p)->()\n", This, iface);
1382 return Filtergraph_Release(This);
1385 /*** IDispatch methods ***/
1386 static HRESULT WINAPI Videowindow_GetTypeInfoCount(IVideoWindow *iface,
1387 UINT*pctinfo) {
1388 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1390 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
1392 return S_OK;
1395 static HRESULT WINAPI Videowindow_GetTypeInfo(IVideoWindow *iface,
1396 UINT iTInfo,
1397 LCID lcid,
1398 ITypeInfo**ppTInfo) {
1399 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1401 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
1403 return S_OK;
1406 static HRESULT WINAPI Videowindow_GetIDsOfNames(IVideoWindow *iface,
1407 REFIID riid,
1408 LPOLESTR*rgszNames,
1409 UINT cNames,
1410 LCID lcid,
1411 DISPID*rgDispId) {
1412 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1414 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
1416 return S_OK;
1419 static HRESULT WINAPI Videowindow_Invoke(IVideoWindow *iface,
1420 DISPID dispIdMember,
1421 REFIID riid,
1422 LCID lcid,
1423 WORD wFlags,
1424 DISPPARAMS*pDispParams,
1425 VARIANT*pVarResult,
1426 EXCEPINFO*pExepInfo,
1427 UINT*puArgErr) {
1428 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1430 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);
1432 return S_OK;
1435 /*** IVideoWindow methods ***/
1436 static HRESULT WINAPI Videowindow_put_Caption(IVideoWindow *iface,
1437 BSTR strCaption) {
1438 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1440 TRACE("(%p/%p)->(%s (%p)): stub !!!\n", This, iface, debugstr_w(strCaption), strCaption);
1442 return S_OK;
1445 static HRESULT WINAPI Videowindow_get_Caption(IVideoWindow *iface,
1446 BSTR *strCaption) {
1447 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1449 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, strCaption);
1451 return S_OK;
1454 static HRESULT WINAPI Videowindow_put_WindowStyle(IVideoWindow *iface,
1455 long WindowStyle) {
1456 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1458 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowStyle);
1460 return S_OK;
1463 static HRESULT WINAPI Videowindow_get_WindowStyle(IVideoWindow *iface,
1464 long *WindowStyle) {
1465 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1467 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowStyle);
1469 return S_OK;
1472 static HRESULT WINAPI Videowindow_put_WindowStyleEx(IVideoWindow *iface,
1473 long WindowStyleEx) {
1474 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1476 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowStyleEx);
1478 return S_OK;
1481 static HRESULT WINAPI Videowindow_get_WindowStyleEx(IVideoWindow *iface,
1482 long *WindowStyleEx) {
1483 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1485 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowStyleEx);
1487 return S_OK;
1490 static HRESULT WINAPI Videowindow_put_AutoShow(IVideoWindow *iface,
1491 long AutoShow) {
1492 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1494 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, AutoShow);
1496 return S_OK;
1499 static HRESULT WINAPI Videowindow_get_AutoShow(IVideoWindow *iface,
1500 long *AutoShow) {
1501 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1503 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, AutoShow);
1505 return S_OK;
1508 static HRESULT WINAPI Videowindow_put_WindowState(IVideoWindow *iface,
1509 long WindowState) {
1510 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1512 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowState);
1514 return S_OK;
1517 static HRESULT WINAPI Videowindow_get_WindowState(IVideoWindow *iface,
1518 long *WindowState) {
1519 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1521 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowState);
1523 return S_OK;
1526 static HRESULT WINAPI Videowindow_put_BackgroundPalette(IVideoWindow *iface,
1527 long BackgroundPalette) {
1528 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1530 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, BackgroundPalette);
1532 return S_OK;
1535 static HRESULT WINAPI Videowindow_get_BackgroundPalette(IVideoWindow *iface,
1536 long *pBackgroundPalette) {
1537 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1539 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBackgroundPalette);
1541 return S_OK;
1544 static HRESULT WINAPI Videowindow_put_Visible(IVideoWindow *iface,
1545 long Visible) {
1546 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1548 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Visible);
1550 return S_OK;
1553 static HRESULT WINAPI Videowindow_get_Visible(IVideoWindow *iface,
1554 long *pVisible) {
1555 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1557 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVisible);
1559 return S_OK;
1562 static HRESULT WINAPI Videowindow_put_Left(IVideoWindow *iface,
1563 long Left) {
1564 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1566 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Left);
1568 return S_OK;
1571 static HRESULT WINAPI Videowindow_get_Left(IVideoWindow *iface,
1572 long *pLeft) {
1573 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1575 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pLeft);
1577 return S_OK;
1580 static HRESULT WINAPI Videowindow_put_Width(IVideoWindow *iface,
1581 long Width) {
1582 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1584 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Width);
1586 return S_OK;
1589 static HRESULT WINAPI Videowindow_get_Width(IVideoWindow *iface,
1590 long *pWidth) {
1591 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1593 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pWidth);
1595 return S_OK;
1598 static HRESULT WINAPI Videowindow_put_Top(IVideoWindow *iface,
1599 long Top) {
1600 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1602 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Top);
1604 return S_OK;
1607 static HRESULT WINAPI Videowindow_get_Top(IVideoWindow *iface,
1608 long *pTop) {
1609 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1611 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pTop);
1613 return S_OK;
1616 static HRESULT WINAPI Videowindow_put_Height(IVideoWindow *iface,
1617 long Height) {
1618 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1620 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Height);
1622 return S_OK;
1625 static HRESULT WINAPI Videowindow_get_Height(IVideoWindow *iface,
1626 long *pHeight) {
1627 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1629 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pHeight);
1631 return S_OK;
1634 static HRESULT WINAPI Videowindow_put_Owner(IVideoWindow *iface,
1635 OAHWND Owner) {
1636 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1638 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Owner);
1640 return S_OK;
1643 static HRESULT WINAPI Videowindow_get_Owner(IVideoWindow *iface,
1644 OAHWND *Owner) {
1645 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1647 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Owner);
1649 return S_OK;
1652 static HRESULT WINAPI Videowindow_put_MessageDrain(IVideoWindow *iface,
1653 OAHWND Drain) {
1654 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1656 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Drain);
1658 return S_OK;
1661 static HRESULT WINAPI Videowindow_get_MessageDrain(IVideoWindow *iface,
1662 OAHWND *Drain) {
1663 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1665 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, Drain);
1667 return S_OK;
1670 static HRESULT WINAPI Videowindow_get_BorderColor(IVideoWindow *iface,
1671 long *Color) {
1672 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1674 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, Color);
1676 return S_OK;
1679 static HRESULT WINAPI Videowindow_put_BorderColor(IVideoWindow *iface,
1680 long Color) {
1681 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1683 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Color);
1685 return S_OK;
1688 static HRESULT WINAPI Videowindow_get_FullScreenMode(IVideoWindow *iface,
1689 long *FullScreenMode) {
1690 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1692 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, FullScreenMode);
1694 return S_OK;
1697 static HRESULT WINAPI Videowindow_put_FullScreenMode(IVideoWindow *iface,
1698 long FullScreenMode) {
1699 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1701 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, FullScreenMode);
1703 return S_OK;
1706 static HRESULT WINAPI Videowindow_SetWindowForeground(IVideoWindow *iface,
1707 long Focus) {
1708 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1710 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Focus);
1712 return S_OK;
1715 static HRESULT WINAPI Videowindow_NotifyOwnerMessage(IVideoWindow *iface,
1716 OAHWND hwnd,
1717 long uMsg,
1718 LONG_PTR wParam,
1719 LONG_PTR lParam) {
1720 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1722 TRACE("(%p/%p)->(%08lx, %ld, %08lx, %08lx): stub !!!\n", This, iface, (DWORD) hwnd, uMsg, wParam, lParam);
1724 return S_OK;
1727 static HRESULT WINAPI Videowindow_SetWindowPosition(IVideoWindow *iface,
1728 long Left,
1729 long Top,
1730 long Width,
1731 long Height) {
1732 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1734 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
1736 return S_OK;
1739 static HRESULT WINAPI Videowindow_GetWindowPosition(IVideoWindow *iface,
1740 long *pLeft,
1741 long *pTop,
1742 long *pWidth,
1743 long *pHeight) {
1744 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1746 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1748 return S_OK;
1751 static HRESULT WINAPI Videowindow_GetMinIdealImageSize(IVideoWindow *iface,
1752 long *pWidth,
1753 long *pHeight) {
1754 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1756 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1758 return S_OK;
1761 static HRESULT WINAPI Videowindow_GetMaxIdealImageSize(IVideoWindow *iface,
1762 long *pWidth,
1763 long *pHeight) {
1764 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1766 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1768 return S_OK;
1771 static HRESULT WINAPI Videowindow_GetRestorePosition(IVideoWindow *iface,
1772 long *pLeft,
1773 long *pTop,
1774 long *pWidth,
1775 long *pHeight) {
1776 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1778 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1780 return S_OK;
1783 static HRESULT WINAPI Videowindow_HideCursor(IVideoWindow *iface,
1784 long HideCursor) {
1785 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1787 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, HideCursor);
1789 return S_OK;
1792 static HRESULT WINAPI Videowindow_IsCursorHidden(IVideoWindow *iface,
1793 long *CursorHidden) {
1794 ICOM_THIS_MULTI(IFilterGraphImpl, IVideoWindow_vtbl, iface);
1796 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, CursorHidden);
1798 return S_OK;
1802 static ICOM_VTABLE(IVideoWindow) IVideoWindow_VTable =
1804 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
1805 Videowindow_QueryInterface,
1806 Videowindow_AddRef,
1807 Videowindow_Release,
1808 Videowindow_GetTypeInfoCount,
1809 Videowindow_GetTypeInfo,
1810 Videowindow_GetIDsOfNames,
1811 Videowindow_Invoke,
1812 Videowindow_put_Caption,
1813 Videowindow_get_Caption,
1814 Videowindow_put_WindowStyle,
1815 Videowindow_get_WindowStyle,
1816 Videowindow_put_WindowStyleEx,
1817 Videowindow_get_WindowStyleEx,
1818 Videowindow_put_AutoShow,
1819 Videowindow_get_AutoShow,
1820 Videowindow_put_WindowState,
1821 Videowindow_get_WindowState,
1822 Videowindow_put_BackgroundPalette,
1823 Videowindow_get_BackgroundPalette,
1824 Videowindow_put_Visible,
1825 Videowindow_get_Visible,
1826 Videowindow_put_Left,
1827 Videowindow_get_Left,
1828 Videowindow_put_Width,
1829 Videowindow_get_Width,
1830 Videowindow_put_Top,
1831 Videowindow_get_Top,
1832 Videowindow_put_Height,
1833 Videowindow_get_Height,
1834 Videowindow_put_Owner,
1835 Videowindow_get_Owner,
1836 Videowindow_put_MessageDrain,
1837 Videowindow_get_MessageDrain,
1838 Videowindow_get_BorderColor,
1839 Videowindow_put_BorderColor,
1840 Videowindow_get_FullScreenMode,
1841 Videowindow_put_FullScreenMode,
1842 Videowindow_SetWindowForeground,
1843 Videowindow_NotifyOwnerMessage,
1844 Videowindow_SetWindowPosition,
1845 Videowindow_GetWindowPosition,
1846 Videowindow_GetMinIdealImageSize,
1847 Videowindow_GetMaxIdealImageSize,
1848 Videowindow_GetRestorePosition,
1849 Videowindow_HideCursor,
1850 Videowindow_IsCursorHidden
1854 /*** IUnknown methods ***/
1855 static HRESULT WINAPI Mediaevent_QueryInterface(IMediaEventEx *iface,
1856 REFIID riid,
1857 LPVOID*ppvObj) {
1858 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1860 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
1862 return Filtergraph_QueryInterface(This, riid, ppvObj);
1865 static ULONG WINAPI Mediaevent_AddRef(IMediaEventEx *iface) {
1866 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1868 TRACE("(%p/%p)->()\n", This, iface);
1870 return Filtergraph_AddRef(This);
1873 static ULONG WINAPI Mediaevent_Release(IMediaEventEx *iface) {
1874 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1876 TRACE("(%p/%p)->()\n", This, iface);
1878 return Filtergraph_Release(This);
1881 /*** IDispatch methods ***/
1882 static HRESULT WINAPI Mediaevent_GetTypeInfoCount(IMediaEventEx *iface,
1883 UINT*pctinfo) {
1884 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1886 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
1888 return S_OK;
1891 static HRESULT WINAPI Mediaevent_GetTypeInfo(IMediaEventEx *iface,
1892 UINT iTInfo,
1893 LCID lcid,
1894 ITypeInfo**ppTInfo) {
1895 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1897 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
1899 return S_OK;
1902 static HRESULT WINAPI Mediaevent_GetIDsOfNames(IMediaEventEx *iface,
1903 REFIID riid,
1904 LPOLESTR*rgszNames,
1905 UINT cNames,
1906 LCID lcid,
1907 DISPID*rgDispId) {
1908 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1910 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
1912 return S_OK;
1915 static HRESULT WINAPI Mediaevent_Invoke(IMediaEventEx *iface,
1916 DISPID dispIdMember,
1917 REFIID riid,
1918 LCID lcid,
1919 WORD wFlags,
1920 DISPPARAMS*pDispParams,
1921 VARIANT*pVarResult,
1922 EXCEPINFO*pExepInfo,
1923 UINT*puArgErr) {
1924 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1926 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);
1928 return S_OK;
1931 /*** IMediaEvent methods ***/
1932 static HRESULT WINAPI Mediaevent_GetEventHandle(IMediaEventEx *iface,
1933 OAEVENT *hEvent) {
1934 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1936 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, hEvent);
1938 return S_OK;
1941 static HRESULT WINAPI Mediaevent_GetEvent(IMediaEventEx *iface,
1942 long *lEventCode,
1943 LONG_PTR *lParam1,
1944 LONG_PTR *lParam2,
1945 long msTimeout) {
1946 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1948 TRACE("(%p/%p)->(%p, %p, %p, %ld): stub !!!\n", This, iface, lEventCode, lParam1, lParam2, msTimeout);
1950 return S_OK;
1953 static HRESULT WINAPI Mediaevent_WaitForCompletion(IMediaEventEx *iface,
1954 long msTimeout,
1955 long *pEvCode) {
1956 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1958 TRACE("(%p/%p)->(%ld, %p): stub !!!\n", This, iface, msTimeout, pEvCode);
1960 return S_OK;
1963 static HRESULT WINAPI Mediaevent_CancelDefaultHandling(IMediaEventEx *iface,
1964 long lEvCode) {
1965 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1967 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lEvCode);
1969 return S_OK;
1972 static HRESULT WINAPI Mediaevent_RestoreDefaultHandling(IMediaEventEx *iface,
1973 long lEvCode) {
1974 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1976 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lEvCode);
1978 return S_OK;
1981 static HRESULT WINAPI Mediaevent_FreeEventParams(IMediaEventEx *iface,
1982 long lEvCode,
1983 LONG_PTR lParam1,
1984 LONG_PTR lParam2) {
1985 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1987 TRACE("(%p/%p)->(%ld, %08lx, %08lx): stub !!!\n", This, iface, lEvCode, lParam1, lParam2);
1989 return S_OK;
1992 /*** IMediaEventEx methods ***/
1993 static HRESULT WINAPI Mediaevent_SetNotifyWindow(IMediaEventEx *iface,
1994 OAHWND hwnd,
1995 long lMsg,
1996 LONG_PTR lInstanceData) {
1997 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
1999 TRACE("(%p/%p)->(%08lx, %ld, %08lx): stub !!!\n", This, iface, (DWORD) hwnd, lMsg, lInstanceData);
2001 return S_OK;
2004 static HRESULT WINAPI Mediaevent_SetNotifyFlags(IMediaEventEx *iface,
2005 long lNoNotifyFlags) {
2006 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
2008 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, lNoNotifyFlags);
2010 return S_OK;
2013 static HRESULT WINAPI Mediaevent_GetNotifyFlags(IMediaEventEx *iface,
2014 long *lplNoNotifyFlags) {
2015 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
2017 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, lplNoNotifyFlags);
2019 return S_OK;
2023 static ICOM_VTABLE(IMediaEventEx) IMediaEventEx_VTable =
2025 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
2026 Mediaevent_QueryInterface,
2027 Mediaevent_AddRef,
2028 Mediaevent_Release,
2029 Mediaevent_GetTypeInfoCount,
2030 Mediaevent_GetTypeInfo,
2031 Mediaevent_GetIDsOfNames,
2032 Mediaevent_Invoke,
2033 Mediaevent_GetEventHandle,
2034 Mediaevent_GetEvent,
2035 Mediaevent_WaitForCompletion,
2036 Mediaevent_CancelDefaultHandling,
2037 Mediaevent_RestoreDefaultHandling,
2038 Mediaevent_FreeEventParams,
2039 Mediaevent_SetNotifyWindow,
2040 Mediaevent_SetNotifyFlags,
2041 Mediaevent_GetNotifyFlags
2045 static HRESULT WINAPI MediaFilter_QueryInterface(IMediaFilter *iface, REFIID riid, LPVOID *ppv)
2047 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
2049 return Filtergraph_QueryInterface(This, riid, ppv);
2052 static ULONG WINAPI MediaFilter_AddRef(IMediaFilter *iface)
2054 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
2056 return Filtergraph_AddRef(This);
2059 static ULONG WINAPI MediaFilter_Release(IMediaFilter *iface)
2061 ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventEx_vtbl, iface);
2063 return Filtergraph_Release(This);
2066 static HRESULT WINAPI MediaFilter_GetClassID(IMediaFilter *iface, CLSID * pClassID)
2068 FIXME("(%p): stub\n", pClassID);
2070 return E_NOTIMPL;
2073 static HRESULT WINAPI MediaFilter_Stop(IMediaFilter *iface)
2075 FIXME("(): stub\n");
2077 return E_NOTIMPL;
2080 static HRESULT WINAPI MediaFilter_Pause(IMediaFilter *iface)
2082 FIXME("(): stub\n");
2084 return E_NOTIMPL;
2087 static HRESULT WINAPI MediaFilter_Run(IMediaFilter *iface, REFERENCE_TIME tStart)
2089 FIXME("(%lld): stub\n", tStart);
2091 return E_NOTIMPL;
2094 static HRESULT WINAPI MediaFilter_GetState(IMediaFilter *iface, DWORD dwMsTimeout, FILTER_STATE * pState)
2096 FIXME("(%ld, %p): stub\n", dwMsTimeout, pState);
2098 return E_NOTIMPL;
2101 static HRESULT WINAPI MediaFilter_SetSyncSource(IMediaFilter *iface, IReferenceClock *pClock)
2103 FIXME("(%p): stub\n", pClock);
2105 return E_NOTIMPL;
2108 static HRESULT WINAPI MediaFilter_GetSyncSource(IMediaFilter *iface, IReferenceClock **ppClock)
2110 FIXME("(%p): stub\n", ppClock);
2112 return E_NOTIMPL;
2115 static ICOM_VTABLE(IMediaFilter) IMediaFilter_VTable =
2117 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
2118 MediaFilter_QueryInterface,
2119 MediaFilter_AddRef,
2120 MediaFilter_Release,
2121 MediaFilter_GetClassID,
2122 MediaFilter_Stop,
2123 MediaFilter_Pause,
2124 MediaFilter_Run,
2125 MediaFilter_GetState,
2126 MediaFilter_SetSyncSource,
2127 MediaFilter_GetSyncSource
2130 /* This is the only function that actually creates a FilterGraph class... */
2131 HRESULT FILTERGRAPH_create(IUnknown *pUnkOuter, LPVOID *ppObj) {
2132 IFilterGraphImpl *fimpl;
2134 TRACE("(%p,%p)\n", pUnkOuter, ppObj);
2136 fimpl = (IFilterGraphImpl *) HeapAlloc(GetProcessHeap(), 0, sizeof(*fimpl));
2137 fimpl->IGraphBuilder_vtbl = &IGraphBuilder_VTable;
2138 fimpl->IMediaControl_vtbl = &IMediaControl_VTable;
2139 fimpl->IMediaSeeking_vtbl = &IMediaSeeking_VTable;
2140 fimpl->IBasicAudio_vtbl = &IBasicAudio_VTable;
2141 fimpl->IBasicVideo_vtbl = &IBasicVideo_VTable;
2142 fimpl->IVideoWindow_vtbl = &IVideoWindow_VTable;
2143 fimpl->IMediaEventEx_vtbl = &IMediaEventEx_VTable;
2144 fimpl->IMediaFilter_vtbl = &IMediaFilter_VTable;
2145 fimpl->ref = 1;
2146 fimpl->ppFiltersInGraph = NULL;
2147 fimpl->pFilterNames = NULL;
2148 fimpl->nFilters = 0;
2149 fimpl->filterCapacity = 0;
2151 *ppObj = fimpl;
2152 return S_OK;