/* * Implementation of IBasicAudio, IBasicVideo2, IVideoWindow for FilterGraph. * * hidenori@a2.ctktv.ne.jp */ #include "config.h" #include "windef.h" #include "winbase.h" #include "wingdi.h" #include "winuser.h" #include "winerror.h" #include "strmif.h" #include "control.h" #include "uuids.h" #include "debugtools.h" DEFAULT_DEBUG_CHANNEL(quartz); #include "quartz_private.h" #include "fgraph.h" static HRESULT CFilterGraph_QIFilters( CFilterGraph* This, REFIID riid, void** ppvobj ) { QUARTZ_CompListItem* pItem; HRESULT hr = E_NOINTERFACE; TRACE( "(%p,%p,%p)\n",This,riid,ppvobj); QUARTZ_CompList_Lock( This->m_pFilterList ); pItem = QUARTZ_CompList_GetLast( This->m_pFilterList ); while ( pItem != NULL ) { if ( IUnknown_QueryInterface( QUARTZ_CompList_GetItemPtr(pItem),riid,ppvobj) == S_OK ) { hr = S_OK; break; } pItem = QUARTZ_CompList_GetPrev( This->m_pFilterList, pItem ); } QUARTZ_CompList_Unlock( This->m_pFilterList ); return hr; } static HRESULT CFilterGraph_QueryBasicAudio( CFilterGraph* This, IBasicAudio** ppAudio ) { return CFilterGraph_QIFilters(This,&IID_IBasicAudio,(void**)ppAudio); } static HRESULT CFilterGraph_QueryBasicVideo( CFilterGraph* This, IBasicVideo** ppVideo ) { return CFilterGraph_QIFilters(This,&IID_IBasicVideo,(void**)ppVideo); } static HRESULT CFilterGraph_QueryBasicVideo2( CFilterGraph* This, IBasicVideo2** ppVideo ) { return CFilterGraph_QIFilters(This,&IID_IBasicVideo2,(void**)ppVideo); } static HRESULT CFilterGraph_QueryVideoWindow( CFilterGraph* This, IVideoWindow** ppVidWin ) { return CFilterGraph_QIFilters(This,&IID_IVideoWindow,(void**)ppVidWin); } /*************************************************************************** * * CFilterGraph::IBasicAudio * */ #define QUERYBASICAUDIO \ IBasicAudio* pAudio = NULL; \ HRESULT hr; \ hr = CFilterGraph_QueryBasicAudio( This, &pAudio ); \ if ( FAILED(hr) ) return hr; static HRESULT WINAPI IBasicAudio_fnQueryInterface(IBasicAudio* iface,REFIID riid,void** ppobj) { CFilterGraph_THIS(iface,basaud); TRACE("(%p)->()\n",This); return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj); } static ULONG WINAPI IBasicAudio_fnAddRef(IBasicAudio* iface) { CFilterGraph_THIS(iface,basaud); TRACE("(%p)->()\n",This); return IUnknown_AddRef(This->unk.punkControl); } static ULONG WINAPI IBasicAudio_fnRelease(IBasicAudio* iface) { CFilterGraph_THIS(iface,basaud); TRACE("(%p)->()\n",This); return IUnknown_Release(This->unk.punkControl); } static HRESULT WINAPI IBasicAudio_fnGetTypeInfoCount(IBasicAudio* iface,UINT* pcTypeInfo) { CFilterGraph_THIS(iface,basaud); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IBasicAudio_fnGetTypeInfo(IBasicAudio* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj) { CFilterGraph_THIS(iface,basaud); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IBasicAudio_fnGetIDsOfNames(IBasicAudio* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId) { CFilterGraph_THIS(iface,basaud); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IBasicAudio_fnInvoke(IBasicAudio* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr) { CFilterGraph_THIS(iface,basaud); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IBasicAudio_fnput_Volume(IBasicAudio* iface,long lVol) { CFilterGraph_THIS(iface,basaud); QUERYBASICAUDIO TRACE("(%p)->()\n",This); return IBasicAudio_put_Volume(pAudio,lVol); } static HRESULT WINAPI IBasicAudio_fnget_Volume(IBasicAudio* iface,long* plVol) { CFilterGraph_THIS(iface,basaud); QUERYBASICAUDIO TRACE("(%p)->()\n",This); return IBasicAudio_get_Volume(pAudio,plVol); } static HRESULT WINAPI IBasicAudio_fnput_Balance(IBasicAudio* iface,long lBalance) { CFilterGraph_THIS(iface,basaud); QUERYBASICAUDIO TRACE("(%p)->()\n",This); return IBasicAudio_put_Balance(pAudio,lBalance); } static HRESULT WINAPI IBasicAudio_fnget_Balance(IBasicAudio* iface,long* plBalance) { CFilterGraph_THIS(iface,basaud); QUERYBASICAUDIO TRACE("(%p)->()\n",This); return IBasicAudio_get_Balance(pAudio,plBalance); } static ICOM_VTABLE(IBasicAudio) ibasicaudio = { ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE /* IUnknown fields */ IBasicAudio_fnQueryInterface, IBasicAudio_fnAddRef, IBasicAudio_fnRelease, /* IDispatch fields */ IBasicAudio_fnGetTypeInfoCount, IBasicAudio_fnGetTypeInfo, IBasicAudio_fnGetIDsOfNames, IBasicAudio_fnInvoke, /* IBasicAudio fields */ IBasicAudio_fnput_Volume, IBasicAudio_fnget_Volume, IBasicAudio_fnput_Balance, IBasicAudio_fnget_Balance, }; HRESULT CFilterGraph_InitIBasicAudio( CFilterGraph* pfg ) { TRACE("(%p)\n",pfg); ICOM_VTBL(&pfg->basaud) = &ibasicaudio; return NOERROR; } void CFilterGraph_UninitIBasicAudio( CFilterGraph* pfg ) { TRACE("(%p)\n",pfg); } #undef QUERYBASICAUDIO /*************************************************************************** * * CFilterGraph::IBasicVideo2 * */ #define QUERYBASICVIDEO \ IBasicVideo* pVideo = NULL; \ HRESULT hr; \ hr = CFilterGraph_QueryBasicVideo( This, &pVideo ); \ if ( FAILED(hr) ) return hr; #define QUERYBASICVIDEO2 \ IBasicVideo2* pVideo = NULL; \ HRESULT hr; \ hr = CFilterGraph_QueryBasicVideo2( This, &pVideo ); \ if ( FAILED(hr) ) return hr; static HRESULT WINAPI IBasicVideo2_fnQueryInterface(IBasicVideo2* iface,REFIID riid,void** ppobj) { CFilterGraph_THIS(iface,basvid); TRACE("(%p)->()\n",This); return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj); } static ULONG WINAPI IBasicVideo2_fnAddRef(IBasicVideo2* iface) { CFilterGraph_THIS(iface,basvid); TRACE("(%p)->()\n",This); return IUnknown_AddRef(This->unk.punkControl); } static ULONG WINAPI IBasicVideo2_fnRelease(IBasicVideo2* iface) { CFilterGraph_THIS(iface,basvid); TRACE("(%p)->()\n",This); return IUnknown_Release(This->unk.punkControl); } static HRESULT WINAPI IBasicVideo2_fnGetTypeInfoCount(IBasicVideo2* iface,UINT* pcTypeInfo) { CFilterGraph_THIS(iface,basvid); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IBasicVideo2_fnGetTypeInfo(IBasicVideo2* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj) { CFilterGraph_THIS(iface,basvid); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IBasicVideo2_fnGetIDsOfNames(IBasicVideo2* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId) { CFilterGraph_THIS(iface,basvid); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IBasicVideo2_fnInvoke(IBasicVideo2* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr) { CFilterGraph_THIS(iface,basvid); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IBasicVideo2_fnget_AvgTimePerFrame(IBasicVideo2* iface,REFTIME* prefTime) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_AvgTimePerFrame(pVideo,prefTime); } static HRESULT WINAPI IBasicVideo2_fnget_BitRate(IBasicVideo2* iface,long* plRate) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_BitRate(pVideo,plRate); } static HRESULT WINAPI IBasicVideo2_fnget_BitErrorRate(IBasicVideo2* iface,long* plRate) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_BitErrorRate(pVideo,plRate); } static HRESULT WINAPI IBasicVideo2_fnget_VideoWidth(IBasicVideo2* iface,long* plWidth) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_VideoWidth(pVideo,plWidth); } static HRESULT WINAPI IBasicVideo2_fnget_VideoHeight(IBasicVideo2* iface,long* plHeight) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_VideoHeight(pVideo,plHeight); } static HRESULT WINAPI IBasicVideo2_fnput_SourceLeft(IBasicVideo2* iface,long lLeft) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_put_SourceLeft(pVideo,lLeft); } static HRESULT WINAPI IBasicVideo2_fnget_SourceLeft(IBasicVideo2* iface,long* plLeft) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_SourceLeft(pVideo,plLeft); } static HRESULT WINAPI IBasicVideo2_fnput_SourceWidth(IBasicVideo2* iface,long lWidth) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_put_SourceWidth(pVideo,lWidth); } static HRESULT WINAPI IBasicVideo2_fnget_SourceWidth(IBasicVideo2* iface,long* plWidth) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_SourceWidth(pVideo,plWidth); } static HRESULT WINAPI IBasicVideo2_fnput_SourceTop(IBasicVideo2* iface,long lTop) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_put_SourceTop(pVideo,lTop); } static HRESULT WINAPI IBasicVideo2_fnget_SourceTop(IBasicVideo2* iface,long* plTop) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_SourceTop(pVideo,plTop); } static HRESULT WINAPI IBasicVideo2_fnput_SourceHeight(IBasicVideo2* iface,long lHeight) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_put_SourceHeight(pVideo,lHeight); } static HRESULT WINAPI IBasicVideo2_fnget_SourceHeight(IBasicVideo2* iface,long* plHeight) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_SourceHeight(pVideo,plHeight); } static HRESULT WINAPI IBasicVideo2_fnput_DestinationLeft(IBasicVideo2* iface,long lLeft) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_put_DestinationLeft(pVideo,lLeft); } static HRESULT WINAPI IBasicVideo2_fnget_DestinationLeft(IBasicVideo2* iface,long* plLeft) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_DestinationLeft(pVideo,plLeft); } static HRESULT WINAPI IBasicVideo2_fnput_DestinationWidth(IBasicVideo2* iface,long lWidth) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_put_DestinationWidth(pVideo,lWidth); } static HRESULT WINAPI IBasicVideo2_fnget_DestinationWidth(IBasicVideo2* iface,long* plWidth) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_DestinationWidth(pVideo,plWidth); } static HRESULT WINAPI IBasicVideo2_fnput_DestinationTop(IBasicVideo2* iface,long lTop) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_put_DestinationTop(pVideo,lTop); } static HRESULT WINAPI IBasicVideo2_fnget_DestinationTop(IBasicVideo2* iface,long* plTop) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_DestinationTop(pVideo,plTop); } static HRESULT WINAPI IBasicVideo2_fnput_DestinationHeight(IBasicVideo2* iface,long lHeight) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_put_DestinationHeight(pVideo,lHeight); } static HRESULT WINAPI IBasicVideo2_fnget_DestinationHeight(IBasicVideo2* iface,long* plHeight) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_get_DestinationHeight(pVideo,plHeight); } static HRESULT WINAPI IBasicVideo2_fnSetSourcePosition(IBasicVideo2* iface,long lLeft,long lTop,long lWidth,long lHeight) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_SetSourcePosition(pVideo,lLeft,lTop,lWidth,lHeight); } static HRESULT WINAPI IBasicVideo2_fnGetSourcePosition(IBasicVideo2* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_GetSourcePosition(pVideo,plLeft,plTop,plWidth,plHeight); } static HRESULT WINAPI IBasicVideo2_fnSetDefaultSourcePosition(IBasicVideo2* iface) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_SetDefaultSourcePosition(pVideo); } static HRESULT WINAPI IBasicVideo2_fnSetDestinationPosition(IBasicVideo2* iface,long lLeft,long lTop,long lWidth,long lHeight) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_SetDestinationPosition(pVideo,lLeft,lTop,lWidth,lHeight); } static HRESULT WINAPI IBasicVideo2_fnGetDestinationPosition(IBasicVideo2* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_GetDestinationPosition(pVideo,plLeft,plTop,plWidth,plHeight); } static HRESULT WINAPI IBasicVideo2_fnSetDefaultDestinationPosition(IBasicVideo2* iface) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_SetDefaultDestinationPosition(pVideo); } static HRESULT WINAPI IBasicVideo2_fnGetVideoSize(IBasicVideo2* iface,long* plWidth,long* plHeight) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_GetVideoSize(pVideo,plWidth,plHeight); } static HRESULT WINAPI IBasicVideo2_fnGetVideoPaletteEntries(IBasicVideo2* iface,long lStart,long lCount,long* plRet,long* plPaletteEntry) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_GetVideoPaletteEntries(pVideo,lStart,lCount,plRet,plPaletteEntry); } static HRESULT WINAPI IBasicVideo2_fnGetCurrentImage(IBasicVideo2* iface,long* plBufferSize,long* plDIBBuffer) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_GetCurrentImage(pVideo,plBufferSize,plDIBBuffer); } static HRESULT WINAPI IBasicVideo2_fnIsUsingDefaultSource(IBasicVideo2* iface) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_IsUsingDefaultSource(pVideo); } static HRESULT WINAPI IBasicVideo2_fnIsUsingDefaultDestination(IBasicVideo2* iface) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO TRACE("(%p)->()\n",This); return IBasicVideo_IsUsingDefaultDestination(pVideo); } static HRESULT WINAPI IBasicVideo2_fnGetPreferredAspectRatio(IBasicVideo2* iface,long* plRateX,long* plRateY) { CFilterGraph_THIS(iface,basvid); QUERYBASICVIDEO2 TRACE("(%p)->()\n",This); return IBasicVideo2_GetPreferredAspectRatio(pVideo,plRateX,plRateY); } static ICOM_VTABLE(IBasicVideo2) ibasicvideo = { ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE /* IUnknown fields */ IBasicVideo2_fnQueryInterface, IBasicVideo2_fnAddRef, IBasicVideo2_fnRelease, /* IDispatch fields */ IBasicVideo2_fnGetTypeInfoCount, IBasicVideo2_fnGetTypeInfo, IBasicVideo2_fnGetIDsOfNames, IBasicVideo2_fnInvoke, /* IBasicVideo fields */ IBasicVideo2_fnget_AvgTimePerFrame, IBasicVideo2_fnget_BitRate, IBasicVideo2_fnget_BitErrorRate, IBasicVideo2_fnget_VideoWidth, IBasicVideo2_fnget_VideoHeight, IBasicVideo2_fnput_SourceLeft, IBasicVideo2_fnget_SourceLeft, IBasicVideo2_fnput_SourceWidth, IBasicVideo2_fnget_SourceWidth, IBasicVideo2_fnput_SourceTop, IBasicVideo2_fnget_SourceTop, IBasicVideo2_fnput_SourceHeight, IBasicVideo2_fnget_SourceHeight, IBasicVideo2_fnput_DestinationLeft, IBasicVideo2_fnget_DestinationLeft, IBasicVideo2_fnput_DestinationWidth, IBasicVideo2_fnget_DestinationWidth, IBasicVideo2_fnput_DestinationTop, IBasicVideo2_fnget_DestinationTop, IBasicVideo2_fnput_DestinationHeight, IBasicVideo2_fnget_DestinationHeight, IBasicVideo2_fnSetSourcePosition, IBasicVideo2_fnGetSourcePosition, IBasicVideo2_fnSetDefaultSourcePosition, IBasicVideo2_fnSetDestinationPosition, IBasicVideo2_fnGetDestinationPosition, IBasicVideo2_fnSetDefaultDestinationPosition, IBasicVideo2_fnGetVideoSize, IBasicVideo2_fnGetVideoPaletteEntries, IBasicVideo2_fnGetCurrentImage, IBasicVideo2_fnIsUsingDefaultSource, IBasicVideo2_fnIsUsingDefaultDestination, /* IBasicVideo2 fields */ IBasicVideo2_fnGetPreferredAspectRatio, }; HRESULT CFilterGraph_InitIBasicVideo2( CFilterGraph* pfg ) { TRACE("(%p)\n",pfg); ICOM_VTBL(&pfg->basvid) = &ibasicvideo; return NOERROR; } void CFilterGraph_UninitIBasicVideo2( CFilterGraph* pfg ) { TRACE("(%p)\n",pfg); } #undef QUERYBASICVIDEO2 #undef QUERYBASICVIDEO /*************************************************************************** * * CFilterGraph::IVideoWindow * */ #define QUERYVIDEOWINDOW \ IVideoWindow* pVidWin = NULL; \ HRESULT hr; \ hr = CFilterGraph_QueryVideoWindow( This, &pVidWin ); \ if ( FAILED(hr) ) return hr; static HRESULT WINAPI IVideoWindow_fnQueryInterface(IVideoWindow* iface,REFIID riid,void** ppobj) { CFilterGraph_THIS(iface,vidwin); TRACE("(%p)->()\n",This); return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj); } static ULONG WINAPI IVideoWindow_fnAddRef(IVideoWindow* iface) { CFilterGraph_THIS(iface,vidwin); TRACE("(%p)->()\n",This); return IUnknown_AddRef(This->unk.punkControl); } static ULONG WINAPI IVideoWindow_fnRelease(IVideoWindow* iface) { CFilterGraph_THIS(iface,vidwin); TRACE("(%p)->()\n",This); return IUnknown_Release(This->unk.punkControl); } static HRESULT WINAPI IVideoWindow_fnGetTypeInfoCount(IVideoWindow* iface,UINT* pcTypeInfo) { CFilterGraph_THIS(iface,vidwin); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IVideoWindow_fnGetTypeInfo(IVideoWindow* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj) { CFilterGraph_THIS(iface,vidwin); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IVideoWindow_fnGetIDsOfNames(IVideoWindow* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId) { CFilterGraph_THIS(iface,vidwin); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IVideoWindow_fnInvoke(IVideoWindow* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr) { CFilterGraph_THIS(iface,vidwin); FIXME("(%p)->()\n",This); return E_NOTIMPL; } static HRESULT WINAPI IVideoWindow_fnput_Caption(IVideoWindow* iface,BSTR strCaption) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_Caption(pVidWin,strCaption); } static HRESULT WINAPI IVideoWindow_fnget_Caption(IVideoWindow* iface,BSTR* pstrCaption) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_Caption(pVidWin,pstrCaption); } static HRESULT WINAPI IVideoWindow_fnput_WindowStyle(IVideoWindow* iface,long lStyle) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_WindowStyle(pVidWin,lStyle); } static HRESULT WINAPI IVideoWindow_fnget_WindowStyle(IVideoWindow* iface,long* plStyle) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_WindowStyle(pVidWin,plStyle); } static HRESULT WINAPI IVideoWindow_fnput_WindowStyleEx(IVideoWindow* iface,long lExStyle) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_WindowStyleEx(pVidWin,lExStyle); } static HRESULT WINAPI IVideoWindow_fnget_WindowStyleEx(IVideoWindow* iface,long* plExStyle) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_WindowStyleEx(pVidWin,plExStyle); } static HRESULT WINAPI IVideoWindow_fnput_AutoShow(IVideoWindow* iface,long lAutoShow) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_AutoShow(pVidWin,lAutoShow); } static HRESULT WINAPI IVideoWindow_fnget_AutoShow(IVideoWindow* iface,long* plAutoShow) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_AutoShow(pVidWin,plAutoShow); } static HRESULT WINAPI IVideoWindow_fnput_WindowState(IVideoWindow* iface,long lState) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_WindowState(pVidWin,lState); } static HRESULT WINAPI IVideoWindow_fnget_WindowState(IVideoWindow* iface,long* plState) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_WindowState(pVidWin,plState); } static HRESULT WINAPI IVideoWindow_fnput_BackgroundPalette(IVideoWindow* iface,long lBackPal) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_BackgroundPalette(pVidWin,lBackPal); } static HRESULT WINAPI IVideoWindow_fnget_BackgroundPalette(IVideoWindow* iface,long* plBackPal) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_BackgroundPalette(pVidWin,plBackPal); } static HRESULT WINAPI IVideoWindow_fnput_Visible(IVideoWindow* iface,long lVisible) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_Visible(pVidWin,lVisible); } static HRESULT WINAPI IVideoWindow_fnget_Visible(IVideoWindow* iface,long* plVisible) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_Visible(pVidWin,plVisible); } static HRESULT WINAPI IVideoWindow_fnput_Left(IVideoWindow* iface,long lLeft) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_Left(pVidWin,lLeft); } static HRESULT WINAPI IVideoWindow_fnget_Left(IVideoWindow* iface,long* plLeft) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_Left(pVidWin,plLeft); } static HRESULT WINAPI IVideoWindow_fnput_Width(IVideoWindow* iface,long lWidth) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_Width(pVidWin,lWidth); } static HRESULT WINAPI IVideoWindow_fnget_Width(IVideoWindow* iface,long* plWidth) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_Width(pVidWin,plWidth); } static HRESULT WINAPI IVideoWindow_fnput_Top(IVideoWindow* iface,long lTop) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_Top(pVidWin,lTop); } static HRESULT WINAPI IVideoWindow_fnget_Top(IVideoWindow* iface,long* plTop) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_Top(pVidWin,plTop); } static HRESULT WINAPI IVideoWindow_fnput_Height(IVideoWindow* iface,long lHeight) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_Height(pVidWin,lHeight); } static HRESULT WINAPI IVideoWindow_fnget_Height(IVideoWindow* iface,long* plHeight) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_Height(pVidWin,plHeight); } static HRESULT WINAPI IVideoWindow_fnput_Owner(IVideoWindow* iface,OAHWND hwnd) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_Owner(pVidWin,hwnd); } static HRESULT WINAPI IVideoWindow_fnget_Owner(IVideoWindow* iface,OAHWND* phwnd) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_Owner(pVidWin,phwnd); } static HRESULT WINAPI IVideoWindow_fnput_MessageDrain(IVideoWindow* iface,OAHWND hwnd) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_MessageDrain(pVidWin,hwnd); } static HRESULT WINAPI IVideoWindow_fnget_MessageDrain(IVideoWindow* iface,OAHWND* phwnd) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_MessageDrain(pVidWin,phwnd); } static HRESULT WINAPI IVideoWindow_fnget_BorderColor(IVideoWindow* iface,long* plColor) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_BorderColor(pVidWin,plColor); } static HRESULT WINAPI IVideoWindow_fnput_BorderColor(IVideoWindow* iface,long lColor) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_BorderColor(pVidWin,lColor); } static HRESULT WINAPI IVideoWindow_fnget_FullScreenMode(IVideoWindow* iface,long* plMode) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_get_FullScreenMode(pVidWin,plMode); } static HRESULT WINAPI IVideoWindow_fnput_FullScreenMode(IVideoWindow* iface,long lMode) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_put_FullScreenMode(pVidWin,lMode); } static HRESULT WINAPI IVideoWindow_fnSetWindowForeground(IVideoWindow* iface,long lFocus) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_SetWindowForeground(pVidWin,lFocus); } static HRESULT WINAPI IVideoWindow_fnNotifyOwnerMessage(IVideoWindow* iface,OAHWND hwnd,long message,LONG_PTR wParam,LONG_PTR lParam) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_NotifyOwnerMessage(pVidWin,hwnd,message,wParam,lParam); } static HRESULT WINAPI IVideoWindow_fnSetWindowPosition(IVideoWindow* iface,long lLeft,long lTop,long lWidth,long lHeight) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_SetWindowPosition(pVidWin,lLeft,lTop,lWidth,lHeight); } static HRESULT WINAPI IVideoWindow_fnGetWindowPosition(IVideoWindow* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_GetWindowPosition(pVidWin,plLeft,plTop,plWidth,plHeight); } static HRESULT WINAPI IVideoWindow_fnGetMinIdealImageSize(IVideoWindow* iface,long* plWidth,long* plHeight) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_GetMinIdealImageSize(pVidWin,plWidth,plHeight); } static HRESULT WINAPI IVideoWindow_fnGetMaxIdealImageSize(IVideoWindow* iface,long* plWidth,long* plHeight) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_GetMaxIdealImageSize(pVidWin,plWidth,plHeight); } static HRESULT WINAPI IVideoWindow_fnGetRestorePosition(IVideoWindow* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_GetRestorePosition(pVidWin,plLeft,plTop,plWidth,plHeight); } static HRESULT WINAPI IVideoWindow_fnHideCursor(IVideoWindow* iface,long lHide) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_HideCursor(pVidWin,lHide); } static HRESULT WINAPI IVideoWindow_fnIsCursorHidden(IVideoWindow* iface,long* plHide) { CFilterGraph_THIS(iface,vidwin); QUERYVIDEOWINDOW TRACE("(%p)->()\n",This); return IVideoWindow_IsCursorHidden(pVidWin,plHide); } static ICOM_VTABLE(IVideoWindow) ivideowindow = { ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE /* IUnknown fields */ IVideoWindow_fnQueryInterface, IVideoWindow_fnAddRef, IVideoWindow_fnRelease, /* IDispatch fields */ IVideoWindow_fnGetTypeInfoCount, IVideoWindow_fnGetTypeInfo, IVideoWindow_fnGetIDsOfNames, IVideoWindow_fnInvoke, /* IVideoWindow fields */ IVideoWindow_fnput_Caption, IVideoWindow_fnget_Caption, IVideoWindow_fnput_WindowStyle, IVideoWindow_fnget_WindowStyle, IVideoWindow_fnput_WindowStyleEx, IVideoWindow_fnget_WindowStyleEx, IVideoWindow_fnput_AutoShow, IVideoWindow_fnget_AutoShow, IVideoWindow_fnput_WindowState, IVideoWindow_fnget_WindowState, IVideoWindow_fnput_BackgroundPalette, IVideoWindow_fnget_BackgroundPalette, IVideoWindow_fnput_Visible, IVideoWindow_fnget_Visible, IVideoWindow_fnput_Left, IVideoWindow_fnget_Left, IVideoWindow_fnput_Width, IVideoWindow_fnget_Width, IVideoWindow_fnput_Top, IVideoWindow_fnget_Top, IVideoWindow_fnput_Height, IVideoWindow_fnget_Height, IVideoWindow_fnput_Owner, IVideoWindow_fnget_Owner, IVideoWindow_fnput_MessageDrain, IVideoWindow_fnget_MessageDrain, IVideoWindow_fnget_BorderColor, IVideoWindow_fnput_BorderColor, IVideoWindow_fnget_FullScreenMode, IVideoWindow_fnput_FullScreenMode, IVideoWindow_fnSetWindowForeground, IVideoWindow_fnNotifyOwnerMessage, IVideoWindow_fnSetWindowPosition, IVideoWindow_fnGetWindowPosition, IVideoWindow_fnGetMinIdealImageSize, IVideoWindow_fnGetMaxIdealImageSize, IVideoWindow_fnGetRestorePosition, IVideoWindow_fnHideCursor, IVideoWindow_fnIsCursorHidden, }; HRESULT CFilterGraph_InitIVideoWindow( CFilterGraph* pfg ) { TRACE("(%p)\n",pfg); ICOM_VTBL(&pfg->vidwin) = &ivideowindow; return NOERROR; } void CFilterGraph_UninitIVideoWindow( CFilterGraph* pfg ) { TRACE("(%p)\n",pfg); } #undef QUERYVIDEOWINDOW