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_csReceive );
133 VIDREN_OnPaint( This, hwnd );
134 LeaveCriticalSection( &This->m_csReceive );
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_csReceive );
324 This->m_bSampleIsValid = FALSE;
325 LeaveCriticalSection( &This->m_csReceive );
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 memcpy(This->pRender->m_pSampleData,pData,lLength);
489 This->pRender->m_bSampleIsValid = TRUE;
490 PostMessageA( hwnd, VIDRENMSG_UPDATE, 0, 0 );
495 static HRESULT CVideoRendererPinImpl_ReceiveCanBlock( CPinBaseImpl* pImpl )
497 CVideoRendererPinImpl_THIS(pImpl,pin);
499 TRACE( "(%p)\n", This );
505 static HRESULT CVideoRendererPinImpl_EndOfStream( CPinBaseImpl* pImpl )
507 CVideoRendererPinImpl_THIS(pImpl,pin);
509 FIXME( "(%p)\n", This );
511 This->pRender->m_fInFlush = FALSE;
513 /* FIXME - don't notify twice until stopped or seeked. */
514 return CBaseFilterImpl_MediaEventNotify(
515 &This->pRender->basefilter, EC_COMPLETE,
516 (LONG_PTR)S_OK, (LONG_PTR)(IBaseFilter*)(This->pRender) );
519 static HRESULT CVideoRendererPinImpl_BeginFlush( CPinBaseImpl* pImpl )
521 CVideoRendererPinImpl_THIS(pImpl,pin);
523 FIXME( "(%p)\n", This );
525 This->pRender->m_fInFlush = TRUE;
526 EnterCriticalSection( &This->pRender->m_csReceive );
527 This->pRender->m_bSampleIsValid = FALSE;
528 LeaveCriticalSection( &This->pRender->m_csReceive );
533 static HRESULT CVideoRendererPinImpl_EndFlush( CPinBaseImpl* pImpl )
535 CVideoRendererPinImpl_THIS(pImpl,pin);
537 FIXME( "(%p)\n", This );
539 This->pRender->m_fInFlush = FALSE;
544 static HRESULT CVideoRendererPinImpl_NewSegment( CPinBaseImpl* pImpl, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate )
546 CVideoRendererPinImpl_THIS(pImpl,pin);
548 FIXME( "(%p)\n", This );
550 This->pRender->m_fInFlush = FALSE;
558 static const CBasePinHandlers pinhandlers =
560 CVideoRendererPinImpl_OnPreConnect, /* pOnPreConnect */
561 CVideoRendererPinImpl_OnPostConnect, /* pOnPostConnect */
562 CVideoRendererPinImpl_OnDisconnect, /* pOnDisconnect */
563 CVideoRendererPinImpl_CheckMediaType, /* pCheckMediaType */
564 NULL, /* pQualityNotify */
565 CVideoRendererPinImpl_Receive, /* pReceive */
566 CVideoRendererPinImpl_ReceiveCanBlock, /* pReceiveCanBlock */
567 CVideoRendererPinImpl_EndOfStream, /* pEndOfStream */
568 CVideoRendererPinImpl_BeginFlush, /* pBeginFlush */
569 CVideoRendererPinImpl_EndFlush, /* pEndFlush */
570 CVideoRendererPinImpl_NewSegment, /* pNewSegment */
574 /***************************************************************************
576 * new/delete CVideoRendererImpl
580 /* can I use offsetof safely? - FIXME? */
581 static QUARTZ_IFEntry FilterIFEntries[] =
583 { &IID_IPersist, offsetof(CVideoRendererImpl,basefilter)-offsetof(CVideoRendererImpl,unk) },
584 { &IID_IMediaFilter, offsetof(CVideoRendererImpl,basefilter)-offsetof(CVideoRendererImpl,unk) },
585 { &IID_IBaseFilter, offsetof(CVideoRendererImpl,basefilter)-offsetof(CVideoRendererImpl,unk) },
586 { &IID_IBasicVideo, offsetof(CVideoRendererImpl,basvid)-offsetof(CVideoRendererImpl,unk) },
587 { &IID_IBasicVideo2, offsetof(CVideoRendererImpl,basvid)-offsetof(CVideoRendererImpl,unk) },
588 { &IID_IVideoWindow, offsetof(CVideoRendererImpl,vidwin)-offsetof(CVideoRendererImpl,unk) },
591 static HRESULT CVideoRendererImpl_OnQueryInterface(
592 IUnknown* punk, const IID* piid, void** ppobj )
594 CVideoRendererImpl_THIS(punk,unk);
596 if ( This->pSeekPass == NULL )
597 return E_NOINTERFACE;
599 if ( IsEqualGUID( &IID_IMediaPosition, piid ) ||
600 IsEqualGUID( &IID_IMediaSeeking, piid ) )
602 TRACE( "IMediaSeeking(or IMediaPosition) is queried\n" );
603 return IUnknown_QueryInterface( (IUnknown*)(&This->pSeekPass->unk), piid, ppobj );
606 return E_NOINTERFACE;
609 static void QUARTZ_DestroyVideoRenderer(IUnknown* punk)
611 CVideoRendererImpl_THIS(punk,unk);
613 TRACE( "(%p)\n", This );
614 CVideoRendererImpl_OnInactive(&This->basefilter);
615 VIDREN_EndThread(This);
617 if ( This->pPin != NULL )
619 IUnknown_Release(This->pPin->unk.punkControl);
622 if ( This->pSeekPass != NULL )
624 IUnknown_Release((IUnknown*)&This->pSeekPass->unk);
625 This->pSeekPass = NULL;
628 CVideoRendererImpl_UninitIBasicVideo2(This);
629 CVideoRendererImpl_UninitIVideoWindow(This);
630 CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
632 DeleteCriticalSection( &This->m_csReceive );
635 HRESULT QUARTZ_CreateVideoRenderer(IUnknown* punkOuter,void** ppobj)
637 CVideoRendererImpl* This = NULL;
640 TRACE("(%p,%p)\n",punkOuter,ppobj);
642 This = (CVideoRendererImpl*)
643 QUARTZ_AllocObj( sizeof(CVideoRendererImpl) );
645 return E_OUTOFMEMORY;
646 This->pSeekPass = NULL;
648 This->m_fInFlush = FALSE;
650 This->m_hEventInit = (HANDLE)NULL;
651 This->m_hThread = (HANDLE)NULL;
652 This->m_hwnd = (HWND)NULL;
653 This->m_bSampleIsValid = FALSE;
654 This->m_pSampleData = NULL;
655 This->m_cbSampleData = 0;
657 QUARTZ_IUnkInit( &This->unk, punkOuter );
658 This->qiext.pNext = NULL;
659 This->qiext.pOnQueryInterface = &CVideoRendererImpl_OnQueryInterface;
660 QUARTZ_IUnkAddDelegation( &This->unk, &This->qiext );
662 hr = CBaseFilterImpl_InitIBaseFilter(
664 This->unk.punkControl,
665 &CLSID_VideoRenderer,
666 QUARTZ_VideoRenderer_Name,
670 hr = CVideoRendererImpl_InitIBasicVideo2(This);
673 hr = CVideoRendererImpl_InitIVideoWindow(This);
676 CVideoRendererImpl_UninitIBasicVideo2(This);
681 CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
687 QUARTZ_FreeObj(This);
691 This->unk.pEntries = FilterIFEntries;
692 This->unk.dwEntries = sizeof(FilterIFEntries)/sizeof(FilterIFEntries[0]);
693 This->unk.pOnFinalRelease = QUARTZ_DestroyVideoRenderer;
695 InitializeCriticalSection( &This->m_csReceive );
697 hr = QUARTZ_CreateVideoRendererPin(
699 &This->basefilter.csFilter,
703 hr = QUARTZ_CompList_AddComp(
704 This->basefilter.pInPins,
705 (IUnknown*)&This->pPin->pin,
708 hr = QUARTZ_CreateSeekingPassThruInternal(
709 (IUnknown*)&(This->unk), &This->pSeekPass,
710 TRUE, (IPin*)&(This->pPin->pin) );
714 IUnknown_Release( This->unk.punkControl );
718 *ppobj = (void*)&(This->unk);
723 /***************************************************************************
725 * new/delete CVideoRendererPinImpl
729 /* can I use offsetof safely? - FIXME? */
730 static QUARTZ_IFEntry PinIFEntries[] =
732 { &IID_IPin, offsetof(CVideoRendererPinImpl,pin)-offsetof(CVideoRendererPinImpl,unk) },
733 { &IID_IMemInputPin, offsetof(CVideoRendererPinImpl,meminput)-offsetof(CVideoRendererPinImpl,unk) },
736 static void QUARTZ_DestroyVideoRendererPin(IUnknown* punk)
738 CVideoRendererPinImpl_THIS(punk,unk);
740 TRACE( "(%p)\n", This );
742 CPinBaseImpl_UninitIPin( &This->pin );
743 CMemInputPinBaseImpl_UninitIMemInputPin( &This->meminput );
746 HRESULT QUARTZ_CreateVideoRendererPin(
747 CVideoRendererImpl* pFilter,
748 CRITICAL_SECTION* pcsPin,
749 CRITICAL_SECTION* pcsPinReceive,
750 CVideoRendererPinImpl** ppPin)
752 CVideoRendererPinImpl* This = NULL;
755 TRACE("(%p,%p,%p,%p)\n",pFilter,pcsPin,pcsPinReceive,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,
768 pcsPin, pcsPinReceive,
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);