2 * Video Renderer (Fullscreen and Windowed using Direct Draw)
4 * Copyright 2004 Christian Costa
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #define NONAMELESSSTRUCT
24 #define NONAMELESSUNION
25 #include "quartz_private.h"
26 #include "control_private.h"
40 #include "wine/unicode.h"
41 #include "wine/debug.h"
43 WINE_DEFAULT_DEBUG_CHANNEL(quartz);
45 static const WCHAR wcsInputPinName[] = {'i','n','p','u','t',' ','p','i','n',0};
47 static const IBaseFilterVtbl VideoRenderer_Vtbl;
48 static IBasicVideoVtbl IBasicVideo_VTable;
49 static IVideoWindowVtbl IVideoWindow_VTable;
50 static const IPinVtbl VideoRenderer_InputPin_Vtbl;
52 typedef struct VideoRendererImpl
54 const IBaseFilterVtbl * lpVtbl;
55 IBasicVideoVtbl * IBasicVideo_vtbl;
56 IVideoWindowVtbl * IVideoWindow_vtbl;
59 CRITICAL_SECTION csFilter;
61 REFERENCE_TIME rtStreamStart;
62 IReferenceClock * pClock;
63 FILTER_INFO filterInfo;
69 LPDIRECTDRAWSURFACE surface;
70 LPDIRECTDRAWSURFACE backbuffer;
74 static const IMemInputPinVtbl MemInputPin_Vtbl =
76 MemInputPin_QueryInterface,
79 MemInputPin_GetAllocator,
80 MemInputPin_NotifyAllocator,
81 MemInputPin_GetAllocatorRequirements,
83 MemInputPin_ReceiveMultiple,
84 MemInputPin_ReceiveCanBlock
87 static HRESULT VideoRenderer_InputPin_Construct(const PIN_INFO * pPinInfo, SAMPLEPROC pSampleProc, LPVOID pUserData, QUERYACCEPTPROC pQueryAccept, LPCRITICAL_SECTION pCritSec, IPin ** ppPin)
93 if (pPinInfo->dir != PINDIR_INPUT)
95 ERR("Pin direction(%x) != PINDIR_INPUT\n", pPinInfo->dir);
99 pPinImpl = CoTaskMemAlloc(sizeof(*pPinImpl));
102 return E_OUTOFMEMORY;
104 if (SUCCEEDED(InputPin_Init(pPinInfo, pSampleProc, pUserData, pQueryAccept, pCritSec, pPinImpl)))
106 pPinImpl->pin.lpVtbl = &VideoRenderer_InputPin_Vtbl;
107 pPinImpl->lpVtblMemInput = &MemInputPin_Vtbl;
109 *ppPin = (IPin *)(&pPinImpl->pin.lpVtbl);
115 static HRESULT VideoRenderer_CreatePrimarySurface(IBaseFilter * iface)
120 VideoRendererImpl *This = (VideoRendererImpl *)iface;
122 hr = DirectDrawCreate(NULL, &This->ddraw, NULL);
125 ERR("Cannot create Direct Draw object\n");
129 hr = IDirectDraw_SetCooperativeLevel(This->ddraw, NULL, DDSCL_FULLSCREEN|DDSCL_EXCLUSIVE);
131 ERR("Cannot set fulscreen mode\n");
135 sdesc.dwSize = sizeof(sdesc);
136 sdesc.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
137 sdesc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
138 sdesc.dwBackBufferCount = 1;
140 hr = IDirectDraw_CreateSurface(This->ddraw, &sdesc, &This->surface, NULL);
142 ERR("Cannot create surface\n");
146 hr = IDirectDrawSurface_GetSurfaceDesc(This->surface, &sdesc);
148 ERR("Cannot get surface information\n");
151 TRACE("Width = %ld\n", sdesc.dwWidth);
152 TRACE("Height = %ld\n", sdesc.dwHeight);
153 TRACE("Pitch = %ld\n", sdesc.u1.lPitch);
154 TRACE("Depth = %ld\n", sdesc.ddpfPixelFormat.u1.dwRGBBitCount);
156 ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
157 hr = IDirectDrawSurface_GetAttachedSurface(This->surface, &ddscaps, &This->backbuffer);
159 ERR("Cannot get backbuffer\n");
166 static DWORD VideoRenderer_SendSampleData(VideoRendererImpl* This, LPBYTE data, DWORD size)
168 VIDEOINFOHEADER* format;
177 LPBYTE palette = NULL;
179 TRACE("%p %p %ld\n", This, data, size);
181 sdesc.dwSize = sizeof(sdesc);
182 hr = IPin_ConnectionMediaType(This->ppPins[0], &amt);
184 ERR("Unable to retrieve media type\n");
187 format = (VIDEOINFOHEADER*)amt.pbFormat;
189 TRACE("biSize = %ld\n", format->bmiHeader.biSize);
190 TRACE("biWidth = %ld\n", format->bmiHeader.biWidth);
191 TRACE("biHeigth = %ld\n", format->bmiHeader.biHeight);
192 TRACE("biPlanes = %d\n", format->bmiHeader.biPlanes);
193 TRACE("biBitCount = %d\n", format->bmiHeader.biBitCount);
194 TRACE("biCompression = %s\n", debugstr_an((LPSTR)&(format->bmiHeader.biCompression), 4));
195 TRACE("biSizeImage = %ld\n", format->bmiHeader.biSizeImage);
197 width = format->bmiHeader.biWidth;
198 height = format->bmiHeader.biHeight;
199 palette = ((LPBYTE)&format->bmiHeader) + format->bmiHeader.biSize;
201 hr = IDirectDrawSurface_Lock(This->backbuffer, NULL, &sdesc, DDLOCK_WRITEONLY, NULL);
203 ERR("Cannot lock backbuffer\n");
207 ptr = sdesc.lpSurface;
209 /* FIXME: We may use Direct Draw services to do the conversion for us */
210 if ((sdesc.ddpfPixelFormat.u1.dwRGBBitCount == 24) || (sdesc.ddpfPixelFormat.u1.dwRGBBitCount == 32))
212 if (format->bmiHeader.biBitCount == 8)
214 int psz = sdesc.ddpfPixelFormat.u1.dwRGBBitCount == 32 ? 4 : 3;
215 for (j = 0; j < height; j++)
216 for (i = 0; i < width; i++)
218 *(ptr + i*psz + 0 + j * sdesc.u1.lPitch) = palette[*(data + i + 0 + (height-1-j) * width)*4 + 0];
219 *(ptr + i*psz + 1 + j * sdesc.u1.lPitch) = palette[*(data + i + 0 + (height-1-j) * width)*4 + 1];
220 *(ptr + i*psz + 2 + j * sdesc.u1.lPitch) = palette[*(data + i + 0 + (height-1-j) * width)*4 + 2];
222 *(ptr + i*psz + 3 + j * sdesc.u1.lPitch) = 0xFF;
225 else if ((format->bmiHeader.biBitCount == 24) || (format->bmiHeader.biBitCount == 32))
227 int dpsz = sdesc.ddpfPixelFormat.u1.dwRGBBitCount == 32 ? 4 : 3;
228 int spsz = format->bmiHeader.biBitCount == 32 ? 4 : 3;
229 for (j = 0; j < height; j++)
230 for (i = 0; i < width; i++)
232 *(ptr + i*dpsz + 0 + j * sdesc.u1.lPitch) = *(data + (i + 0 + (height-1-j) * width)*spsz + 0);
233 *(ptr + i*dpsz + 1 + j * sdesc.u1.lPitch) = *(data + (i + 0 + (height-1-j) * width)*spsz + 1);
234 *(ptr + i*dpsz + 2 + j * sdesc.u1.lPitch) = *(data + (i + 0 + (height-1-j) * width)*spsz + 2);
236 *(ptr + i*dpsz + 3 + j * sdesc.u1.lPitch) = 0xFF;
240 FIXME("Source size with a depths other than 8 (paletted), 24 or 32 bits are not yet supported\n");
243 FIXME("Destination depths with a depth other than 24 or 32 bits are not yet supported\n");
245 hr = IDirectDrawSurface_Unlock(This->backbuffer, NULL);
247 ERR("Cannot unlock backbuffer\n");
251 hr = IDirectDrawSurface_Flip(This->surface, NULL, DDFLIP_WAIT);
253 ERR("Cannot unlock backbuffer\n");
260 static HRESULT VideoRenderer_Sample(LPVOID iface, IMediaSample * pSample)
262 VideoRendererImpl *This = (VideoRendererImpl *)iface;
263 LPBYTE pbSrcStream = NULL;
264 long cbSrcStream = 0;
265 REFERENCE_TIME tStart, tStop;
268 TRACE("%p %p\n", iface, pSample);
270 hr = IMediaSample_GetPointer(pSample, &pbSrcStream);
273 ERR("Cannot get pointer to sample data (%lx)\n", hr);
277 hr = IMediaSample_GetTime(pSample, &tStart, &tStop);
279 ERR("Cannot get sample time (%lx)\n", hr);
281 cbSrcStream = IMediaSample_GetActualDataLength(pSample);
283 TRACE("val %p %ld\n", pbSrcStream, cbSrcStream);
285 #if 0 /* For debugging purpose */
288 for(i = 0; i < cbSrcStream; i++)
290 if ((i!=0) && !(i%16))
292 DPRINTF("%02x ", pbSrcStream[i]);
301 hr = VideoRenderer_CreatePrimarySurface(iface);
304 ERR("Unable to create primary surface\n");
308 VideoRenderer_SendSampleData(This, pbSrcStream, cbSrcStream);
313 static HRESULT VideoRenderer_QueryAccept(LPVOID iface, const AM_MEDIA_TYPE * pmt)
315 if ((IsEqualIID(&pmt->majortype, &MEDIATYPE_Video) && IsEqualIID(&pmt->subtype, &MEDIASUBTYPE_RGB32)) ||
316 (IsEqualIID(&pmt->majortype, &MEDIATYPE_Video) && IsEqualIID(&pmt->subtype, &MEDIASUBTYPE_RGB24)) ||
317 (IsEqualIID(&pmt->majortype, &MEDIATYPE_Video) && IsEqualIID(&pmt->subtype, &MEDIASUBTYPE_RGB565)) ||
318 (IsEqualIID(&pmt->majortype, &MEDIATYPE_Video) && IsEqualIID(&pmt->subtype, &MEDIASUBTYPE_RGB8)))
323 HRESULT VideoRenderer_create(IUnknown * pUnkOuter, LPVOID * ppv)
327 VideoRendererImpl * pVideoRenderer;
329 TRACE("(%p, %p)\n", pUnkOuter, ppv);
334 return CLASS_E_NOAGGREGATION;
336 pVideoRenderer = CoTaskMemAlloc(sizeof(VideoRendererImpl));
338 pVideoRenderer->lpVtbl = &VideoRenderer_Vtbl;
339 pVideoRenderer->IBasicVideo_vtbl = &IBasicVideo_VTable;
340 pVideoRenderer->IVideoWindow_vtbl = &IVideoWindow_VTable;
342 pVideoRenderer->refCount = 1;
343 InitializeCriticalSection(&pVideoRenderer->csFilter);
344 pVideoRenderer->state = State_Stopped;
345 pVideoRenderer->pClock = NULL;
346 pVideoRenderer->init = 0;
347 ZeroMemory(&pVideoRenderer->filterInfo, sizeof(FILTER_INFO));
349 pVideoRenderer->ppPins = CoTaskMemAlloc(1 * sizeof(IPin *));
351 /* construct input pin */
352 piInput.dir = PINDIR_INPUT;
353 piInput.pFilter = (IBaseFilter *)pVideoRenderer;
354 strncpyW(piInput.achName, wcsInputPinName, sizeof(piInput.achName) / sizeof(piInput.achName[0]));
356 hr = VideoRenderer_InputPin_Construct(&piInput, VideoRenderer_Sample, (LPVOID)pVideoRenderer, VideoRenderer_QueryAccept, &pVideoRenderer->csFilter, (IPin **)&pVideoRenderer->pInputPin);
360 pVideoRenderer->ppPins[0] = (IPin *)pVideoRenderer->pInputPin;
361 *ppv = (LPVOID)pVideoRenderer;
365 CoTaskMemFree(pVideoRenderer->ppPins);
366 DeleteCriticalSection(&pVideoRenderer->csFilter);
367 CoTaskMemFree(pVideoRenderer);
373 static HRESULT WINAPI VideoRenderer_QueryInterface(IBaseFilter * iface, REFIID riid, LPVOID * ppv)
375 VideoRendererImpl *This = (VideoRendererImpl *)iface;
376 TRACE("(%p/%p)->(%s, %p)\n", This, iface, qzdebugstr_guid(riid), ppv);
380 if (IsEqualIID(riid, &IID_IUnknown))
382 else if (IsEqualIID(riid, &IID_IPersist))
384 else if (IsEqualIID(riid, &IID_IMediaFilter))
386 else if (IsEqualIID(riid, &IID_IBaseFilter))
388 else if (IsEqualIID(riid, &IID_IBasicVideo))
389 *ppv = (LPVOID)&(This->IBasicVideo_vtbl);
390 else if (IsEqualIID(riid, &IID_IVideoWindow))
391 *ppv = (LPVOID)&(This->IVideoWindow_vtbl);
395 IUnknown_AddRef((IUnknown *)(*ppv));
399 FIXME("No interface for %s!\n", qzdebugstr_guid(riid));
401 return E_NOINTERFACE;
404 static ULONG WINAPI VideoRenderer_AddRef(IBaseFilter * iface)
406 VideoRendererImpl *This = (VideoRendererImpl *)iface;
407 ULONG refCount = InterlockedIncrement(&This->refCount);
409 TRACE("(%p/%p)->() AddRef from %ld\n", This, iface, refCount - 1);
414 static ULONG WINAPI VideoRenderer_Release(IBaseFilter * iface)
416 VideoRendererImpl *This = (VideoRendererImpl *)iface;
417 ULONG refCount = InterlockedDecrement(&This->refCount);
419 TRACE("(%p/%p)->() Release from %ld\n", This, iface, refCount + 1);
423 DeleteCriticalSection(&This->csFilter);
424 IReferenceClock_Release(This->pClock);
426 IPin_Release(This->ppPins[0]);
428 HeapFree(GetProcessHeap(), 0, This->ppPins);
431 TRACE("Destroying Video Renderer\n");
440 /** IPersist methods **/
442 static HRESULT WINAPI VideoRenderer_GetClassID(IBaseFilter * iface, CLSID * pClsid)
444 VideoRendererImpl *This = (VideoRendererImpl *)iface;
446 TRACE("(%p/%p)->(%p)\n", This, iface, pClsid);
448 *pClsid = CLSID_VideoRenderer;
453 /** IMediaFilter methods **/
455 static HRESULT WINAPI VideoRenderer_Stop(IBaseFilter * iface)
457 VideoRendererImpl *This = (VideoRendererImpl *)iface;
459 TRACE("(%p/%p)->()\n", This, iface);
461 EnterCriticalSection(&This->csFilter);
463 This->state = State_Stopped;
465 LeaveCriticalSection(&This->csFilter);
470 static HRESULT WINAPI VideoRenderer_Pause(IBaseFilter * iface)
472 VideoRendererImpl *This = (VideoRendererImpl *)iface;
474 TRACE("(%p/%p)->()\n", This, iface);
476 EnterCriticalSection(&This->csFilter);
478 This->state = State_Paused;
480 LeaveCriticalSection(&This->csFilter);
485 static HRESULT WINAPI VideoRenderer_Run(IBaseFilter * iface, REFERENCE_TIME tStart)
487 VideoRendererImpl *This = (VideoRendererImpl *)iface;
489 TRACE("(%p/%p)->(%s)\n", This, iface, wine_dbgstr_longlong(tStart));
491 EnterCriticalSection(&This->csFilter);
493 This->rtStreamStart = tStart;
494 This->state = State_Running;
496 LeaveCriticalSection(&This->csFilter);
501 static HRESULT WINAPI VideoRenderer_GetState(IBaseFilter * iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState)
503 VideoRendererImpl *This = (VideoRendererImpl *)iface;
505 TRACE("(%p/%p)->(%ld, %p)\n", This, iface, dwMilliSecsTimeout, pState);
507 EnterCriticalSection(&This->csFilter);
509 *pState = This->state;
511 LeaveCriticalSection(&This->csFilter);
516 static HRESULT WINAPI VideoRenderer_SetSyncSource(IBaseFilter * iface, IReferenceClock *pClock)
518 VideoRendererImpl *This = (VideoRendererImpl *)iface;
520 TRACE("(%p/%p)->(%p)\n", This, iface, pClock);
522 EnterCriticalSection(&This->csFilter);
525 IReferenceClock_Release(This->pClock);
526 This->pClock = pClock;
528 IReferenceClock_AddRef(This->pClock);
530 LeaveCriticalSection(&This->csFilter);
535 static HRESULT WINAPI VideoRenderer_GetSyncSource(IBaseFilter * iface, IReferenceClock **ppClock)
537 VideoRendererImpl *This = (VideoRendererImpl *)iface;
539 TRACE("(%p/%p)->(%p)\n", This, iface, ppClock);
541 EnterCriticalSection(&This->csFilter);
543 *ppClock = This->pClock;
544 IReferenceClock_AddRef(This->pClock);
546 LeaveCriticalSection(&This->csFilter);
551 /** IBaseFilter implementation **/
553 static HRESULT WINAPI VideoRenderer_EnumPins(IBaseFilter * iface, IEnumPins **ppEnum)
556 VideoRendererImpl *This = (VideoRendererImpl *)iface;
558 TRACE("(%p/%p)->(%p)\n", This, iface, ppEnum);
560 epd.cPins = 1; /* input pin */
561 epd.ppPins = This->ppPins;
562 return IEnumPinsImpl_Construct(&epd, ppEnum);
565 static HRESULT WINAPI VideoRenderer_FindPin(IBaseFilter * iface, LPCWSTR Id, IPin **ppPin)
567 VideoRendererImpl *This = (VideoRendererImpl *)iface;
569 TRACE("(%p/%p)->(%p,%p)\n", This, iface, debugstr_w(Id), ppPin);
571 FIXME("VideoRenderer::FindPin(...)\n");
573 /* FIXME: critical section */
578 static HRESULT WINAPI VideoRenderer_QueryFilterInfo(IBaseFilter * iface, FILTER_INFO *pInfo)
580 VideoRendererImpl *This = (VideoRendererImpl *)iface;
582 TRACE("(%p/%p)->(%p)\n", This, iface, pInfo);
584 strcpyW(pInfo->achName, This->filterInfo.achName);
585 pInfo->pGraph = This->filterInfo.pGraph;
588 IFilterGraph_AddRef(pInfo->pGraph);
593 static HRESULT WINAPI VideoRenderer_JoinFilterGraph(IBaseFilter * iface, IFilterGraph *pGraph, LPCWSTR pName)
595 VideoRendererImpl *This = (VideoRendererImpl *)iface;
597 TRACE("(%p/%p)->(%p, %s)\n", This, iface, pGraph, debugstr_w(pName));
599 EnterCriticalSection(&This->csFilter);
602 strcpyW(This->filterInfo.achName, pName);
604 *This->filterInfo.achName = '\0';
605 This->filterInfo.pGraph = pGraph; /* NOTE: do NOT increase ref. count */
607 LeaveCriticalSection(&This->csFilter);
612 static HRESULT WINAPI VideoRenderer_QueryVendorInfo(IBaseFilter * iface, LPWSTR *pVendorInfo)
614 VideoRendererImpl *This = (VideoRendererImpl *)iface;
615 TRACE("(%p/%p)->(%p)\n", This, iface, pVendorInfo);
619 static const IBaseFilterVtbl VideoRenderer_Vtbl =
621 VideoRenderer_QueryInterface,
622 VideoRenderer_AddRef,
623 VideoRenderer_Release,
624 VideoRenderer_GetClassID,
628 VideoRenderer_GetState,
629 VideoRenderer_SetSyncSource,
630 VideoRenderer_GetSyncSource,
631 VideoRenderer_EnumPins,
632 VideoRenderer_FindPin,
633 VideoRenderer_QueryFilterInfo,
634 VideoRenderer_JoinFilterGraph,
635 VideoRenderer_QueryVendorInfo
638 static const IPinVtbl VideoRenderer_InputPin_Vtbl =
640 InputPin_QueryInterface,
644 InputPin_ReceiveConnection,
646 IPinImpl_ConnectedTo,
647 IPinImpl_ConnectionMediaType,
648 IPinImpl_QueryPinInfo,
649 IPinImpl_QueryDirection,
651 IPinImpl_QueryAccept,
652 IPinImpl_EnumMediaTypes,
653 IPinImpl_QueryInternalConnections,
654 InputPin_EndOfStream,
660 /*** IUnknown methods ***/
661 static HRESULT WINAPI Basicvideo_QueryInterface(IBasicVideo *iface,
664 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
666 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
668 return VideoRenderer_QueryInterface((IBaseFilter*)This, riid, ppvObj);
671 static ULONG WINAPI Basicvideo_AddRef(IBasicVideo *iface) {
672 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
674 TRACE("(%p/%p)->()\n", This, iface);
676 return VideoRenderer_AddRef((IBaseFilter*)This);
679 static ULONG WINAPI Basicvideo_Release(IBasicVideo *iface) {
680 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
682 TRACE("(%p/%p)->()\n", This, iface);
684 return VideoRenderer_Release((IBaseFilter*)This);
687 /*** IDispatch methods ***/
688 static HRESULT WINAPI Basicvideo_GetTypeInfoCount(IBasicVideo *iface,
690 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
692 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
697 static HRESULT WINAPI Basicvideo_GetTypeInfo(IBasicVideo *iface,
700 ITypeInfo**ppTInfo) {
701 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
703 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
708 static HRESULT WINAPI Basicvideo_GetIDsOfNames(IBasicVideo *iface,
714 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
716 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
721 static HRESULT WINAPI Basicvideo_Invoke(IBasicVideo *iface,
726 DISPPARAMS*pDispParams,
730 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
732 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);
737 /*** IBasicVideo methods ***/
738 static HRESULT WINAPI Basicvideo_get_AvgTimePerFrame(IBasicVideo *iface,
739 REFTIME *pAvgTimePerFrame) {
740 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
742 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pAvgTimePerFrame);
747 static HRESULT WINAPI Basicvideo_get_BitRate(IBasicVideo *iface,
749 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
751 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBitRate);
756 static HRESULT WINAPI Basicvideo_get_BitErrorRate(IBasicVideo *iface,
757 long *pBitErrorRate) {
758 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
760 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBitErrorRate);
765 static HRESULT WINAPI Basicvideo_get_VideoWidth(IBasicVideo *iface,
767 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
769 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVideoWidth);
774 static HRESULT WINAPI Basicvideo_get_VideoHeight(IBasicVideo *iface,
775 long *pVideoHeight) {
776 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
778 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVideoHeight);
783 static HRESULT WINAPI Basicvideo_put_SourceLeft(IBasicVideo *iface,
785 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
787 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceLeft);
792 static HRESULT WINAPI Basicvideo_get_SourceLeft(IBasicVideo *iface,
794 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
796 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceLeft);
801 static HRESULT WINAPI Basicvideo_put_SourceWidth(IBasicVideo *iface,
803 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
805 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceWidth);
810 static HRESULT WINAPI Basicvideo_get_SourceWidth(IBasicVideo *iface,
811 long *pSourceWidth) {
812 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
814 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceWidth);
819 static HRESULT WINAPI Basicvideo_put_SourceTop(IBasicVideo *iface,
821 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
823 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceTop);
828 static HRESULT WINAPI Basicvideo_get_SourceTop(IBasicVideo *iface,
830 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
832 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceTop);
837 static HRESULT WINAPI Basicvideo_put_SourceHeight(IBasicVideo *iface,
839 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
841 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, SourceHeight);
846 static HRESULT WINAPI Basicvideo_get_SourceHeight(IBasicVideo *iface,
847 long *pSourceHeight) {
848 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
850 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pSourceHeight);
855 static HRESULT WINAPI Basicvideo_put_DestinationLeft(IBasicVideo *iface,
856 long DestinationLeft) {
857 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
859 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationLeft);
864 static HRESULT WINAPI Basicvideo_get_DestinationLeft(IBasicVideo *iface,
865 long *pDestinationLeft) {
866 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
868 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationLeft);
873 static HRESULT WINAPI Basicvideo_put_DestinationWidth(IBasicVideo *iface,
874 long DestinationWidth) {
875 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
877 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationWidth);
882 static HRESULT WINAPI Basicvideo_get_DestinationWidth(IBasicVideo *iface,
883 long *pDestinationWidth) {
884 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
886 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationWidth);
891 static HRESULT WINAPI Basicvideo_put_DestinationTop(IBasicVideo *iface,
892 long DestinationTop) {
893 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
895 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationTop);
900 static HRESULT WINAPI Basicvideo_get_DestinationTop(IBasicVideo *iface,
901 long *pDestinationTop) {
902 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
904 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationTop);
909 static HRESULT WINAPI Basicvideo_put_DestinationHeight(IBasicVideo *iface,
910 long DestinationHeight) {
911 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
913 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, DestinationHeight);
918 static HRESULT WINAPI Basicvideo_get_DestinationHeight(IBasicVideo *iface,
919 long *pDestinationHeight) {
920 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
922 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pDestinationHeight);
927 static HRESULT WINAPI Basicvideo_SetSourcePosition(IBasicVideo *iface,
932 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
934 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
939 static HRESULT WINAPI Basicvideo_GetSourcePosition(IBasicVideo *iface,
944 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
946 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
951 static HRESULT WINAPI Basicvideo_SetDefaultSourcePosition(IBasicVideo *iface) {
952 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
954 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
959 static HRESULT WINAPI Basicvideo_SetDestinationPosition(IBasicVideo *iface,
964 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
966 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
971 static HRESULT WINAPI Basicvideo_GetDestinationPosition(IBasicVideo *iface,
976 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
978 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
983 static HRESULT WINAPI Basicvideo_SetDefaultDestinationPosition(IBasicVideo *iface) {
984 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
986 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
991 static HRESULT WINAPI Basicvideo_GetVideoSize(IBasicVideo *iface,
994 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
996 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1001 static HRESULT WINAPI Basicvideo_GetVideoPaletteEntries(IBasicVideo *iface,
1006 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
1008 TRACE("(%p/%p)->(%ld, %ld, %p, %p): stub !!!\n", This, iface, StartIndex, Entries, pRetrieved, pPalette);
1013 static HRESULT WINAPI Basicvideo_GetCurrentImage(IBasicVideo *iface,
1016 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
1018 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pBufferSize, pDIBImage);
1023 static HRESULT WINAPI Basicvideo_IsUsingDefaultSource(IBasicVideo *iface) {
1024 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
1026 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1031 static HRESULT WINAPI Basicvideo_IsUsingDefaultDestination(IBasicVideo *iface) {
1032 ICOM_THIS_MULTI(VideoRendererImpl, IBasicVideo_vtbl, iface);
1034 TRACE("(%p/%p)->(): stub !!!\n", This, iface);
1040 static IBasicVideoVtbl IBasicVideo_VTable =
1042 Basicvideo_QueryInterface,
1045 Basicvideo_GetTypeInfoCount,
1046 Basicvideo_GetTypeInfo,
1047 Basicvideo_GetIDsOfNames,
1049 Basicvideo_get_AvgTimePerFrame,
1050 Basicvideo_get_BitRate,
1051 Basicvideo_get_BitErrorRate,
1052 Basicvideo_get_VideoWidth,
1053 Basicvideo_get_VideoHeight,
1054 Basicvideo_put_SourceLeft,
1055 Basicvideo_get_SourceLeft,
1056 Basicvideo_put_SourceWidth,
1057 Basicvideo_get_SourceWidth,
1058 Basicvideo_put_SourceTop,
1059 Basicvideo_get_SourceTop,
1060 Basicvideo_put_SourceHeight,
1061 Basicvideo_get_SourceHeight,
1062 Basicvideo_put_DestinationLeft,
1063 Basicvideo_get_DestinationLeft,
1064 Basicvideo_put_DestinationWidth,
1065 Basicvideo_get_DestinationWidth,
1066 Basicvideo_put_DestinationTop,
1067 Basicvideo_get_DestinationTop,
1068 Basicvideo_put_DestinationHeight,
1069 Basicvideo_get_DestinationHeight,
1070 Basicvideo_SetSourcePosition,
1071 Basicvideo_GetSourcePosition,
1072 Basicvideo_SetDefaultSourcePosition,
1073 Basicvideo_SetDestinationPosition,
1074 Basicvideo_GetDestinationPosition,
1075 Basicvideo_SetDefaultDestinationPosition,
1076 Basicvideo_GetVideoSize,
1077 Basicvideo_GetVideoPaletteEntries,
1078 Basicvideo_GetCurrentImage,
1079 Basicvideo_IsUsingDefaultSource,
1080 Basicvideo_IsUsingDefaultDestination
1084 /*** IUnknown methods ***/
1085 static HRESULT WINAPI Videowindow_QueryInterface(IVideoWindow *iface,
1088 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1090 TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
1092 return VideoRenderer_QueryInterface((IBaseFilter*)This, riid, ppvObj);
1095 static ULONG WINAPI Videowindow_AddRef(IVideoWindow *iface) {
1096 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1098 TRACE("(%p/%p)->()\n", This, iface);
1100 return VideoRenderer_AddRef((IBaseFilter*)This);
1103 static ULONG WINAPI Videowindow_Release(IVideoWindow *iface) {
1104 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1106 TRACE("(%p/%p)->()\n", This, iface);
1108 return VideoRenderer_Release((IBaseFilter*)This);
1111 /*** IDispatch methods ***/
1112 static HRESULT WINAPI Videowindow_GetTypeInfoCount(IVideoWindow *iface,
1114 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1116 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
1121 static HRESULT WINAPI Videowindow_GetTypeInfo(IVideoWindow *iface,
1124 ITypeInfo**ppTInfo) {
1125 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1127 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
1132 static HRESULT WINAPI Videowindow_GetIDsOfNames(IVideoWindow *iface,
1138 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1140 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
1145 static HRESULT WINAPI Videowindow_Invoke(IVideoWindow *iface,
1146 DISPID dispIdMember,
1150 DISPPARAMS*pDispParams,
1152 EXCEPINFO*pExepInfo,
1154 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1156 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);
1161 /*** IVideoWindow methods ***/
1162 static HRESULT WINAPI Videowindow_put_Caption(IVideoWindow *iface,
1164 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1166 TRACE("(%p/%p)->(%s (%p)): stub !!!\n", This, iface, debugstr_w(strCaption), strCaption);
1171 static HRESULT WINAPI Videowindow_get_Caption(IVideoWindow *iface,
1173 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1175 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, strCaption);
1180 static HRESULT WINAPI Videowindow_put_WindowStyle(IVideoWindow *iface,
1182 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1184 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowStyle);
1189 static HRESULT WINAPI Videowindow_get_WindowStyle(IVideoWindow *iface,
1190 long *WindowStyle) {
1191 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1193 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowStyle);
1198 static HRESULT WINAPI Videowindow_put_WindowStyleEx(IVideoWindow *iface,
1199 long WindowStyleEx) {
1200 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1202 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowStyleEx);
1207 static HRESULT WINAPI Videowindow_get_WindowStyleEx(IVideoWindow *iface,
1208 long *WindowStyleEx) {
1209 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1211 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowStyleEx);
1216 static HRESULT WINAPI Videowindow_put_AutoShow(IVideoWindow *iface,
1218 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1220 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, AutoShow);
1225 static HRESULT WINAPI Videowindow_get_AutoShow(IVideoWindow *iface,
1227 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1229 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, AutoShow);
1234 static HRESULT WINAPI Videowindow_put_WindowState(IVideoWindow *iface,
1236 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1238 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, WindowState);
1243 static HRESULT WINAPI Videowindow_get_WindowState(IVideoWindow *iface,
1244 long *WindowState) {
1245 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1247 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, WindowState);
1252 static HRESULT WINAPI Videowindow_put_BackgroundPalette(IVideoWindow *iface,
1253 long BackgroundPalette) {
1254 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1256 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, BackgroundPalette);
1261 static HRESULT WINAPI Videowindow_get_BackgroundPalette(IVideoWindow *iface,
1262 long *pBackgroundPalette) {
1263 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1265 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pBackgroundPalette);
1270 static HRESULT WINAPI Videowindow_put_Visible(IVideoWindow *iface,
1272 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1274 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Visible);
1279 static HRESULT WINAPI Videowindow_get_Visible(IVideoWindow *iface,
1281 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1283 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pVisible);
1288 static HRESULT WINAPI Videowindow_put_Left(IVideoWindow *iface,
1290 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1292 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Left);
1297 static HRESULT WINAPI Videowindow_get_Left(IVideoWindow *iface,
1299 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1301 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pLeft);
1306 static HRESULT WINAPI Videowindow_put_Width(IVideoWindow *iface,
1308 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1310 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Width);
1315 static HRESULT WINAPI Videowindow_get_Width(IVideoWindow *iface,
1317 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1319 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pWidth);
1324 static HRESULT WINAPI Videowindow_put_Top(IVideoWindow *iface,
1326 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1328 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Top);
1333 static HRESULT WINAPI Videowindow_get_Top(IVideoWindow *iface,
1335 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1337 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pTop);
1342 static HRESULT WINAPI Videowindow_put_Height(IVideoWindow *iface,
1344 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1346 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Height);
1351 static HRESULT WINAPI Videowindow_get_Height(IVideoWindow *iface,
1353 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1355 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pHeight);
1360 static HRESULT WINAPI Videowindow_put_Owner(IVideoWindow *iface,
1362 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1364 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Owner);
1369 static HRESULT WINAPI Videowindow_get_Owner(IVideoWindow *iface,
1371 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1373 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Owner);
1378 static HRESULT WINAPI Videowindow_put_MessageDrain(IVideoWindow *iface,
1380 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1382 TRACE("(%p/%p)->(%08lx): stub !!!\n", This, iface, (DWORD) Drain);
1387 static HRESULT WINAPI Videowindow_get_MessageDrain(IVideoWindow *iface,
1389 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1391 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, Drain);
1396 static HRESULT WINAPI Videowindow_get_BorderColor(IVideoWindow *iface,
1398 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1400 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, Color);
1405 static HRESULT WINAPI Videowindow_put_BorderColor(IVideoWindow *iface,
1407 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1409 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Color);
1414 static HRESULT WINAPI Videowindow_get_FullScreenMode(IVideoWindow *iface,
1415 long *FullScreenMode) {
1416 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1418 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, FullScreenMode);
1423 static HRESULT WINAPI Videowindow_put_FullScreenMode(IVideoWindow *iface,
1424 long FullScreenMode) {
1425 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1427 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, FullScreenMode);
1432 static HRESULT WINAPI Videowindow_SetWindowForeground(IVideoWindow *iface,
1434 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1436 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, Focus);
1441 static HRESULT WINAPI Videowindow_NotifyOwnerMessage(IVideoWindow *iface,
1446 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1448 TRACE("(%p/%p)->(%08lx, %ld, %08lx, %08lx): stub !!!\n", This, iface, (DWORD) hwnd, uMsg, wParam, lParam);
1453 static HRESULT WINAPI Videowindow_SetWindowPosition(IVideoWindow *iface,
1458 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1460 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This, iface, Left, Top, Width, Height);
1465 static HRESULT WINAPI Videowindow_GetWindowPosition(IVideoWindow *iface,
1470 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1472 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1477 static HRESULT WINAPI Videowindow_GetMinIdealImageSize(IVideoWindow *iface,
1480 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1482 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1487 static HRESULT WINAPI Videowindow_GetMaxIdealImageSize(IVideoWindow *iface,
1490 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1492 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This, iface, pWidth, pHeight);
1497 static HRESULT WINAPI Videowindow_GetRestorePosition(IVideoWindow *iface,
1502 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1504 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
1509 static HRESULT WINAPI Videowindow_HideCursor(IVideoWindow *iface,
1511 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1513 TRACE("(%p/%p)->(%ld): stub !!!\n", This, iface, HideCursor);
1518 static HRESULT WINAPI Videowindow_IsCursorHidden(IVideoWindow *iface,
1519 long *CursorHidden) {
1520 ICOM_THIS_MULTI(VideoRendererImpl, IVideoWindow_vtbl, iface);
1522 TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, CursorHidden);
1527 static IVideoWindowVtbl IVideoWindow_VTable =
1529 Videowindow_QueryInterface,
1531 Videowindow_Release,
1532 Videowindow_GetTypeInfoCount,
1533 Videowindow_GetTypeInfo,
1534 Videowindow_GetIDsOfNames,
1536 Videowindow_put_Caption,
1537 Videowindow_get_Caption,
1538 Videowindow_put_WindowStyle,
1539 Videowindow_get_WindowStyle,
1540 Videowindow_put_WindowStyleEx,
1541 Videowindow_get_WindowStyleEx,
1542 Videowindow_put_AutoShow,
1543 Videowindow_get_AutoShow,
1544 Videowindow_put_WindowState,
1545 Videowindow_get_WindowState,
1546 Videowindow_put_BackgroundPalette,
1547 Videowindow_get_BackgroundPalette,
1548 Videowindow_put_Visible,
1549 Videowindow_get_Visible,
1550 Videowindow_put_Left,
1551 Videowindow_get_Left,
1552 Videowindow_put_Width,
1553 Videowindow_get_Width,
1554 Videowindow_put_Top,
1555 Videowindow_get_Top,
1556 Videowindow_put_Height,
1557 Videowindow_get_Height,
1558 Videowindow_put_Owner,
1559 Videowindow_get_Owner,
1560 Videowindow_put_MessageDrain,
1561 Videowindow_get_MessageDrain,
1562 Videowindow_get_BorderColor,
1563 Videowindow_put_BorderColor,
1564 Videowindow_get_FullScreenMode,
1565 Videowindow_put_FullScreenMode,
1566 Videowindow_SetWindowForeground,
1567 Videowindow_NotifyOwnerMessage,
1568 Videowindow_SetWindowPosition,
1569 Videowindow_GetWindowPosition,
1570 Videowindow_GetMinIdealImageSize,
1571 Videowindow_GetMaxIdealImageSize,
1572 Videowindow_GetRestorePosition,
1573 Videowindow_HideCursor,
1574 Videowindow_IsCursorHidden