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"
41 #include "wine/unicode.h"
42 #include "wine/debug.h"
44 WINE_DEFAULT_DEBUG_CHANNEL(quartz
);
46 static const WCHAR wcsInputPinName
[] = {'i','n','p','u','t',' ','p','i','n',0};
48 static const IBaseFilterVtbl VideoRenderer_Vtbl
;
49 static IBasicVideoVtbl IBasicVideo_VTable
;
50 static IVideoWindowVtbl IVideoWindow_VTable
;
51 static const IPinVtbl VideoRenderer_InputPin_Vtbl
;
53 typedef struct VideoRendererImpl
55 const IBaseFilterVtbl
* lpVtbl
;
56 IBasicVideoVtbl
* IBasicVideo_vtbl
;
57 IVideoWindowVtbl
* IVideoWindow_vtbl
;
60 CRITICAL_SECTION csFilter
;
62 REFERENCE_TIME rtStreamStart
;
63 IReferenceClock
* pClock
;
64 FILTER_INFO filterInfo
;
70 LPDIRECTDRAWSURFACE surface
;
71 LPDIRECTDRAWSURFACE backbuffer
;
75 static const IMemInputPinVtbl MemInputPin_Vtbl
=
77 MemInputPin_QueryInterface
,
80 MemInputPin_GetAllocator
,
81 MemInputPin_NotifyAllocator
,
82 MemInputPin_GetAllocatorRequirements
,
84 MemInputPin_ReceiveMultiple
,
85 MemInputPin_ReceiveCanBlock
88 static HRESULT
VideoRenderer_InputPin_Construct(const PIN_INFO
* pPinInfo
, SAMPLEPROC pSampleProc
, LPVOID pUserData
, QUERYACCEPTPROC pQueryAccept
, LPCRITICAL_SECTION pCritSec
, IPin
** ppPin
)
94 if (pPinInfo
->dir
!= PINDIR_INPUT
)
96 ERR("Pin direction(%x) != PINDIR_INPUT\n", pPinInfo
->dir
);
100 pPinImpl
= CoTaskMemAlloc(sizeof(*pPinImpl
));
103 return E_OUTOFMEMORY
;
105 if (SUCCEEDED(InputPin_Init(pPinInfo
, pSampleProc
, pUserData
, pQueryAccept
, pCritSec
, pPinImpl
)))
107 pPinImpl
->pin
.lpVtbl
= &VideoRenderer_InputPin_Vtbl
;
108 pPinImpl
->lpVtblMemInput
= &MemInputPin_Vtbl
;
110 *ppPin
= (IPin
*)(&pPinImpl
->pin
.lpVtbl
);
116 static HRESULT
VideoRenderer_CreatePrimarySurface(IBaseFilter
* iface
)
121 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
123 hr
= DirectDrawCreate(NULL
, &This
->ddraw
, NULL
);
126 ERR("Cannot create Direct Draw object\n");
130 hr
= IDirectDraw_SetCooperativeLevel(This
->ddraw
, NULL
, DDSCL_FULLSCREEN
|DDSCL_EXCLUSIVE
);
132 ERR("Cannot set fulscreen mode\n");
136 sdesc
.dwSize
= sizeof(sdesc
);
137 sdesc
.dwFlags
= DDSD_CAPS
| DDSD_BACKBUFFERCOUNT
;
138 sdesc
.ddsCaps
.dwCaps
= DDSCAPS_PRIMARYSURFACE
| DDSCAPS_COMPLEX
| DDSCAPS_FLIP
;
139 sdesc
.dwBackBufferCount
= 1;
141 hr
= IDirectDraw_CreateSurface(This
->ddraw
, &sdesc
, &This
->surface
, NULL
);
143 ERR("Cannot create surface\n");
147 hr
= IDirectDrawSurface_GetSurfaceDesc(This
->surface
, &sdesc
);
149 ERR("Cannot get surface information\n");
152 TRACE("Width = %ld\n", sdesc
.dwWidth
);
153 TRACE("Height = %ld\n", sdesc
.dwHeight
);
154 TRACE("Pitch = %ld\n", sdesc
.u1
.lPitch
);
155 TRACE("Depth = %ld\n", sdesc
.ddpfPixelFormat
.u1
.dwRGBBitCount
);
157 ddscaps
.dwCaps
= DDSCAPS_BACKBUFFER
;
158 hr
= IDirectDrawSurface_GetAttachedSurface(This
->surface
, &ddscaps
, &This
->backbuffer
);
160 ERR("Cannot get backbuffer\n");
167 static DWORD
VideoRenderer_SendSampleData(VideoRendererImpl
* This
, LPBYTE data
, DWORD size
)
169 VIDEOINFOHEADER
* format
;
178 LPBYTE palette
= NULL
;
180 TRACE("%p %p %ld\n", This
, data
, size
);
182 sdesc
.dwSize
= sizeof(sdesc
);
183 hr
= IPin_ConnectionMediaType(This
->ppPins
[0], &amt
);
185 ERR("Unable to retrieve media type\n");
188 format
= (VIDEOINFOHEADER
*)amt
.pbFormat
;
190 TRACE("biSize = %ld\n", format
->bmiHeader
.biSize
);
191 TRACE("biWidth = %ld\n", format
->bmiHeader
.biWidth
);
192 TRACE("biHeigth = %ld\n", format
->bmiHeader
.biHeight
);
193 TRACE("biPlanes = %d\n", format
->bmiHeader
.biPlanes
);
194 TRACE("biBitCount = %d\n", format
->bmiHeader
.biBitCount
);
195 TRACE("biCompression = %s\n", debugstr_an((LPSTR
)&(format
->bmiHeader
.biCompression
), 4));
196 TRACE("biSizeImage = %ld\n", format
->bmiHeader
.biSizeImage
);
198 width
= format
->bmiHeader
.biWidth
;
199 height
= format
->bmiHeader
.biHeight
;
200 palette
= ((LPBYTE
)&format
->bmiHeader
) + format
->bmiHeader
.biSize
;
202 hr
= IDirectDrawSurface_Lock(This
->backbuffer
, NULL
, &sdesc
, DDLOCK_WRITEONLY
, NULL
);
204 ERR("Cannot lock backbuffer\n");
208 ptr
= sdesc
.lpSurface
;
210 /* FIXME: We may use Direct Draw services to do the conversion for us */
211 if ((sdesc
.ddpfPixelFormat
.u1
.dwRGBBitCount
== 24) || (sdesc
.ddpfPixelFormat
.u1
.dwRGBBitCount
== 32))
213 if (format
->bmiHeader
.biBitCount
== 8)
215 int psz
= sdesc
.ddpfPixelFormat
.u1
.dwRGBBitCount
== 32 ? 4 : 3;
216 for (j
= 0; j
< height
; j
++)
217 for (i
= 0; i
< width
; i
++)
219 *(ptr
+ i
*psz
+ 0 + j
* sdesc
.u1
.lPitch
) = palette
[*(data
+ i
+ 0 + (height
-1-j
) * width
)*4 + 0];
220 *(ptr
+ i
*psz
+ 1 + j
* sdesc
.u1
.lPitch
) = palette
[*(data
+ i
+ 0 + (height
-1-j
) * width
)*4 + 1];
221 *(ptr
+ i
*psz
+ 2 + j
* sdesc
.u1
.lPitch
) = palette
[*(data
+ i
+ 0 + (height
-1-j
) * width
)*4 + 2];
223 *(ptr
+ i
*psz
+ 3 + j
* sdesc
.u1
.lPitch
) = 0xFF;
226 else if ((format
->bmiHeader
.biBitCount
== 24) || (format
->bmiHeader
.biBitCount
== 32))
228 int dpsz
= sdesc
.ddpfPixelFormat
.u1
.dwRGBBitCount
== 32 ? 4 : 3;
229 int spsz
= format
->bmiHeader
.biBitCount
== 32 ? 4 : 3;
230 for (j
= 0; j
< height
; j
++)
231 for (i
= 0; i
< width
; i
++)
233 *(ptr
+ i
*dpsz
+ 0 + j
* sdesc
.u1
.lPitch
) = *(data
+ (i
+ 0 + (height
-1-j
) * width
)*spsz
+ 0);
234 *(ptr
+ i
*dpsz
+ 1 + j
* sdesc
.u1
.lPitch
) = *(data
+ (i
+ 0 + (height
-1-j
) * width
)*spsz
+ 1);
235 *(ptr
+ i
*dpsz
+ 2 + j
* sdesc
.u1
.lPitch
) = *(data
+ (i
+ 0 + (height
-1-j
) * width
)*spsz
+ 2);
237 *(ptr
+ i
*dpsz
+ 3 + j
* sdesc
.u1
.lPitch
) = 0xFF;
241 FIXME("Source size with a depths other than 8 (paletted), 24 or 32 bits are not yet supported\n");
244 FIXME("Destination depths with a depth other than 24 or 32 bits are not yet supported\n");
246 hr
= IDirectDrawSurface_Unlock(This
->backbuffer
, NULL
);
248 ERR("Cannot unlock backbuffer\n");
252 hr
= IDirectDrawSurface_Flip(This
->surface
, NULL
, DDFLIP_WAIT
);
254 ERR("Cannot unlock backbuffer\n");
261 static HRESULT
VideoRenderer_Sample(LPVOID iface
, IMediaSample
* pSample
)
263 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
264 LPBYTE pbSrcStream
= NULL
;
265 long cbSrcStream
= 0;
266 REFERENCE_TIME tStart
, tStop
;
269 TRACE("%p %p\n", iface
, pSample
);
271 hr
= IMediaSample_GetPointer(pSample
, &pbSrcStream
);
274 ERR("Cannot get pointer to sample data (%lx)\n", hr
);
278 hr
= IMediaSample_GetTime(pSample
, &tStart
, &tStop
);
280 ERR("Cannot get sample time (%lx)\n", hr
);
282 cbSrcStream
= IMediaSample_GetActualDataLength(pSample
);
284 TRACE("val %p %ld\n", pbSrcStream
, cbSrcStream
);
286 #if 0 /* For debugging purpose */
289 for(i
= 0; i
< cbSrcStream
; i
++)
291 if ((i
!=0) && !(i
%16))
293 DPRINTF("%02x ", pbSrcStream
[i
]);
302 hr
= VideoRenderer_CreatePrimarySurface(iface
);
305 ERR("Unable to create primary surface\n");
309 VideoRenderer_SendSampleData(This
, pbSrcStream
, cbSrcStream
);
314 static HRESULT
VideoRenderer_QueryAccept(LPVOID iface
, const AM_MEDIA_TYPE
* pmt
)
316 if ((IsEqualIID(&pmt
->majortype
, &MEDIATYPE_Video
) && IsEqualIID(&pmt
->subtype
, &MEDIASUBTYPE_RGB32
)) ||
317 (IsEqualIID(&pmt
->majortype
, &MEDIATYPE_Video
) && IsEqualIID(&pmt
->subtype
, &MEDIASUBTYPE_RGB24
)) ||
318 (IsEqualIID(&pmt
->majortype
, &MEDIATYPE_Video
) && IsEqualIID(&pmt
->subtype
, &MEDIASUBTYPE_RGB565
)) ||
319 (IsEqualIID(&pmt
->majortype
, &MEDIATYPE_Video
) && IsEqualIID(&pmt
->subtype
, &MEDIASUBTYPE_RGB8
)))
324 HRESULT
VideoRenderer_create(IUnknown
* pUnkOuter
, LPVOID
* ppv
)
328 VideoRendererImpl
* pVideoRenderer
;
330 TRACE("(%p, %p)\n", pUnkOuter
, ppv
);
335 return CLASS_E_NOAGGREGATION
;
337 pVideoRenderer
= CoTaskMemAlloc(sizeof(VideoRendererImpl
));
339 pVideoRenderer
->lpVtbl
= &VideoRenderer_Vtbl
;
340 pVideoRenderer
->IBasicVideo_vtbl
= &IBasicVideo_VTable
;
341 pVideoRenderer
->IVideoWindow_vtbl
= &IVideoWindow_VTable
;
343 pVideoRenderer
->refCount
= 1;
344 InitializeCriticalSection(&pVideoRenderer
->csFilter
);
345 pVideoRenderer
->state
= State_Stopped
;
346 pVideoRenderer
->pClock
= NULL
;
347 pVideoRenderer
->init
= 0;
348 ZeroMemory(&pVideoRenderer
->filterInfo
, sizeof(FILTER_INFO
));
350 pVideoRenderer
->ppPins
= CoTaskMemAlloc(1 * sizeof(IPin
*));
352 /* construct input pin */
353 piInput
.dir
= PINDIR_INPUT
;
354 piInput
.pFilter
= (IBaseFilter
*)pVideoRenderer
;
355 lstrcpynW(piInput
.achName
, wcsInputPinName
, sizeof(piInput
.achName
) / sizeof(piInput
.achName
[0]));
357 hr
= VideoRenderer_InputPin_Construct(&piInput
, VideoRenderer_Sample
, (LPVOID
)pVideoRenderer
, VideoRenderer_QueryAccept
, &pVideoRenderer
->csFilter
, (IPin
**)&pVideoRenderer
->pInputPin
);
361 pVideoRenderer
->ppPins
[0] = (IPin
*)pVideoRenderer
->pInputPin
;
362 *ppv
= (LPVOID
)pVideoRenderer
;
366 CoTaskMemFree(pVideoRenderer
->ppPins
);
367 DeleteCriticalSection(&pVideoRenderer
->csFilter
);
368 CoTaskMemFree(pVideoRenderer
);
374 static HRESULT WINAPI
VideoRenderer_QueryInterface(IBaseFilter
* iface
, REFIID riid
, LPVOID
* ppv
)
376 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
377 TRACE("(%p/%p)->(%s, %p)\n", This
, iface
, qzdebugstr_guid(riid
), ppv
);
381 if (IsEqualIID(riid
, &IID_IUnknown
))
383 else if (IsEqualIID(riid
, &IID_IPersist
))
385 else if (IsEqualIID(riid
, &IID_IMediaFilter
))
387 else if (IsEqualIID(riid
, &IID_IBaseFilter
))
389 else if (IsEqualIID(riid
, &IID_IBasicVideo
))
390 *ppv
= (LPVOID
)&(This
->IBasicVideo_vtbl
);
391 else if (IsEqualIID(riid
, &IID_IVideoWindow
))
392 *ppv
= (LPVOID
)&(This
->IVideoWindow_vtbl
);
396 IUnknown_AddRef((IUnknown
*)(*ppv
));
400 FIXME("No interface for %s!\n", qzdebugstr_guid(riid
));
402 return E_NOINTERFACE
;
405 static ULONG WINAPI
VideoRenderer_AddRef(IBaseFilter
* iface
)
407 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
408 ULONG refCount
= InterlockedIncrement(&This
->refCount
);
410 TRACE("(%p/%p)->() AddRef from %ld\n", This
, iface
, refCount
- 1);
415 static ULONG WINAPI
VideoRenderer_Release(IBaseFilter
* iface
)
417 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
418 ULONG refCount
= InterlockedDecrement(&This
->refCount
);
420 TRACE("(%p/%p)->() Release from %ld\n", This
, iface
, refCount
+ 1);
424 DeleteCriticalSection(&This
->csFilter
);
425 IReferenceClock_Release(This
->pClock
);
427 IPin_Release(This
->ppPins
[0]);
429 HeapFree(GetProcessHeap(), 0, This
->ppPins
);
432 TRACE("Destroying Video Renderer\n");
441 /** IPersist methods **/
443 static HRESULT WINAPI
VideoRenderer_GetClassID(IBaseFilter
* iface
, CLSID
* pClsid
)
445 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
447 TRACE("(%p/%p)->(%p)\n", This
, iface
, pClsid
);
449 *pClsid
= CLSID_VideoRenderer
;
454 /** IMediaFilter methods **/
456 static HRESULT WINAPI
VideoRenderer_Stop(IBaseFilter
* iface
)
458 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
460 TRACE("(%p/%p)->()\n", This
, iface
);
462 EnterCriticalSection(&This
->csFilter
);
464 This
->state
= State_Stopped
;
466 LeaveCriticalSection(&This
->csFilter
);
471 static HRESULT WINAPI
VideoRenderer_Pause(IBaseFilter
* iface
)
473 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
475 TRACE("(%p/%p)->()\n", This
, iface
);
477 EnterCriticalSection(&This
->csFilter
);
479 This
->state
= State_Paused
;
481 LeaveCriticalSection(&This
->csFilter
);
486 static HRESULT WINAPI
VideoRenderer_Run(IBaseFilter
* iface
, REFERENCE_TIME tStart
)
488 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
490 TRACE("(%p/%p)->(%s)\n", This
, iface
, wine_dbgstr_longlong(tStart
));
492 EnterCriticalSection(&This
->csFilter
);
494 This
->rtStreamStart
= tStart
;
495 This
->state
= State_Running
;
497 LeaveCriticalSection(&This
->csFilter
);
502 static HRESULT WINAPI
VideoRenderer_GetState(IBaseFilter
* iface
, DWORD dwMilliSecsTimeout
, FILTER_STATE
*pState
)
504 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
506 TRACE("(%p/%p)->(%ld, %p)\n", This
, iface
, dwMilliSecsTimeout
, pState
);
508 EnterCriticalSection(&This
->csFilter
);
510 *pState
= This
->state
;
512 LeaveCriticalSection(&This
->csFilter
);
517 static HRESULT WINAPI
VideoRenderer_SetSyncSource(IBaseFilter
* iface
, IReferenceClock
*pClock
)
519 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
521 TRACE("(%p/%p)->(%p)\n", This
, iface
, pClock
);
523 EnterCriticalSection(&This
->csFilter
);
526 IReferenceClock_Release(This
->pClock
);
527 This
->pClock
= pClock
;
529 IReferenceClock_AddRef(This
->pClock
);
531 LeaveCriticalSection(&This
->csFilter
);
536 static HRESULT WINAPI
VideoRenderer_GetSyncSource(IBaseFilter
* iface
, IReferenceClock
**ppClock
)
538 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
540 TRACE("(%p/%p)->(%p)\n", This
, iface
, ppClock
);
542 EnterCriticalSection(&This
->csFilter
);
544 *ppClock
= This
->pClock
;
545 IReferenceClock_AddRef(This
->pClock
);
547 LeaveCriticalSection(&This
->csFilter
);
552 /** IBaseFilter implementation **/
554 static HRESULT WINAPI
VideoRenderer_EnumPins(IBaseFilter
* iface
, IEnumPins
**ppEnum
)
557 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
559 TRACE("(%p/%p)->(%p)\n", This
, iface
, ppEnum
);
561 epd
.cPins
= 1; /* input pin */
562 epd
.ppPins
= This
->ppPins
;
563 return IEnumPinsImpl_Construct(&epd
, ppEnum
);
566 static HRESULT WINAPI
VideoRenderer_FindPin(IBaseFilter
* iface
, LPCWSTR Id
, IPin
**ppPin
)
568 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
570 TRACE("(%p/%p)->(%p,%p)\n", This
, iface
, debugstr_w(Id
), ppPin
);
572 FIXME("VideoRenderer::FindPin(...)\n");
574 /* FIXME: critical section */
579 static HRESULT WINAPI
VideoRenderer_QueryFilterInfo(IBaseFilter
* iface
, FILTER_INFO
*pInfo
)
581 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
583 TRACE("(%p/%p)->(%p)\n", This
, iface
, pInfo
);
585 strcpyW(pInfo
->achName
, This
->filterInfo
.achName
);
586 pInfo
->pGraph
= This
->filterInfo
.pGraph
;
589 IFilterGraph_AddRef(pInfo
->pGraph
);
594 static HRESULT WINAPI
VideoRenderer_JoinFilterGraph(IBaseFilter
* iface
, IFilterGraph
*pGraph
, LPCWSTR pName
)
596 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
598 TRACE("(%p/%p)->(%p, %s)\n", This
, iface
, pGraph
, debugstr_w(pName
));
600 EnterCriticalSection(&This
->csFilter
);
603 strcpyW(This
->filterInfo
.achName
, pName
);
605 *This
->filterInfo
.achName
= '\0';
606 This
->filterInfo
.pGraph
= pGraph
; /* NOTE: do NOT increase ref. count */
608 LeaveCriticalSection(&This
->csFilter
);
613 static HRESULT WINAPI
VideoRenderer_QueryVendorInfo(IBaseFilter
* iface
, LPWSTR
*pVendorInfo
)
615 VideoRendererImpl
*This
= (VideoRendererImpl
*)iface
;
616 TRACE("(%p/%p)->(%p)\n", This
, iface
, pVendorInfo
);
620 static const IBaseFilterVtbl VideoRenderer_Vtbl
=
622 VideoRenderer_QueryInterface
,
623 VideoRenderer_AddRef
,
624 VideoRenderer_Release
,
625 VideoRenderer_GetClassID
,
629 VideoRenderer_GetState
,
630 VideoRenderer_SetSyncSource
,
631 VideoRenderer_GetSyncSource
,
632 VideoRenderer_EnumPins
,
633 VideoRenderer_FindPin
,
634 VideoRenderer_QueryFilterInfo
,
635 VideoRenderer_JoinFilterGraph
,
636 VideoRenderer_QueryVendorInfo
639 static HRESULT WINAPI
VideoRenderer_InputPin_EndOfStream(IPin
* iface
)
641 InputPin
* This
= (InputPin
*)iface
;
642 IMediaEventSink
* pEventSink
;
645 TRACE("(%p/%p)->()\n", This
, iface
);
647 hr
= IFilterGraph_QueryInterface(((VideoRendererImpl
*)This
->pin
.pinInfo
.pFilter
)->filterInfo
.pGraph
, &IID_IMediaEventSink
, (LPVOID
*)&pEventSink
);
650 hr
= IMediaEventSink_Notify(pEventSink
, EC_COMPLETE
, S_OK
, 0);
651 IMediaEventSink_Release(pEventSink
);
657 static const IPinVtbl VideoRenderer_InputPin_Vtbl
=
659 InputPin_QueryInterface
,
663 InputPin_ReceiveConnection
,
665 IPinImpl_ConnectedTo
,
666 IPinImpl_ConnectionMediaType
,
667 IPinImpl_QueryPinInfo
,
668 IPinImpl_QueryDirection
,
670 IPinImpl_QueryAccept
,
671 IPinImpl_EnumMediaTypes
,
672 IPinImpl_QueryInternalConnections
,
673 VideoRenderer_InputPin_EndOfStream
,
679 /*** IUnknown methods ***/
680 static HRESULT WINAPI
Basicvideo_QueryInterface(IBasicVideo
*iface
,
683 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
685 TRACE("(%p/%p)->(%s (%p), %p)\n", This
, iface
, debugstr_guid(riid
), riid
, ppvObj
);
687 return VideoRenderer_QueryInterface((IBaseFilter
*)This
, riid
, ppvObj
);
690 static ULONG WINAPI
Basicvideo_AddRef(IBasicVideo
*iface
) {
691 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
693 TRACE("(%p/%p)->()\n", This
, iface
);
695 return VideoRenderer_AddRef((IBaseFilter
*)This
);
698 static ULONG WINAPI
Basicvideo_Release(IBasicVideo
*iface
) {
699 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
701 TRACE("(%p/%p)->()\n", This
, iface
);
703 return VideoRenderer_Release((IBaseFilter
*)This
);
706 /*** IDispatch methods ***/
707 static HRESULT WINAPI
Basicvideo_GetTypeInfoCount(IBasicVideo
*iface
,
709 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
711 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pctinfo
);
716 static HRESULT WINAPI
Basicvideo_GetTypeInfo(IBasicVideo
*iface
,
719 ITypeInfo
**ppTInfo
) {
720 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
722 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This
, iface
, iTInfo
, lcid
, ppTInfo
);
727 static HRESULT WINAPI
Basicvideo_GetIDsOfNames(IBasicVideo
*iface
,
733 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
735 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This
, iface
, debugstr_guid(riid
), riid
, rgszNames
, cNames
, lcid
, rgDispId
);
740 static HRESULT WINAPI
Basicvideo_Invoke(IBasicVideo
*iface
,
745 DISPPARAMS
*pDispParams
,
749 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
751 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
);
756 /*** IBasicVideo methods ***/
757 static HRESULT WINAPI
Basicvideo_get_AvgTimePerFrame(IBasicVideo
*iface
,
758 REFTIME
*pAvgTimePerFrame
) {
759 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
761 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pAvgTimePerFrame
);
766 static HRESULT WINAPI
Basicvideo_get_BitRate(IBasicVideo
*iface
,
768 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
770 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pBitRate
);
775 static HRESULT WINAPI
Basicvideo_get_BitErrorRate(IBasicVideo
*iface
,
776 long *pBitErrorRate
) {
777 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
779 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pBitErrorRate
);
784 static HRESULT WINAPI
Basicvideo_get_VideoWidth(IBasicVideo
*iface
,
786 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
788 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pVideoWidth
);
793 static HRESULT WINAPI
Basicvideo_get_VideoHeight(IBasicVideo
*iface
,
794 long *pVideoHeight
) {
795 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
797 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pVideoHeight
);
802 static HRESULT WINAPI
Basicvideo_put_SourceLeft(IBasicVideo
*iface
,
804 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
806 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, SourceLeft
);
811 static HRESULT WINAPI
Basicvideo_get_SourceLeft(IBasicVideo
*iface
,
813 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
815 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pSourceLeft
);
820 static HRESULT WINAPI
Basicvideo_put_SourceWidth(IBasicVideo
*iface
,
822 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
824 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, SourceWidth
);
829 static HRESULT WINAPI
Basicvideo_get_SourceWidth(IBasicVideo
*iface
,
830 long *pSourceWidth
) {
831 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
833 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pSourceWidth
);
838 static HRESULT WINAPI
Basicvideo_put_SourceTop(IBasicVideo
*iface
,
840 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
842 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, SourceTop
);
847 static HRESULT WINAPI
Basicvideo_get_SourceTop(IBasicVideo
*iface
,
849 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
851 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pSourceTop
);
856 static HRESULT WINAPI
Basicvideo_put_SourceHeight(IBasicVideo
*iface
,
858 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
860 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, SourceHeight
);
865 static HRESULT WINAPI
Basicvideo_get_SourceHeight(IBasicVideo
*iface
,
866 long *pSourceHeight
) {
867 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
869 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pSourceHeight
);
874 static HRESULT WINAPI
Basicvideo_put_DestinationLeft(IBasicVideo
*iface
,
875 long DestinationLeft
) {
876 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
878 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, DestinationLeft
);
883 static HRESULT WINAPI
Basicvideo_get_DestinationLeft(IBasicVideo
*iface
,
884 long *pDestinationLeft
) {
885 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
887 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pDestinationLeft
);
892 static HRESULT WINAPI
Basicvideo_put_DestinationWidth(IBasicVideo
*iface
,
893 long DestinationWidth
) {
894 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
896 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, DestinationWidth
);
901 static HRESULT WINAPI
Basicvideo_get_DestinationWidth(IBasicVideo
*iface
,
902 long *pDestinationWidth
) {
903 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
905 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pDestinationWidth
);
910 static HRESULT WINAPI
Basicvideo_put_DestinationTop(IBasicVideo
*iface
,
911 long DestinationTop
) {
912 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
914 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, DestinationTop
);
919 static HRESULT WINAPI
Basicvideo_get_DestinationTop(IBasicVideo
*iface
,
920 long *pDestinationTop
) {
921 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
923 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pDestinationTop
);
928 static HRESULT WINAPI
Basicvideo_put_DestinationHeight(IBasicVideo
*iface
,
929 long DestinationHeight
) {
930 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
932 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, DestinationHeight
);
937 static HRESULT WINAPI
Basicvideo_get_DestinationHeight(IBasicVideo
*iface
,
938 long *pDestinationHeight
) {
939 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
941 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pDestinationHeight
);
946 static HRESULT WINAPI
Basicvideo_SetSourcePosition(IBasicVideo
*iface
,
951 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
953 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This
, iface
, Left
, Top
, Width
, Height
);
958 static HRESULT WINAPI
Basicvideo_GetSourcePosition(IBasicVideo
*iface
,
963 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
965 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This
, iface
, pLeft
, pTop
, pWidth
, pHeight
);
970 static HRESULT WINAPI
Basicvideo_SetDefaultSourcePosition(IBasicVideo
*iface
) {
971 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
973 TRACE("(%p/%p)->(): stub !!!\n", This
, iface
);
978 static HRESULT WINAPI
Basicvideo_SetDestinationPosition(IBasicVideo
*iface
,
983 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
985 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This
, iface
, Left
, Top
, Width
, Height
);
990 static HRESULT WINAPI
Basicvideo_GetDestinationPosition(IBasicVideo
*iface
,
995 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
997 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This
, iface
, pLeft
, pTop
, pWidth
, pHeight
);
1002 static HRESULT WINAPI
Basicvideo_SetDefaultDestinationPosition(IBasicVideo
*iface
) {
1003 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
1005 TRACE("(%p/%p)->(): stub !!!\n", This
, iface
);
1010 static HRESULT WINAPI
Basicvideo_GetVideoSize(IBasicVideo
*iface
,
1013 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
1015 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This
, iface
, pWidth
, pHeight
);
1020 static HRESULT WINAPI
Basicvideo_GetVideoPaletteEntries(IBasicVideo
*iface
,
1025 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
1027 TRACE("(%p/%p)->(%ld, %ld, %p, %p): stub !!!\n", This
, iface
, StartIndex
, Entries
, pRetrieved
, pPalette
);
1032 static HRESULT WINAPI
Basicvideo_GetCurrentImage(IBasicVideo
*iface
,
1035 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
1037 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This
, iface
, pBufferSize
, pDIBImage
);
1042 static HRESULT WINAPI
Basicvideo_IsUsingDefaultSource(IBasicVideo
*iface
) {
1043 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
1045 TRACE("(%p/%p)->(): stub !!!\n", This
, iface
);
1050 static HRESULT WINAPI
Basicvideo_IsUsingDefaultDestination(IBasicVideo
*iface
) {
1051 ICOM_THIS_MULTI(VideoRendererImpl
, IBasicVideo_vtbl
, iface
);
1053 TRACE("(%p/%p)->(): stub !!!\n", This
, iface
);
1059 static IBasicVideoVtbl IBasicVideo_VTable
=
1061 Basicvideo_QueryInterface
,
1064 Basicvideo_GetTypeInfoCount
,
1065 Basicvideo_GetTypeInfo
,
1066 Basicvideo_GetIDsOfNames
,
1068 Basicvideo_get_AvgTimePerFrame
,
1069 Basicvideo_get_BitRate
,
1070 Basicvideo_get_BitErrorRate
,
1071 Basicvideo_get_VideoWidth
,
1072 Basicvideo_get_VideoHeight
,
1073 Basicvideo_put_SourceLeft
,
1074 Basicvideo_get_SourceLeft
,
1075 Basicvideo_put_SourceWidth
,
1076 Basicvideo_get_SourceWidth
,
1077 Basicvideo_put_SourceTop
,
1078 Basicvideo_get_SourceTop
,
1079 Basicvideo_put_SourceHeight
,
1080 Basicvideo_get_SourceHeight
,
1081 Basicvideo_put_DestinationLeft
,
1082 Basicvideo_get_DestinationLeft
,
1083 Basicvideo_put_DestinationWidth
,
1084 Basicvideo_get_DestinationWidth
,
1085 Basicvideo_put_DestinationTop
,
1086 Basicvideo_get_DestinationTop
,
1087 Basicvideo_put_DestinationHeight
,
1088 Basicvideo_get_DestinationHeight
,
1089 Basicvideo_SetSourcePosition
,
1090 Basicvideo_GetSourcePosition
,
1091 Basicvideo_SetDefaultSourcePosition
,
1092 Basicvideo_SetDestinationPosition
,
1093 Basicvideo_GetDestinationPosition
,
1094 Basicvideo_SetDefaultDestinationPosition
,
1095 Basicvideo_GetVideoSize
,
1096 Basicvideo_GetVideoPaletteEntries
,
1097 Basicvideo_GetCurrentImage
,
1098 Basicvideo_IsUsingDefaultSource
,
1099 Basicvideo_IsUsingDefaultDestination
1103 /*** IUnknown methods ***/
1104 static HRESULT WINAPI
Videowindow_QueryInterface(IVideoWindow
*iface
,
1107 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1109 TRACE("(%p/%p)->(%s (%p), %p)\n", This
, iface
, debugstr_guid(riid
), riid
, ppvObj
);
1111 return VideoRenderer_QueryInterface((IBaseFilter
*)This
, riid
, ppvObj
);
1114 static ULONG WINAPI
Videowindow_AddRef(IVideoWindow
*iface
) {
1115 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1117 TRACE("(%p/%p)->()\n", This
, iface
);
1119 return VideoRenderer_AddRef((IBaseFilter
*)This
);
1122 static ULONG WINAPI
Videowindow_Release(IVideoWindow
*iface
) {
1123 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1125 TRACE("(%p/%p)->()\n", This
, iface
);
1127 return VideoRenderer_Release((IBaseFilter
*)This
);
1130 /*** IDispatch methods ***/
1131 static HRESULT WINAPI
Videowindow_GetTypeInfoCount(IVideoWindow
*iface
,
1133 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1135 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pctinfo
);
1140 static HRESULT WINAPI
Videowindow_GetTypeInfo(IVideoWindow
*iface
,
1143 ITypeInfo
**ppTInfo
) {
1144 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1146 TRACE("(%p/%p)->(%d, %ld, %p): stub !!!\n", This
, iface
, iTInfo
, lcid
, ppTInfo
);
1151 static HRESULT WINAPI
Videowindow_GetIDsOfNames(IVideoWindow
*iface
,
1157 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1159 TRACE("(%p/%p)->(%s (%p), %p, %d, %ld, %p): stub !!!\n", This
, iface
, debugstr_guid(riid
), riid
, rgszNames
, cNames
, lcid
, rgDispId
);
1164 static HRESULT WINAPI
Videowindow_Invoke(IVideoWindow
*iface
,
1165 DISPID dispIdMember
,
1169 DISPPARAMS
*pDispParams
,
1171 EXCEPINFO
*pExepInfo
,
1173 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1175 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
);
1180 /*** IVideoWindow methods ***/
1181 static HRESULT WINAPI
Videowindow_put_Caption(IVideoWindow
*iface
,
1183 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1185 TRACE("(%p/%p)->(%s (%p)): stub !!!\n", This
, iface
, debugstr_w(strCaption
), strCaption
);
1190 static HRESULT WINAPI
Videowindow_get_Caption(IVideoWindow
*iface
,
1192 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1194 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, strCaption
);
1199 static HRESULT WINAPI
Videowindow_put_WindowStyle(IVideoWindow
*iface
,
1201 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1203 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, WindowStyle
);
1208 static HRESULT WINAPI
Videowindow_get_WindowStyle(IVideoWindow
*iface
,
1209 long *WindowStyle
) {
1210 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1212 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, WindowStyle
);
1217 static HRESULT WINAPI
Videowindow_put_WindowStyleEx(IVideoWindow
*iface
,
1218 long WindowStyleEx
) {
1219 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1221 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, WindowStyleEx
);
1226 static HRESULT WINAPI
Videowindow_get_WindowStyleEx(IVideoWindow
*iface
,
1227 long *WindowStyleEx
) {
1228 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1230 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, WindowStyleEx
);
1235 static HRESULT WINAPI
Videowindow_put_AutoShow(IVideoWindow
*iface
,
1237 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1239 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, AutoShow
);
1244 static HRESULT WINAPI
Videowindow_get_AutoShow(IVideoWindow
*iface
,
1246 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1248 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, AutoShow
);
1253 static HRESULT WINAPI
Videowindow_put_WindowState(IVideoWindow
*iface
,
1255 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1257 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, WindowState
);
1262 static HRESULT WINAPI
Videowindow_get_WindowState(IVideoWindow
*iface
,
1263 long *WindowState
) {
1264 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1266 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, WindowState
);
1271 static HRESULT WINAPI
Videowindow_put_BackgroundPalette(IVideoWindow
*iface
,
1272 long BackgroundPalette
) {
1273 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1275 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, BackgroundPalette
);
1280 static HRESULT WINAPI
Videowindow_get_BackgroundPalette(IVideoWindow
*iface
,
1281 long *pBackgroundPalette
) {
1282 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1284 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pBackgroundPalette
);
1289 static HRESULT WINAPI
Videowindow_put_Visible(IVideoWindow
*iface
,
1291 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1293 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, Visible
);
1298 static HRESULT WINAPI
Videowindow_get_Visible(IVideoWindow
*iface
,
1300 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1302 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pVisible
);
1307 static HRESULT WINAPI
Videowindow_put_Left(IVideoWindow
*iface
,
1309 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1311 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, Left
);
1316 static HRESULT WINAPI
Videowindow_get_Left(IVideoWindow
*iface
,
1318 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1320 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pLeft
);
1325 static HRESULT WINAPI
Videowindow_put_Width(IVideoWindow
*iface
,
1327 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1329 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, Width
);
1334 static HRESULT WINAPI
Videowindow_get_Width(IVideoWindow
*iface
,
1336 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1338 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pWidth
);
1343 static HRESULT WINAPI
Videowindow_put_Top(IVideoWindow
*iface
,
1345 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1347 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, Top
);
1352 static HRESULT WINAPI
Videowindow_get_Top(IVideoWindow
*iface
,
1354 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1356 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pTop
);
1361 static HRESULT WINAPI
Videowindow_put_Height(IVideoWindow
*iface
,
1363 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1365 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, Height
);
1370 static HRESULT WINAPI
Videowindow_get_Height(IVideoWindow
*iface
,
1372 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1374 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, pHeight
);
1379 static HRESULT WINAPI
Videowindow_put_Owner(IVideoWindow
*iface
,
1381 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1383 TRACE("(%p/%p)->(%08lx): stub !!!\n", This
, iface
, (DWORD
) Owner
);
1388 static HRESULT WINAPI
Videowindow_get_Owner(IVideoWindow
*iface
,
1390 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1392 TRACE("(%p/%p)->(%08lx): stub !!!\n", This
, iface
, (DWORD
) Owner
);
1397 static HRESULT WINAPI
Videowindow_put_MessageDrain(IVideoWindow
*iface
,
1399 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1401 TRACE("(%p/%p)->(%08lx): stub !!!\n", This
, iface
, (DWORD
) Drain
);
1406 static HRESULT WINAPI
Videowindow_get_MessageDrain(IVideoWindow
*iface
,
1408 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1410 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, Drain
);
1415 static HRESULT WINAPI
Videowindow_get_BorderColor(IVideoWindow
*iface
,
1417 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1419 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, Color
);
1424 static HRESULT WINAPI
Videowindow_put_BorderColor(IVideoWindow
*iface
,
1426 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1428 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, Color
);
1433 static HRESULT WINAPI
Videowindow_get_FullScreenMode(IVideoWindow
*iface
,
1434 long *FullScreenMode
) {
1435 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1437 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, FullScreenMode
);
1442 static HRESULT WINAPI
Videowindow_put_FullScreenMode(IVideoWindow
*iface
,
1443 long FullScreenMode
) {
1444 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1446 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, FullScreenMode
);
1451 static HRESULT WINAPI
Videowindow_SetWindowForeground(IVideoWindow
*iface
,
1453 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1455 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, Focus
);
1460 static HRESULT WINAPI
Videowindow_NotifyOwnerMessage(IVideoWindow
*iface
,
1465 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1467 TRACE("(%p/%p)->(%08lx, %ld, %08lx, %08lx): stub !!!\n", This
, iface
, (DWORD
) hwnd
, uMsg
, wParam
, lParam
);
1472 static HRESULT WINAPI
Videowindow_SetWindowPosition(IVideoWindow
*iface
,
1477 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1479 TRACE("(%p/%p)->(%ld, %ld, %ld, %ld): stub !!!\n", This
, iface
, Left
, Top
, Width
, Height
);
1484 static HRESULT WINAPI
Videowindow_GetWindowPosition(IVideoWindow
*iface
,
1489 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1491 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This
, iface
, pLeft
, pTop
, pWidth
, pHeight
);
1496 static HRESULT WINAPI
Videowindow_GetMinIdealImageSize(IVideoWindow
*iface
,
1499 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1501 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This
, iface
, pWidth
, pHeight
);
1506 static HRESULT WINAPI
Videowindow_GetMaxIdealImageSize(IVideoWindow
*iface
,
1509 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1511 TRACE("(%p/%p)->(%p, %p): stub !!!\n", This
, iface
, pWidth
, pHeight
);
1516 static HRESULT WINAPI
Videowindow_GetRestorePosition(IVideoWindow
*iface
,
1521 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1523 TRACE("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This
, iface
, pLeft
, pTop
, pWidth
, pHeight
);
1528 static HRESULT WINAPI
Videowindow_HideCursor(IVideoWindow
*iface
,
1530 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1532 TRACE("(%p/%p)->(%ld): stub !!!\n", This
, iface
, HideCursor
);
1537 static HRESULT WINAPI
Videowindow_IsCursorHidden(IVideoWindow
*iface
,
1538 long *CursorHidden
) {
1539 ICOM_THIS_MULTI(VideoRendererImpl
, IVideoWindow_vtbl
, iface
);
1541 TRACE("(%p/%p)->(%p): stub !!!\n", This
, iface
, CursorHidden
);
1546 static IVideoWindowVtbl IVideoWindow_VTable
=
1548 Videowindow_QueryInterface
,
1550 Videowindow_Release
,
1551 Videowindow_GetTypeInfoCount
,
1552 Videowindow_GetTypeInfo
,
1553 Videowindow_GetIDsOfNames
,
1555 Videowindow_put_Caption
,
1556 Videowindow_get_Caption
,
1557 Videowindow_put_WindowStyle
,
1558 Videowindow_get_WindowStyle
,
1559 Videowindow_put_WindowStyleEx
,
1560 Videowindow_get_WindowStyleEx
,
1561 Videowindow_put_AutoShow
,
1562 Videowindow_get_AutoShow
,
1563 Videowindow_put_WindowState
,
1564 Videowindow_get_WindowState
,
1565 Videowindow_put_BackgroundPalette
,
1566 Videowindow_get_BackgroundPalette
,
1567 Videowindow_put_Visible
,
1568 Videowindow_get_Visible
,
1569 Videowindow_put_Left
,
1570 Videowindow_get_Left
,
1571 Videowindow_put_Width
,
1572 Videowindow_get_Width
,
1573 Videowindow_put_Top
,
1574 Videowindow_get_Top
,
1575 Videowindow_put_Height
,
1576 Videowindow_get_Height
,
1577 Videowindow_put_Owner
,
1578 Videowindow_get_Owner
,
1579 Videowindow_put_MessageDrain
,
1580 Videowindow_get_MessageDrain
,
1581 Videowindow_get_BorderColor
,
1582 Videowindow_put_BorderColor
,
1583 Videowindow_get_FullScreenMode
,
1584 Videowindow_put_FullScreenMode
,
1585 Videowindow_SetWindowForeground
,
1586 Videowindow_NotifyOwnerMessage
,
1587 Videowindow_SetWindowPosition
,
1588 Videowindow_GetWindowPosition
,
1589 Videowindow_GetMinIdealImageSize
,
1590 Videowindow_GetMaxIdealImageSize
,
1591 Videowindow_GetRestorePosition
,
1592 Videowindow_HideCursor
,
1593 Videowindow_IsCursorHidden