2 * Implements CLSID_VideoRenderer.
4 * hidenori@a2.ctktv.ne.jp
25 #include "debugtools.h"
26 DEFAULT_DEBUG_CHANNEL(quartz
);
28 #include "quartz_private.h"
33 static const WCHAR QUARTZ_VideoRenderer_Name
[] =
34 { 'V','i','d','e','o',' ','R','e','n','d','e','r','e','r',0 };
35 static const WCHAR QUARTZ_VideoRendererPin_Name
[] =
38 #define VIDRENMSG_UPDATE (WM_APP+0)
39 #define VIDRENMSG_ENDTHREAD (WM_APP+1)
41 static const CHAR VIDREN_szWndClass
[] = "Wine_VideoRenderer";
42 static const CHAR VIDREN_szWndName
[] = "Wine Video Renderer";
47 static void VIDREN_OnPaint( CVideoRendererImpl
* This
, HWND hwnd
)
50 const VIDEOINFOHEADER
* pinfo
;
51 const AM_MEDIA_TYPE
* pmt
;
53 TRACE("(%p,%08x)\n",This
,hwnd
);
55 if ( !BeginPaint( hwnd
, &ps
) )
58 pmt
= This
->pPin
->pin
.pmtConn
;
59 if ( (!This
->m_bSampleIsValid
) || pmt
== NULL
)
62 pinfo
= (const VIDEOINFOHEADER
*)pmt
->pbFormat
;
67 abs(pinfo
->bmiHeader
.biWidth
), abs(pinfo
->bmiHeader
.biHeight
),
69 abs(pinfo
->bmiHeader
.biWidth
), abs(pinfo
->bmiHeader
.biHeight
),
70 This
->m_pSampleData
, (BITMAPINFO
*)(&pinfo
->bmiHeader
),
71 DIB_RGB_COLORS
, SRCCOPY
);
74 EndPaint( hwnd
, &ps
);
77 static void VIDREN_OnQueryNewPalette( CVideoRendererImpl
* This
, HWND hwnd
)
79 FIXME("(%p,%08x)\n",This
,hwnd
);
82 static void VIDREN_OnUpdate( CVideoRendererImpl
* This
, HWND hwnd
)
86 TRACE("(%p,%08x)\n",This
,hwnd
);
88 InvalidateRect(hwnd
,NULL
,FALSE
);
92 while ( PeekMessageA(&msg
,hwnd
,
93 VIDRENMSG_UPDATE
,VIDRENMSG_UPDATE
,
96 /* discard this message. */
101 static LRESULT CALLBACK
103 HWND hwnd
, UINT message
,
104 WPARAM wParam
, LPARAM lParam
)
106 CVideoRendererImpl
* This
= (CVideoRendererImpl
*)
107 GetWindowLongA( hwnd
, 0L );
109 TRACE("(%p) - %u/%u/%ld\n",This
,message
,wParam
,lParam
);
111 if ( message
== WM_NCCREATE
)
113 This
= (CVideoRendererImpl
*)(((CREATESTRUCTA
*)lParam
)->lpCreateParams
);
114 SetWindowLongA( hwnd
, 0L, (LONG
)This
);
118 if ( message
== WM_NCDESTROY
)
121 This
->m_hwnd
= (HWND
)NULL
;
122 SetWindowLongA( hwnd
, 0L, (LONG
)NULL
);
131 TRACE("WM_PAINT begin\n");
132 EnterCriticalSection( &This
->m_csSample
);
133 VIDREN_OnPaint( This
, hwnd
);
134 LeaveCriticalSection( &This
->m_csSample
);
135 TRACE("WM_PAINT end\n");
138 ShowWindow( hwnd
, SW_HIDE
);
140 case WM_PALETTECHANGED
:
141 if ( hwnd
== (HWND
)wParam
)
144 case WM_QUERYNEWPALETTE
:
145 VIDREN_OnQueryNewPalette( This
, hwnd
);
147 case VIDRENMSG_UPDATE
:
148 VIDREN_OnUpdate( This
, hwnd
);
150 case VIDRENMSG_ENDTHREAD
:
158 return DefWindowProcA( hwnd
, message
, wParam
, lParam
);
161 static BOOL
VIDREN_Register( HINSTANCE hInst
)
167 wc
.lpfnWndProc
= VIDREN_WndProc
;
169 wc
.cbWndExtra
= sizeof(LONG
);
170 wc
.hInstance
= hInst
;
171 wc
.hIcon
= LoadIconA((HINSTANCE
)NULL
,IDI_WINLOGOA
);
172 wc
.hCursor
= LoadCursorA((HINSTANCE
)NULL
,IDC_ARROWA
);
173 wc
.hbrBackground
= (HBRUSH
)GetStockObject(BLACK_BRUSH
);
174 wc
.lpszMenuName
= NULL
;
175 wc
.lpszClassName
= VIDREN_szWndClass
;
177 atom
= RegisterClassA( &wc
);
178 if ( atom
!= (ATOM
)0 )
185 static HWND
VIDREN_Create( HWND hwndOwner
, CVideoRendererImpl
* This
)
187 HINSTANCE hInst
= (HINSTANCE
)GetModuleHandleA(NULL
);
188 const VIDEOINFOHEADER
* pinfo
;
190 DWORD dwStyle
= WS_POPUP
|WS_CAPTION
|WS_CLIPCHILDREN
;
194 if ( !VIDREN_Register( hInst
) )
197 pinfo
= (const VIDEOINFOHEADER
*)This
->pPin
->pin
.pmtConn
->pbFormat
;
199 TRACE("width %ld, height %ld\n", pinfo
->bmiHeader
.biWidth
, pinfo
->bmiHeader
.biHeight
);
203 rcWnd
.right
= pinfo
->bmiHeader
.biWidth
;
204 rcWnd
.bottom
= abs(pinfo
->bmiHeader
.biHeight
);
205 AdjustWindowRectEx( &rcWnd
, dwStyle
, FALSE
, dwExStyle
);
207 TRACE("window width %d,height %d\n",
208 rcWnd
.right
-rcWnd
.left
,rcWnd
.bottom
-rcWnd
.top
);
210 hwnd
= CreateWindowExA(
212 VIDREN_szWndClass
, VIDREN_szWndName
,
215 rcWnd
.right
-rcWnd
.left
, rcWnd
.bottom
-rcWnd
.top
,
216 hwndOwner
, (HMENU
)NULL
,
217 hInst
, (LPVOID
)This
);
218 if ( hwnd
!= (HWND
)NULL
)
219 ShowWindow(hwnd
,SW_SHOW
);
224 static DWORD WINAPI
VIDREN_ThreadEntry( LPVOID pv
)
226 CVideoRendererImpl
* This
= (CVideoRendererImpl
*)pv
;
229 TRACE("(%p)\n",This
);
230 if ( !VIDREN_Create( (HWND
)NULL
, This
) )
232 TRACE("VIDREN_Create succeeded\n");
234 SetEvent( This
->m_hEventInit
);
235 TRACE("Enter message loop\n");
237 while ( GetMessageA(&msg
,(HWND
)NULL
,0,0) )
239 TranslateMessage(&msg
);
240 DispatchMessageA(&msg
);
246 static HRESULT
VIDREN_StartThread( CVideoRendererImpl
* This
)
252 if ( This
->m_hEventInit
!= (HANDLE
)NULL
||
253 This
->m_hwnd
!= (HWND
)NULL
||
254 This
->m_hThread
!= (HANDLE
)NULL
||
255 This
->pPin
->pin
.pmtConn
== NULL
)
258 This
->m_hEventInit
= CreateEventA(NULL
,TRUE
,FALSE
,NULL
);
259 if ( This
->m_hEventInit
== (HANDLE
)NULL
)
260 return E_OUTOFMEMORY
;
262 This
->m_hThread
= CreateThread(
267 if ( This
->m_hThread
== (HANDLE
)NULL
)
270 hEvents
[0] = This
->m_hEventInit
;
271 hEvents
[1] = This
->m_hThread
;
273 dwRes
= WaitForMultipleObjects(2,hEvents
,FALSE
,INFINITE
);
274 if ( dwRes
!= WAIT_OBJECT_0
)
280 static void VIDREN_EndThread( CVideoRendererImpl
* This
)
282 if ( This
->m_hwnd
!= (HWND
)NULL
)
283 PostMessageA( This
->m_hwnd
, VIDRENMSG_ENDTHREAD
, 0, 0 );
285 if ( This
->m_hThread
!= (HANDLE
)NULL
)
287 WaitForSingleObject( This
->m_hThread
, INFINITE
);
288 CloseHandle( This
->m_hThread
);
289 This
->m_hThread
= (HANDLE
)NULL
;
291 if ( This
->m_hEventInit
!= (HANDLE
)NULL
)
293 CloseHandle( This
->m_hEventInit
);
294 This
->m_hEventInit
= (HANDLE
)NULL
;
300 /***************************************************************************
302 * CVideoRendererImpl methods
306 static HRESULT
CVideoRendererImpl_OnActive( CBaseFilterImpl
* pImpl
)
308 CVideoRendererImpl_THIS(pImpl
,basefilter
);
310 FIXME( "(%p)\n", This
);
312 This
->m_bSampleIsValid
= FALSE
;
317 static HRESULT
CVideoRendererImpl_OnInactive( CBaseFilterImpl
* pImpl
)
319 CVideoRendererImpl_THIS(pImpl
,basefilter
);
321 FIXME( "(%p)\n", This
);
323 EnterCriticalSection( &This
->m_csSample
);
324 This
->m_bSampleIsValid
= FALSE
;
325 LeaveCriticalSection( &This
->m_csSample
);
330 static const CBaseFilterHandlers filterhandlers
=
332 CVideoRendererImpl_OnActive
, /* pOnActive */
333 CVideoRendererImpl_OnInactive
, /* pOnInactive */
337 /***************************************************************************
339 * CVideoRendererPinImpl methods
343 static HRESULT
CVideoRendererPinImpl_OnPreConnect( CPinBaseImpl
* pImpl
, IPin
* pPin
)
345 CVideoRendererPinImpl_THIS(pImpl
,pin
);
347 TRACE("(%p,%p)\n",This
,pPin
);
352 static HRESULT
CVideoRendererPinImpl_OnPostConnect( CPinBaseImpl
* pImpl
, IPin
* pPin
)
354 CVideoRendererPinImpl_THIS(pImpl
,pin
);
355 const VIDEOINFOHEADER
* pinfo
;
358 TRACE("(%p,%p)\n",This
,pPin
);
360 if ( This
->pRender
->m_pSampleData
!= NULL
)
362 QUARTZ_FreeMem(This
->pRender
->m_pSampleData
);
363 This
->pRender
->m_pSampleData
= NULL
;
365 This
->pRender
->m_cbSampleData
= 0;
366 This
->pRender
->m_bSampleIsValid
= FALSE
;
368 pinfo
= (const VIDEOINFOHEADER
*)This
->pin
.pmtConn
->pbFormat
;
372 This
->pRender
->m_bSampleIsValid
= FALSE
;
373 This
->pRender
->m_cbSampleData
= DIBSIZE(pinfo
->bmiHeader
);
374 This
->pRender
->m_pSampleData
= (BYTE
*)QUARTZ_AllocMem(This
->pRender
->m_cbSampleData
);
375 if ( This
->pRender
->m_pSampleData
== NULL
)
376 return E_OUTOFMEMORY
;
378 hr
= VIDREN_StartThread(This
->pRender
);
385 static HRESULT
CVideoRendererPinImpl_OnDisconnect( CPinBaseImpl
* pImpl
)
387 CVideoRendererPinImpl_THIS(pImpl
,pin
);
389 TRACE("(%p)\n",This
);
391 VIDREN_EndThread(This
->pRender
);
393 if ( This
->pRender
->m_pSampleData
!= NULL
)
395 QUARTZ_FreeMem(This
->pRender
->m_pSampleData
);
396 This
->pRender
->m_pSampleData
= NULL
;
398 This
->pRender
->m_cbSampleData
= 0;
399 This
->pRender
->m_bSampleIsValid
= FALSE
;
401 if ( This
->meminput
.pAllocator
!= NULL
)
403 IMemAllocator_Decommit(This
->meminput
.pAllocator
);
404 IMemAllocator_Release(This
->meminput
.pAllocator
);
405 This
->meminput
.pAllocator
= NULL
;
411 static HRESULT
CVideoRendererPinImpl_CheckMediaType( CPinBaseImpl
* pImpl
, const AM_MEDIA_TYPE
* pmt
)
413 CVideoRendererPinImpl_THIS(pImpl
,pin
);
414 const VIDEOINFOHEADER
* pinfo
;
416 TRACE("(%p,%p)\n",This
,pmt
);
418 if ( !IsEqualGUID( &pmt
->majortype
, &MEDIATYPE_Video
) )
420 if ( !IsEqualGUID( &pmt
->formattype
, &FORMAT_VideoInfo
) )
425 if ( !IsEqualGUID( &pmt
->subtype
, &MEDIASUBTYPE_RGB555
) &&
426 !IsEqualGUID( &pmt
->subtype
, &MEDIASUBTYPE_RGB565
) &&
427 !IsEqualGUID( &pmt
->subtype
, &MEDIASUBTYPE_RGB24
) &&
428 !IsEqualGUID( &pmt
->subtype
, &MEDIASUBTYPE_RGB32
) )
434 if ( !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB8 ) &&
435 !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB555 ) &&
436 !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB565 ) &&
437 !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB24 ) &&
438 !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB32 ) )
443 pinfo
= (const VIDEOINFOHEADER
*)pmt
->pbFormat
;
444 if ( pinfo
== NULL
||
445 pinfo
->bmiHeader
.biSize
< sizeof(BITMAPINFOHEADER
) ||
446 pinfo
->bmiHeader
.biWidth
<= 0 ||
447 pinfo
->bmiHeader
.biHeight
== 0 ||
448 pinfo
->bmiHeader
.biPlanes
!= 1 ||
449 pinfo
->bmiHeader
.biCompression
!= 0 )
455 static HRESULT
CVideoRendererPinImpl_Receive( CPinBaseImpl
* pImpl
, IMediaSample
* pSample
)
457 CVideoRendererPinImpl_THIS(pImpl
,pin
);
463 TRACE( "(%p,%p)\n",This
,pSample
);
465 hwnd
= This
->pRender
->m_hwnd
;
466 if ( hwnd
== (HWND
)NULL
||
467 This
->pRender
->m_hThread
== (HWND
)NULL
)
469 if ( This
->pRender
->m_fInFlush
)
471 if ( pSample
== NULL
)
474 /* FIXME - wait/skip/qualitycontrol */
477 /* duplicate this sample. */
478 hr
= IMediaSample_GetPointer(pSample
,&pData
);
481 lLength
= (LONG
)IMediaSample_GetActualDataLength(pSample
);
482 if ( lLength
<= 0 || (lLength
< (LONG
)This
->pRender
->m_cbSampleData
) )
484 ERR( "invalid length: %ld\n", lLength
);
488 EnterCriticalSection( &This
->pRender
->m_csSample
);
489 memcpy(This
->pRender
->m_pSampleData
,pData
,lLength
);
490 This
->pRender
->m_bSampleIsValid
= TRUE
;
491 PostMessageA( hwnd
, VIDRENMSG_UPDATE
, 0, 0 );
492 LeaveCriticalSection( &This
->pRender
->m_csSample
);
497 static HRESULT
CVideoRendererPinImpl_ReceiveCanBlock( CPinBaseImpl
* pImpl
)
499 CVideoRendererPinImpl_THIS(pImpl
,pin
);
501 TRACE( "(%p)\n", This
);
507 static HRESULT
CVideoRendererPinImpl_EndOfStream( CPinBaseImpl
* pImpl
)
509 CVideoRendererPinImpl_THIS(pImpl
,pin
);
511 FIXME( "(%p)\n", This
);
513 This
->pRender
->m_fInFlush
= FALSE
;
515 /* FIXME - don't notify twice until stopped or seeked. */
516 return CBaseFilterImpl_MediaEventNotify(
517 &This
->pRender
->basefilter
, EC_COMPLETE
,
518 (LONG_PTR
)S_OK
, (LONG_PTR
)(IBaseFilter
*)(This
->pRender
) );
521 static HRESULT
CVideoRendererPinImpl_BeginFlush( CPinBaseImpl
* pImpl
)
523 CVideoRendererPinImpl_THIS(pImpl
,pin
);
525 FIXME( "(%p)\n", This
);
527 This
->pRender
->m_fInFlush
= TRUE
;
528 EnterCriticalSection( &This
->pRender
->m_csSample
);
529 This
->pRender
->m_bSampleIsValid
= FALSE
;
530 LeaveCriticalSection( &This
->pRender
->m_csSample
);
535 static HRESULT
CVideoRendererPinImpl_EndFlush( CPinBaseImpl
* pImpl
)
537 CVideoRendererPinImpl_THIS(pImpl
,pin
);
539 FIXME( "(%p)\n", This
);
541 This
->pRender
->m_fInFlush
= FALSE
;
546 static HRESULT
CVideoRendererPinImpl_NewSegment( CPinBaseImpl
* pImpl
, REFERENCE_TIME rtStart
, REFERENCE_TIME rtStop
, double rate
)
548 CVideoRendererPinImpl_THIS(pImpl
,pin
);
550 FIXME( "(%p)\n", This
);
552 This
->pRender
->m_fInFlush
= FALSE
;
560 static const CBasePinHandlers pinhandlers
=
562 CVideoRendererPinImpl_OnPreConnect
, /* pOnPreConnect */
563 CVideoRendererPinImpl_OnPostConnect
, /* pOnPostConnect */
564 CVideoRendererPinImpl_OnDisconnect
, /* pOnDisconnect */
565 CVideoRendererPinImpl_CheckMediaType
, /* pCheckMediaType */
566 NULL
, /* pQualityNotify */
567 CVideoRendererPinImpl_Receive
, /* pReceive */
568 CVideoRendererPinImpl_ReceiveCanBlock
, /* pReceiveCanBlock */
569 CVideoRendererPinImpl_EndOfStream
, /* pEndOfStream */
570 CVideoRendererPinImpl_BeginFlush
, /* pBeginFlush */
571 CVideoRendererPinImpl_EndFlush
, /* pEndFlush */
572 CVideoRendererPinImpl_NewSegment
, /* pNewSegment */
576 /***************************************************************************
578 * new/delete CVideoRendererImpl
582 /* can I use offsetof safely? - FIXME? */
583 static QUARTZ_IFEntry FilterIFEntries
[] =
585 { &IID_IPersist
, offsetof(CVideoRendererImpl
,basefilter
)-offsetof(CVideoRendererImpl
,unk
) },
586 { &IID_IMediaFilter
, offsetof(CVideoRendererImpl
,basefilter
)-offsetof(CVideoRendererImpl
,unk
) },
587 { &IID_IBaseFilter
, offsetof(CVideoRendererImpl
,basefilter
)-offsetof(CVideoRendererImpl
,unk
) },
588 { &IID_IBasicVideo
, offsetof(CVideoRendererImpl
,basvid
)-offsetof(CVideoRendererImpl
,unk
) },
589 { &IID_IBasicVideo2
, offsetof(CVideoRendererImpl
,basvid
)-offsetof(CVideoRendererImpl
,unk
) },
590 { &IID_IVideoWindow
, offsetof(CVideoRendererImpl
,vidwin
)-offsetof(CVideoRendererImpl
,unk
) },
593 static HRESULT
CVideoRendererImpl_OnQueryInterface(
594 IUnknown
* punk
, const IID
* piid
, void** ppobj
)
596 CVideoRendererImpl_THIS(punk
,unk
);
598 if ( This
->pSeekPass
== NULL
)
599 return E_NOINTERFACE
;
601 if ( IsEqualGUID( &IID_IMediaPosition
, piid
) ||
602 IsEqualGUID( &IID_IMediaSeeking
, piid
) )
604 TRACE( "IMediaSeeking(or IMediaPosition) is queried\n" );
605 return IUnknown_QueryInterface( (IUnknown
*)(&This
->pSeekPass
->unk
), piid
, ppobj
);
608 return E_NOINTERFACE
;
611 static void QUARTZ_DestroyVideoRenderer(IUnknown
* punk
)
613 CVideoRendererImpl_THIS(punk
,unk
);
615 TRACE( "(%p)\n", This
);
616 CVideoRendererImpl_OnInactive(&This
->basefilter
);
617 VIDREN_EndThread(This
);
619 if ( This
->pPin
!= NULL
)
621 IUnknown_Release(This
->pPin
->unk
.punkControl
);
624 if ( This
->pSeekPass
!= NULL
)
626 IUnknown_Release((IUnknown
*)&This
->pSeekPass
->unk
);
627 This
->pSeekPass
= NULL
;
630 CVideoRendererImpl_UninitIBasicVideo2(This
);
631 CVideoRendererImpl_UninitIVideoWindow(This
);
632 CBaseFilterImpl_UninitIBaseFilter(&This
->basefilter
);
634 DeleteCriticalSection( &This
->m_csSample
);
637 HRESULT
QUARTZ_CreateVideoRenderer(IUnknown
* punkOuter
,void** ppobj
)
639 CVideoRendererImpl
* This
= NULL
;
642 TRACE("(%p,%p)\n",punkOuter
,ppobj
);
644 This
= (CVideoRendererImpl
*)
645 QUARTZ_AllocObj( sizeof(CVideoRendererImpl
) );
647 return E_OUTOFMEMORY
;
648 This
->pSeekPass
= NULL
;
650 This
->m_fInFlush
= FALSE
;
652 This
->m_hEventInit
= (HANDLE
)NULL
;
653 This
->m_hThread
= (HANDLE
)NULL
;
654 This
->m_hwnd
= (HWND
)NULL
;
655 This
->m_bSampleIsValid
= FALSE
;
656 This
->m_pSampleData
= NULL
;
657 This
->m_cbSampleData
= 0;
659 QUARTZ_IUnkInit( &This
->unk
, punkOuter
);
660 This
->qiext
.pNext
= NULL
;
661 This
->qiext
.pOnQueryInterface
= &CVideoRendererImpl_OnQueryInterface
;
662 QUARTZ_IUnkAddDelegation( &This
->unk
, &This
->qiext
);
664 hr
= CBaseFilterImpl_InitIBaseFilter(
666 This
->unk
.punkControl
,
667 &CLSID_VideoRenderer
,
668 QUARTZ_VideoRenderer_Name
,
672 hr
= CVideoRendererImpl_InitIBasicVideo2(This
);
675 hr
= CVideoRendererImpl_InitIVideoWindow(This
);
678 CVideoRendererImpl_UninitIBasicVideo2(This
);
683 CBaseFilterImpl_UninitIBaseFilter(&This
->basefilter
);
689 QUARTZ_FreeObj(This
);
693 This
->unk
.pEntries
= FilterIFEntries
;
694 This
->unk
.dwEntries
= sizeof(FilterIFEntries
)/sizeof(FilterIFEntries
[0]);
695 This
->unk
.pOnFinalRelease
= QUARTZ_DestroyVideoRenderer
;
697 InitializeCriticalSection( &This
->m_csSample
);
699 hr
= QUARTZ_CreateVideoRendererPin(
701 &This
->basefilter
.csFilter
,
704 hr
= QUARTZ_CompList_AddComp(
705 This
->basefilter
.pInPins
,
706 (IUnknown
*)&This
->pPin
->pin
,
709 hr
= QUARTZ_CreateSeekingPassThruInternal(
710 (IUnknown
*)&(This
->unk
), &This
->pSeekPass
,
711 TRUE
, (IPin
*)&(This
->pPin
->pin
) );
715 IUnknown_Release( This
->unk
.punkControl
);
719 *ppobj
= (void*)&(This
->unk
);
724 /***************************************************************************
726 * new/delete CVideoRendererPinImpl
730 /* can I use offsetof safely? - FIXME? */
731 static QUARTZ_IFEntry PinIFEntries
[] =
733 { &IID_IPin
, offsetof(CVideoRendererPinImpl
,pin
)-offsetof(CVideoRendererPinImpl
,unk
) },
734 { &IID_IMemInputPin
, offsetof(CVideoRendererPinImpl
,meminput
)-offsetof(CVideoRendererPinImpl
,unk
) },
737 static void QUARTZ_DestroyVideoRendererPin(IUnknown
* punk
)
739 CVideoRendererPinImpl_THIS(punk
,unk
);
741 TRACE( "(%p)\n", This
);
743 CPinBaseImpl_UninitIPin( &This
->pin
);
744 CMemInputPinBaseImpl_UninitIMemInputPin( &This
->meminput
);
747 HRESULT
QUARTZ_CreateVideoRendererPin(
748 CVideoRendererImpl
* pFilter
,
749 CRITICAL_SECTION
* pcsPin
,
750 CVideoRendererPinImpl
** ppPin
)
752 CVideoRendererPinImpl
* This
= NULL
;
755 TRACE("(%p,%p,%p)\n",pFilter
,pcsPin
,ppPin
);
757 This
= (CVideoRendererPinImpl
*)
758 QUARTZ_AllocObj( sizeof(CVideoRendererPinImpl
) );
760 return E_OUTOFMEMORY
;
762 QUARTZ_IUnkInit( &This
->unk
, NULL
);
763 This
->pRender
= pFilter
;
765 hr
= CPinBaseImpl_InitIPin(
767 This
->unk
.punkControl
,
769 &pFilter
->basefilter
,
770 QUARTZ_VideoRendererPin_Name
,
776 hr
= CMemInputPinBaseImpl_InitIMemInputPin(
778 This
->unk
.punkControl
,
782 CPinBaseImpl_UninitIPin( &This
->pin
);
788 QUARTZ_FreeObj(This
);
792 This
->unk
.pEntries
= PinIFEntries
;
793 This
->unk
.dwEntries
= sizeof(PinIFEntries
)/sizeof(PinIFEntries
[0]);
794 This
->unk
.pOnFinalRelease
= QUARTZ_DestroyVideoRendererPin
;
798 TRACE("returned successfully.\n");
803 /***************************************************************************
805 * CVideoRendererImpl::IBasicVideo2
810 static HRESULT WINAPI
811 IBasicVideo2_fnQueryInterface(IBasicVideo2
* iface
,REFIID riid
,void** ppobj
)
813 CVideoRendererImpl_THIS(iface
,basvid
);
815 TRACE("(%p)->()\n",This
);
817 return IUnknown_QueryInterface(This
->unk
.punkControl
,riid
,ppobj
);
821 IBasicVideo2_fnAddRef(IBasicVideo2
* iface
)
823 CVideoRendererImpl_THIS(iface
,basvid
);
825 TRACE("(%p)->()\n",This
);
827 return IUnknown_AddRef(This
->unk
.punkControl
);
831 IBasicVideo2_fnRelease(IBasicVideo2
* iface
)
833 CVideoRendererImpl_THIS(iface
,basvid
);
835 TRACE("(%p)->()\n",This
);
837 return IUnknown_Release(This
->unk
.punkControl
);
840 static HRESULT WINAPI
841 IBasicVideo2_fnGetTypeInfoCount(IBasicVideo2
* iface
,UINT
* pcTypeInfo
)
843 CVideoRendererImpl_THIS(iface
,basvid
);
845 FIXME("(%p)->()\n",This
);
850 static HRESULT WINAPI
851 IBasicVideo2_fnGetTypeInfo(IBasicVideo2
* iface
,UINT iTypeInfo
, LCID lcid
, ITypeInfo
** ppobj
)
853 CVideoRendererImpl_THIS(iface
,basvid
);
855 FIXME("(%p)->()\n",This
);
860 static HRESULT WINAPI
861 IBasicVideo2_fnGetIDsOfNames(IBasicVideo2
* iface
,REFIID riid
, LPOLESTR
* ppwszName
, UINT cNames
, LCID lcid
, DISPID
* pDispId
)
863 CVideoRendererImpl_THIS(iface
,basvid
);
865 FIXME("(%p)->()\n",This
);
870 static HRESULT WINAPI
871 IBasicVideo2_fnInvoke(IBasicVideo2
* iface
,DISPID DispId
, REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
* pDispParams
, VARIANT
* pVarRes
, EXCEPINFO
* pExcepInfo
, UINT
* puArgErr
)
873 CVideoRendererImpl_THIS(iface
,basvid
);
875 FIXME("(%p)->()\n",This
);
881 static HRESULT WINAPI
882 IBasicVideo2_fnget_AvgTimePerFrame(IBasicVideo2
* iface
,REFTIME
* prefTime
)
884 CVideoRendererImpl_THIS(iface
,basvid
);
886 FIXME("(%p)->()\n",This
);
891 static HRESULT WINAPI
892 IBasicVideo2_fnget_BitRate(IBasicVideo2
* iface
,long* plRate
)
894 CVideoRendererImpl_THIS(iface
,basvid
);
896 FIXME("(%p)->()\n",This
);
901 static HRESULT WINAPI
902 IBasicVideo2_fnget_BitErrorRate(IBasicVideo2
* iface
,long* plRate
)
904 CVideoRendererImpl_THIS(iface
,basvid
);
906 FIXME("(%p)->()\n",This
);
911 static HRESULT WINAPI
912 IBasicVideo2_fnget_VideoWidth(IBasicVideo2
* iface
,long* plWidth
)
914 CVideoRendererImpl_THIS(iface
,basvid
);
916 FIXME("(%p)->()\n",This
);
921 static HRESULT WINAPI
922 IBasicVideo2_fnget_VideoHeight(IBasicVideo2
* iface
,long* plHeight
)
924 CVideoRendererImpl_THIS(iface
,basvid
);
926 FIXME("(%p)->()\n",This
);
931 static HRESULT WINAPI
932 IBasicVideo2_fnput_SourceLeft(IBasicVideo2
* iface
,long lLeft
)
934 CVideoRendererImpl_THIS(iface
,basvid
);
936 FIXME("(%p)->()\n",This
);
941 static HRESULT WINAPI
942 IBasicVideo2_fnget_SourceLeft(IBasicVideo2
* iface
,long* plLeft
)
944 CVideoRendererImpl_THIS(iface
,basvid
);
946 FIXME("(%p)->()\n",This
);
951 static HRESULT WINAPI
952 IBasicVideo2_fnput_SourceWidth(IBasicVideo2
* iface
,long lWidth
)
954 CVideoRendererImpl_THIS(iface
,basvid
);
956 FIXME("(%p)->()\n",This
);
961 static HRESULT WINAPI
962 IBasicVideo2_fnget_SourceWidth(IBasicVideo2
* iface
,long* plWidth
)
964 CVideoRendererImpl_THIS(iface
,basvid
);
966 FIXME("(%p)->()\n",This
);
971 static HRESULT WINAPI
972 IBasicVideo2_fnput_SourceTop(IBasicVideo2
* iface
,long lTop
)
974 CVideoRendererImpl_THIS(iface
,basvid
);
976 FIXME("(%p)->()\n",This
);
981 static HRESULT WINAPI
982 IBasicVideo2_fnget_SourceTop(IBasicVideo2
* iface
,long* plTop
)
984 CVideoRendererImpl_THIS(iface
,basvid
);
986 FIXME("(%p)->()\n",This
);
991 static HRESULT WINAPI
992 IBasicVideo2_fnput_SourceHeight(IBasicVideo2
* iface
,long lHeight
)
994 CVideoRendererImpl_THIS(iface
,basvid
);
996 FIXME("(%p)->()\n",This
);
1001 static HRESULT WINAPI
1002 IBasicVideo2_fnget_SourceHeight(IBasicVideo2
* iface
,long* plHeight
)
1004 CVideoRendererImpl_THIS(iface
,basvid
);
1006 FIXME("(%p)->()\n",This
);
1011 static HRESULT WINAPI
1012 IBasicVideo2_fnput_DestinationLeft(IBasicVideo2
* iface
,long lLeft
)
1014 CVideoRendererImpl_THIS(iface
,basvid
);
1016 FIXME("(%p)->()\n",This
);
1021 static HRESULT WINAPI
1022 IBasicVideo2_fnget_DestinationLeft(IBasicVideo2
* iface
,long* plLeft
)
1024 CVideoRendererImpl_THIS(iface
,basvid
);
1026 FIXME("(%p)->()\n",This
);
1031 static HRESULT WINAPI
1032 IBasicVideo2_fnput_DestinationWidth(IBasicVideo2
* iface
,long lWidth
)
1034 CVideoRendererImpl_THIS(iface
,basvid
);
1036 FIXME("(%p)->()\n",This
);
1041 static HRESULT WINAPI
1042 IBasicVideo2_fnget_DestinationWidth(IBasicVideo2
* iface
,long* plWidth
)
1044 CVideoRendererImpl_THIS(iface
,basvid
);
1046 FIXME("(%p)->()\n",This
);
1051 static HRESULT WINAPI
1052 IBasicVideo2_fnput_DestinationTop(IBasicVideo2
* iface
,long lTop
)
1054 CVideoRendererImpl_THIS(iface
,basvid
);
1056 FIXME("(%p)->()\n",This
);
1061 static HRESULT WINAPI
1062 IBasicVideo2_fnget_DestinationTop(IBasicVideo2
* iface
,long* plTop
)
1064 CVideoRendererImpl_THIS(iface
,basvid
);
1066 FIXME("(%p)->()\n",This
);
1071 static HRESULT WINAPI
1072 IBasicVideo2_fnput_DestinationHeight(IBasicVideo2
* iface
,long lHeight
)
1074 CVideoRendererImpl_THIS(iface
,basvid
);
1076 FIXME("(%p)->()\n",This
);
1081 static HRESULT WINAPI
1082 IBasicVideo2_fnget_DestinationHeight(IBasicVideo2
* iface
,long* plHeight
)
1084 CVideoRendererImpl_THIS(iface
,basvid
);
1086 FIXME("(%p)->()\n",This
);
1091 static HRESULT WINAPI
1092 IBasicVideo2_fnSetSourcePosition(IBasicVideo2
* iface
,long lLeft
,long lTop
,long lWidth
,long lHeight
)
1094 CVideoRendererImpl_THIS(iface
,basvid
);
1096 FIXME("(%p)->()\n",This
);
1101 static HRESULT WINAPI
1102 IBasicVideo2_fnGetSourcePosition(IBasicVideo2
* iface
,long* plLeft
,long* plTop
,long* plWidth
,long* plHeight
)
1104 CVideoRendererImpl_THIS(iface
,basvid
);
1106 FIXME("(%p)->()\n",This
);
1111 static HRESULT WINAPI
1112 IBasicVideo2_fnSetDefaultSourcePosition(IBasicVideo2
* iface
)
1114 CVideoRendererImpl_THIS(iface
,basvid
);
1116 FIXME("(%p)->()\n",This
);
1121 static HRESULT WINAPI
1122 IBasicVideo2_fnSetDestinationPosition(IBasicVideo2
* iface
,long lLeft
,long lTop
,long lWidth
,long lHeight
)
1124 CVideoRendererImpl_THIS(iface
,basvid
);
1126 FIXME("(%p)->()\n",This
);
1131 static HRESULT WINAPI
1132 IBasicVideo2_fnGetDestinationPosition(IBasicVideo2
* iface
,long* plLeft
,long* plTop
,long* plWidth
,long* plHeight
)
1134 CVideoRendererImpl_THIS(iface
,basvid
);
1136 FIXME("(%p)->()\n",This
);
1141 static HRESULT WINAPI
1142 IBasicVideo2_fnSetDefaultDestinationPosition(IBasicVideo2
* iface
)
1144 CVideoRendererImpl_THIS(iface
,basvid
);
1146 FIXME("(%p)->()\n",This
);
1151 static HRESULT WINAPI
1152 IBasicVideo2_fnGetVideoSize(IBasicVideo2
* iface
,long* plWidth
,long* plHeight
)
1154 CVideoRendererImpl_THIS(iface
,basvid
);
1156 FIXME("(%p)->()\n",This
);
1161 static HRESULT WINAPI
1162 IBasicVideo2_fnGetVideoPaletteEntries(IBasicVideo2
* iface
,long lStart
,long lCount
,long* plRet
,long* plPaletteEntry
)
1164 CVideoRendererImpl_THIS(iface
,basvid
);
1166 FIXME("(%p)->()\n",This
);
1171 static HRESULT WINAPI
1172 IBasicVideo2_fnGetCurrentImage(IBasicVideo2
* iface
,long* plBufferSize
,long* plDIBBuffer
)
1174 CVideoRendererImpl_THIS(iface
,basvid
);
1176 FIXME("(%p)->()\n",This
);
1181 static HRESULT WINAPI
1182 IBasicVideo2_fnIsUsingDefaultSource(IBasicVideo2
* iface
)
1184 CVideoRendererImpl_THIS(iface
,basvid
);
1186 FIXME("(%p)->()\n",This
);
1191 static HRESULT WINAPI
1192 IBasicVideo2_fnIsUsingDefaultDestination(IBasicVideo2
* iface
)
1194 CVideoRendererImpl_THIS(iface
,basvid
);
1196 FIXME("(%p)->()\n",This
);
1201 static HRESULT WINAPI
1202 IBasicVideo2_fnGetPreferredAspectRatio(IBasicVideo2
* iface
,long* plRateX
,long* plRateY
)
1204 CVideoRendererImpl_THIS(iface
,basvid
);
1206 FIXME("(%p)->()\n",This
);
1214 static ICOM_VTABLE(IBasicVideo2
) ibasicvideo
=
1216 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
1217 /* IUnknown fields */
1218 IBasicVideo2_fnQueryInterface
,
1219 IBasicVideo2_fnAddRef
,
1220 IBasicVideo2_fnRelease
,
1221 /* IDispatch fields */
1222 IBasicVideo2_fnGetTypeInfoCount
,
1223 IBasicVideo2_fnGetTypeInfo
,
1224 IBasicVideo2_fnGetIDsOfNames
,
1225 IBasicVideo2_fnInvoke
,
1226 /* IBasicVideo fields */
1227 IBasicVideo2_fnget_AvgTimePerFrame
,
1228 IBasicVideo2_fnget_BitRate
,
1229 IBasicVideo2_fnget_BitErrorRate
,
1230 IBasicVideo2_fnget_VideoWidth
,
1231 IBasicVideo2_fnget_VideoHeight
,
1232 IBasicVideo2_fnput_SourceLeft
,
1233 IBasicVideo2_fnget_SourceLeft
,
1234 IBasicVideo2_fnput_SourceWidth
,
1235 IBasicVideo2_fnget_SourceWidth
,
1236 IBasicVideo2_fnput_SourceTop
,
1237 IBasicVideo2_fnget_SourceTop
,
1238 IBasicVideo2_fnput_SourceHeight
,
1239 IBasicVideo2_fnget_SourceHeight
,
1240 IBasicVideo2_fnput_DestinationLeft
,
1241 IBasicVideo2_fnget_DestinationLeft
,
1242 IBasicVideo2_fnput_DestinationWidth
,
1243 IBasicVideo2_fnget_DestinationWidth
,
1244 IBasicVideo2_fnput_DestinationTop
,
1245 IBasicVideo2_fnget_DestinationTop
,
1246 IBasicVideo2_fnput_DestinationHeight
,
1247 IBasicVideo2_fnget_DestinationHeight
,
1248 IBasicVideo2_fnSetSourcePosition
,
1249 IBasicVideo2_fnGetSourcePosition
,
1250 IBasicVideo2_fnSetDefaultSourcePosition
,
1251 IBasicVideo2_fnSetDestinationPosition
,
1252 IBasicVideo2_fnGetDestinationPosition
,
1253 IBasicVideo2_fnSetDefaultDestinationPosition
,
1254 IBasicVideo2_fnGetVideoSize
,
1255 IBasicVideo2_fnGetVideoPaletteEntries
,
1256 IBasicVideo2_fnGetCurrentImage
,
1257 IBasicVideo2_fnIsUsingDefaultSource
,
1258 IBasicVideo2_fnIsUsingDefaultDestination
,
1259 /* IBasicVideo2 fields */
1260 IBasicVideo2_fnGetPreferredAspectRatio
,
1264 HRESULT
CVideoRendererImpl_InitIBasicVideo2( CVideoRendererImpl
* This
)
1266 TRACE("(%p)\n",This
);
1267 ICOM_VTBL(&This
->basvid
) = &ibasicvideo
;
1272 void CVideoRendererImpl_UninitIBasicVideo2( CVideoRendererImpl
* This
)
1274 TRACE("(%p)\n",This
);
1277 /***************************************************************************
1279 * CVideoRendererImpl::IVideoWindow
1284 static HRESULT WINAPI
1285 IVideoWindow_fnQueryInterface(IVideoWindow
* iface
,REFIID riid
,void** ppobj
)
1287 CVideoRendererImpl_THIS(iface
,vidwin
);
1289 TRACE("(%p)->()\n",This
);
1291 return IUnknown_QueryInterface(This
->unk
.punkControl
,riid
,ppobj
);
1295 IVideoWindow_fnAddRef(IVideoWindow
* iface
)
1297 CVideoRendererImpl_THIS(iface
,vidwin
);
1299 TRACE("(%p)->()\n",This
);
1301 return IUnknown_AddRef(This
->unk
.punkControl
);
1305 IVideoWindow_fnRelease(IVideoWindow
* iface
)
1307 CVideoRendererImpl_THIS(iface
,vidwin
);
1309 TRACE("(%p)->()\n",This
);
1311 return IUnknown_Release(This
->unk
.punkControl
);
1314 static HRESULT WINAPI
1315 IVideoWindow_fnGetTypeInfoCount(IVideoWindow
* iface
,UINT
* pcTypeInfo
)
1317 CVideoRendererImpl_THIS(iface
,vidwin
);
1319 FIXME("(%p)->()\n",This
);
1324 static HRESULT WINAPI
1325 IVideoWindow_fnGetTypeInfo(IVideoWindow
* iface
,UINT iTypeInfo
, LCID lcid
, ITypeInfo
** ppobj
)
1327 CVideoRendererImpl_THIS(iface
,vidwin
);
1329 FIXME("(%p)->()\n",This
);
1334 static HRESULT WINAPI
1335 IVideoWindow_fnGetIDsOfNames(IVideoWindow
* iface
,REFIID riid
, LPOLESTR
* ppwszName
, UINT cNames
, LCID lcid
, DISPID
* pDispId
)
1337 CVideoRendererImpl_THIS(iface
,vidwin
);
1339 FIXME("(%p)->()\n",This
);
1344 static HRESULT WINAPI
1345 IVideoWindow_fnInvoke(IVideoWindow
* iface
,DISPID DispId
, REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
* pDispParams
, VARIANT
* pVarRes
, EXCEPINFO
* pExcepInfo
, UINT
* puArgErr
)
1347 CVideoRendererImpl_THIS(iface
,vidwin
);
1349 FIXME("(%p)->()\n",This
);
1356 static HRESULT WINAPI
1357 IVideoWindow_fnput_Caption(IVideoWindow
* iface
,BSTR strCaption
)
1359 CVideoRendererImpl_THIS(iface
,vidwin
);
1361 FIXME("(%p)->()\n",This
);
1366 static HRESULT WINAPI
1367 IVideoWindow_fnget_Caption(IVideoWindow
* iface
,BSTR
* pstrCaption
)
1369 CVideoRendererImpl_THIS(iface
,vidwin
);
1371 FIXME("(%p)->()\n",This
);
1376 static HRESULT WINAPI
1377 IVideoWindow_fnput_WindowStyle(IVideoWindow
* iface
,long lStyle
)
1379 CVideoRendererImpl_THIS(iface
,vidwin
);
1381 FIXME("(%p)->()\n",This
);
1386 static HRESULT WINAPI
1387 IVideoWindow_fnget_WindowStyle(IVideoWindow
* iface
,long* plStyle
)
1389 CVideoRendererImpl_THIS(iface
,vidwin
);
1391 FIXME("(%p)->()\n",This
);
1396 static HRESULT WINAPI
1397 IVideoWindow_fnput_WindowStyleEx(IVideoWindow
* iface
,long lExStyle
)
1399 CVideoRendererImpl_THIS(iface
,vidwin
);
1401 FIXME("(%p)->()\n",This
);
1406 static HRESULT WINAPI
1407 IVideoWindow_fnget_WindowStyleEx(IVideoWindow
* iface
,long* plExStyle
)
1409 CVideoRendererImpl_THIS(iface
,vidwin
);
1411 FIXME("(%p)->()\n",This
);
1416 static HRESULT WINAPI
1417 IVideoWindow_fnput_AutoShow(IVideoWindow
* iface
,long lAutoShow
)
1419 CVideoRendererImpl_THIS(iface
,vidwin
);
1421 FIXME("(%p)->()\n",This
);
1426 static HRESULT WINAPI
1427 IVideoWindow_fnget_AutoShow(IVideoWindow
* iface
,long* plAutoShow
)
1429 CVideoRendererImpl_THIS(iface
,vidwin
);
1431 FIXME("(%p)->()\n",This
);
1436 static HRESULT WINAPI
1437 IVideoWindow_fnput_WindowState(IVideoWindow
* iface
,long lState
)
1439 CVideoRendererImpl_THIS(iface
,vidwin
);
1441 FIXME("(%p)->()\n",This
);
1446 static HRESULT WINAPI
1447 IVideoWindow_fnget_WindowState(IVideoWindow
* iface
,long* plState
)
1449 CVideoRendererImpl_THIS(iface
,vidwin
);
1451 FIXME("(%p)->()\n",This
);
1456 static HRESULT WINAPI
1457 IVideoWindow_fnput_BackgroundPalette(IVideoWindow
* iface
,long lBackPal
)
1459 CVideoRendererImpl_THIS(iface
,vidwin
);
1461 FIXME("(%p)->()\n",This
);
1466 static HRESULT WINAPI
1467 IVideoWindow_fnget_BackgroundPalette(IVideoWindow
* iface
,long* plBackPal
)
1469 CVideoRendererImpl_THIS(iface
,vidwin
);
1471 FIXME("(%p)->()\n",This
);
1476 static HRESULT WINAPI
1477 IVideoWindow_fnput_Visible(IVideoWindow
* iface
,long lVisible
)
1479 CVideoRendererImpl_THIS(iface
,vidwin
);
1481 FIXME("(%p)->()\n",This
);
1486 static HRESULT WINAPI
1487 IVideoWindow_fnget_Visible(IVideoWindow
* iface
,long* plVisible
)
1489 CVideoRendererImpl_THIS(iface
,vidwin
);
1491 FIXME("(%p)->()\n",This
);
1496 static HRESULT WINAPI
1497 IVideoWindow_fnput_Left(IVideoWindow
* iface
,long lLeft
)
1499 CVideoRendererImpl_THIS(iface
,vidwin
);
1501 FIXME("(%p)->()\n",This
);
1506 static HRESULT WINAPI
1507 IVideoWindow_fnget_Left(IVideoWindow
* iface
,long* plLeft
)
1509 CVideoRendererImpl_THIS(iface
,vidwin
);
1511 FIXME("(%p)->()\n",This
);
1516 static HRESULT WINAPI
1517 IVideoWindow_fnput_Width(IVideoWindow
* iface
,long lWidth
)
1519 CVideoRendererImpl_THIS(iface
,vidwin
);
1521 FIXME("(%p)->()\n",This
);
1526 static HRESULT WINAPI
1527 IVideoWindow_fnget_Width(IVideoWindow
* iface
,long* plWidth
)
1529 CVideoRendererImpl_THIS(iface
,vidwin
);
1531 FIXME("(%p)->()\n",This
);
1536 static HRESULT WINAPI
1537 IVideoWindow_fnput_Top(IVideoWindow
* iface
,long lTop
)
1539 CVideoRendererImpl_THIS(iface
,vidwin
);
1541 FIXME("(%p)->()\n",This
);
1546 static HRESULT WINAPI
1547 IVideoWindow_fnget_Top(IVideoWindow
* iface
,long* plTop
)
1549 CVideoRendererImpl_THIS(iface
,vidwin
);
1551 FIXME("(%p)->()\n",This
);
1556 static HRESULT WINAPI
1557 IVideoWindow_fnput_Height(IVideoWindow
* iface
,long lHeight
)
1559 CVideoRendererImpl_THIS(iface
,vidwin
);
1561 FIXME("(%p)->()\n",This
);
1566 static HRESULT WINAPI
1567 IVideoWindow_fnget_Height(IVideoWindow
* iface
,long* plHeight
)
1569 CVideoRendererImpl_THIS(iface
,vidwin
);
1571 FIXME("(%p)->()\n",This
);
1576 static HRESULT WINAPI
1577 IVideoWindow_fnput_Owner(IVideoWindow
* iface
,OAHWND hwnd
)
1579 CVideoRendererImpl_THIS(iface
,vidwin
);
1581 FIXME("(%p)->()\n",This
);
1586 static HRESULT WINAPI
1587 IVideoWindow_fnget_Owner(IVideoWindow
* iface
,OAHWND
* phwnd
)
1589 CVideoRendererImpl_THIS(iface
,vidwin
);
1591 FIXME("(%p)->()\n",This
);
1596 static HRESULT WINAPI
1597 IVideoWindow_fnput_MessageDrain(IVideoWindow
* iface
,OAHWND hwnd
)
1599 CVideoRendererImpl_THIS(iface
,vidwin
);
1601 FIXME("(%p)->()\n",This
);
1606 static HRESULT WINAPI
1607 IVideoWindow_fnget_MessageDrain(IVideoWindow
* iface
,OAHWND
* phwnd
)
1609 CVideoRendererImpl_THIS(iface
,vidwin
);
1611 FIXME("(%p)->()\n",This
);
1616 static HRESULT WINAPI
1617 IVideoWindow_fnget_BorderColor(IVideoWindow
* iface
,long* plColor
)
1619 CVideoRendererImpl_THIS(iface
,vidwin
);
1621 FIXME("(%p)->()\n",This
);
1626 static HRESULT WINAPI
1627 IVideoWindow_fnput_BorderColor(IVideoWindow
* iface
,long lColor
)
1629 CVideoRendererImpl_THIS(iface
,vidwin
);
1631 FIXME("(%p)->()\n",This
);
1636 static HRESULT WINAPI
1637 IVideoWindow_fnget_FullScreenMode(IVideoWindow
* iface
,long* plMode
)
1639 CVideoRendererImpl_THIS(iface
,vidwin
);
1641 FIXME("(%p)->()\n",This
);
1646 static HRESULT WINAPI
1647 IVideoWindow_fnput_FullScreenMode(IVideoWindow
* iface
,long lMode
)
1649 CVideoRendererImpl_THIS(iface
,vidwin
);
1651 FIXME("(%p)->()\n",This
);
1656 static HRESULT WINAPI
1657 IVideoWindow_fnSetWindowForeground(IVideoWindow
* iface
,long lFocus
)
1659 CVideoRendererImpl_THIS(iface
,vidwin
);
1661 FIXME("(%p)->()\n",This
);
1666 static HRESULT WINAPI
1667 IVideoWindow_fnNotifyOwnerMessage(IVideoWindow
* iface
,OAHWND hwnd
,long message
,LONG_PTR wParam
,LONG_PTR lParam
)
1669 CVideoRendererImpl_THIS(iface
,vidwin
);
1671 FIXME("(%p)->()\n",This
);
1676 static HRESULT WINAPI
1677 IVideoWindow_fnSetWindowPosition(IVideoWindow
* iface
,long lLeft
,long lTop
,long lWidth
,long lHeight
)
1679 CVideoRendererImpl_THIS(iface
,vidwin
);
1681 FIXME("(%p)->()\n",This
);
1686 static HRESULT WINAPI
1687 IVideoWindow_fnGetWindowPosition(IVideoWindow
* iface
,long* plLeft
,long* plTop
,long* plWidth
,long* plHeight
)
1689 CVideoRendererImpl_THIS(iface
,vidwin
);
1691 FIXME("(%p)->()\n",This
);
1696 static HRESULT WINAPI
1697 IVideoWindow_fnGetMinIdealImageSize(IVideoWindow
* iface
,long* plWidth
,long* plHeight
)
1699 CVideoRendererImpl_THIS(iface
,vidwin
);
1701 FIXME("(%p)->()\n",This
);
1706 static HRESULT WINAPI
1707 IVideoWindow_fnGetMaxIdealImageSize(IVideoWindow
* iface
,long* plWidth
,long* plHeight
)
1709 CVideoRendererImpl_THIS(iface
,vidwin
);
1711 FIXME("(%p)->()\n",This
);
1716 static HRESULT WINAPI
1717 IVideoWindow_fnGetRestorePosition(IVideoWindow
* iface
,long* plLeft
,long* plTop
,long* plWidth
,long* plHeight
)
1719 CVideoRendererImpl_THIS(iface
,vidwin
);
1721 FIXME("(%p)->()\n",This
);
1726 static HRESULT WINAPI
1727 IVideoWindow_fnHideCursor(IVideoWindow
* iface
,long lHide
)
1729 CVideoRendererImpl_THIS(iface
,vidwin
);
1731 FIXME("(%p)->()\n",This
);
1736 static HRESULT WINAPI
1737 IVideoWindow_fnIsCursorHidden(IVideoWindow
* iface
,long* plHide
)
1739 CVideoRendererImpl_THIS(iface
,vidwin
);
1741 FIXME("(%p)->()\n",This
);
1749 static ICOM_VTABLE(IVideoWindow
) ivideowindow
=
1751 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
1752 /* IUnknown fields */
1753 IVideoWindow_fnQueryInterface
,
1754 IVideoWindow_fnAddRef
,
1755 IVideoWindow_fnRelease
,
1756 /* IDispatch fields */
1757 IVideoWindow_fnGetTypeInfoCount
,
1758 IVideoWindow_fnGetTypeInfo
,
1759 IVideoWindow_fnGetIDsOfNames
,
1760 IVideoWindow_fnInvoke
,
1761 /* IVideoWindow fields */
1762 IVideoWindow_fnput_Caption
,
1763 IVideoWindow_fnget_Caption
,
1764 IVideoWindow_fnput_WindowStyle
,
1765 IVideoWindow_fnget_WindowStyle
,
1766 IVideoWindow_fnput_WindowStyleEx
,
1767 IVideoWindow_fnget_WindowStyleEx
,
1768 IVideoWindow_fnput_AutoShow
,
1769 IVideoWindow_fnget_AutoShow
,
1770 IVideoWindow_fnput_WindowState
,
1771 IVideoWindow_fnget_WindowState
,
1772 IVideoWindow_fnput_BackgroundPalette
,
1773 IVideoWindow_fnget_BackgroundPalette
,
1774 IVideoWindow_fnput_Visible
,
1775 IVideoWindow_fnget_Visible
,
1776 IVideoWindow_fnput_Left
,
1777 IVideoWindow_fnget_Left
,
1778 IVideoWindow_fnput_Width
,
1779 IVideoWindow_fnget_Width
,
1780 IVideoWindow_fnput_Top
,
1781 IVideoWindow_fnget_Top
,
1782 IVideoWindow_fnput_Height
,
1783 IVideoWindow_fnget_Height
,
1784 IVideoWindow_fnput_Owner
,
1785 IVideoWindow_fnget_Owner
,
1786 IVideoWindow_fnput_MessageDrain
,
1787 IVideoWindow_fnget_MessageDrain
,
1788 IVideoWindow_fnget_BorderColor
,
1789 IVideoWindow_fnput_BorderColor
,
1790 IVideoWindow_fnget_FullScreenMode
,
1791 IVideoWindow_fnput_FullScreenMode
,
1792 IVideoWindow_fnSetWindowForeground
,
1793 IVideoWindow_fnNotifyOwnerMessage
,
1794 IVideoWindow_fnSetWindowPosition
,
1795 IVideoWindow_fnGetWindowPosition
,
1796 IVideoWindow_fnGetMinIdealImageSize
,
1797 IVideoWindow_fnGetMaxIdealImageSize
,
1798 IVideoWindow_fnGetRestorePosition
,
1799 IVideoWindow_fnHideCursor
,
1800 IVideoWindow_fnIsCursorHidden
,
1805 HRESULT
CVideoRendererImpl_InitIVideoWindow( CVideoRendererImpl
* This
)
1807 TRACE("(%p)\n",This
);
1808 ICOM_VTBL(&This
->vidwin
) = &ivideowindow
;
1813 void CVideoRendererImpl_UninitIVideoWindow( CVideoRendererImpl
* This
)
1815 TRACE("(%p)\n",This
);