/* Copyright (c) 1998-1999 Microsoft Corporation */ // tmvidrnd.h: Definition of the CVideoRenderTerminalE class // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_VIDEOOUTT_H__D1691429_B6CA_11D0_82A4_00AA00B5CA1B__INCLUDED_) #define AFX_VIDEOOUTT_H__D1691429_B6CA_11D0_82A4_00AA00B5CA1B__INCLUDED_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 #include "resource.h" // main symbols // // The CLSID that's used to create us. // EXTERN_C const CLSID CLSID_VideoWindowTerminal_PRIVATE; #ifdef INSTANTIATE_GUIDS_NOW // {AED6483E-3304-11d2-86F1-006008B0E5D2} const CLSID CLSID_VideoWindowTerminal_PRIVATE = { 0xaed6483e, 0x3304, 0x11d2, { 0x86, 0xf1, 0x0, 0x60, 0x8, 0xb0, 0xe5, 0xd2 } }; #endif // INSTANTIATE_GUIDS_NOW typedef struct { OUT IBaseFilter ** ppBaseFilter; OUT HRESULT hr; } CREATE_VIDEO_RENDER_FILTER_CONTEXT; DWORD WINAPI WorkItemProcCreateVideoRenderFilter(LPVOID pVoid); ///////////////////////////////////////////////////////////////////////////// // CVideoRenderTerminal // class CVideoRenderTerminal : public CComCoClass, public CComDualImpl, public CComDualImpl, public IDrawVideoImage, public ITPluggableTerminalInitialization, public CSingleFilterTerminal, public CMSPObjectSafetyImpl { public: CVideoRenderTerminal() :m_bThreadStarted(FALSE) { LOG((MSP_TRACE, "CVideoRenderTerminal::CVideoRenderTerminal - enter")); m_lAutoShowCache = 0; // window invisible by default m_TerminalType = TT_DYNAMIC; // this is a dynamic terminal LOG((MSP_TRACE, "CVideoRenderTerminal::CVideoRenderTerminal - finish")); } ~CVideoRenderTerminal(); // ITPluggableTerminalInitialization STDMETHOD(InitializeDynamic) ( IN IID iidTerminalClass, IN DWORD dwMediaType, IN TERMINAL_DIRECTION Direction, IN MSP_HANDLE htAddress ); HRESULT FindTerminalPin(void); BEGIN_COM_MAP(CVideoRenderTerminal) COM_INTERFACE_ENTRY(ITPluggableTerminalInitialization) COM_INTERFACE_ENTRY(IBasicVideo) COM_INTERFACE_ENTRY(IVideoWindow) COM_INTERFACE_ENTRY(IObjectSafety) COM_INTERFACE_ENTRY(IDrawVideoImage) COM_INTERFACE_ENTRY_CHAIN(CSingleFilterTerminal) END_COM_MAP() DECLARE_DEBUG_ADDREF_RELEASE(CVideoRenderTerminal) DECLARE_REGISTRY_RESOURCEID(IDR_VideoRenderTerminal) // ITBasicVideo public: STDMETHOD(IsUsingDefaultDestination) (void); STDMETHOD(IsUsingDefaultSource) (void); STDMETHOD(GetCurrentImage) ( long *plBufferSize, long *pDIBImage); STDMETHOD(GetVideoPaletteEntries) ( long lStartIndex, long lcEntries, long *plcRetrieved, long *plPalette); STDMETHOD(GetVideoSize) ( long *plWidth, long *plHeight); STDMETHOD(SetDefaultDestinationPosition)(void); STDMETHOD(GetDestinationPosition) ( long *plLeft, long *plTop, long *plWidth, long *plHeight); STDMETHOD(SetDestinationPosition) ( long lLeft, long lTop, long lWidth, long lHeight); STDMETHOD(SetDefaultSourcePosition) (void); STDMETHOD(GetSourcePosition) ( long *plLeft, long *plTop, long *plWidth, long *plHeight); STDMETHOD(SetSourcePosition) ( long lLeft, long lTop, long lWidth, long lHeight); STDMETHOD(get_DestinationHeight) (OUT long *pVal); STDMETHOD(put_DestinationHeight) (IN long newVal); STDMETHOD(get_DestinationTop) (OUT long *pVal); STDMETHOD(put_DestinationTop) (IN long newVal); STDMETHOD(get_DestinationWidth) (OUT long *pVal); STDMETHOD(put_DestinationWidth) (IN long newVal); STDMETHOD(get_DestinationLeft) (OUT long *pVal); STDMETHOD(put_DestinationLeft) (IN long newVal); STDMETHOD(get_SourceHeight) (OUT long *pVal); STDMETHOD(put_SourceHeight) (IN long newVal); STDMETHOD(get_SourceTop) (OUT long *pVal); STDMETHOD(put_SourceTop) (IN long newVal); STDMETHOD(get_SourceWidth) (OUT long *pVal); STDMETHOD(put_SourceWidth) (IN long newVal); STDMETHOD(get_SourceLeft) (OUT long *pVal); STDMETHOD(put_SourceLeft) (IN long newVal); STDMETHOD(get_VideoHeight) (OUT long *pVal); STDMETHOD(get_VideoWidth) (OUT long *pVal); STDMETHOD(get_BitErrorRate) (OUT long *pVal); STDMETHOD(get_BitRate) (OUT long *pVal); STDMETHOD(get_AvgTimePerFrame) (OUT REFTIME *pVal); // IVideoWindow methods public: STDMETHOD(put_Caption) (THIS_ BSTR strCaption); STDMETHOD(get_Caption) (THIS_ BSTR FAR* strCaption); STDMETHOD(put_WindowStyle) (THIS_ long WindowStyle); STDMETHOD(get_WindowStyle) (THIS_ long FAR* WindowStyle); STDMETHOD(put_WindowStyleEx) (THIS_ long WindowStyleEx); STDMETHOD(get_WindowStyleEx) (THIS_ long FAR* WindowStyleEx); STDMETHOD(put_AutoShow) (THIS_ long AutoShow); STDMETHOD(get_AutoShow) (THIS_ long FAR* AutoShow); STDMETHOD(put_WindowState) (THIS_ long WindowState); STDMETHOD(get_WindowState) (THIS_ long FAR* WindowState); STDMETHOD(put_BackgroundPalette)(THIS_ long BackgroundPalette); STDMETHOD(get_BackgroundPalette)(THIS_ long FAR* pBackgroundPalette); STDMETHOD(put_Visible) (THIS_ long Visible); STDMETHOD(get_Visible) (THIS_ long FAR* pVisible); STDMETHOD(put_Left) (THIS_ long Left); STDMETHOD(get_Left) (THIS_ long FAR* pLeft); STDMETHOD(put_Width) (THIS_ long Width); STDMETHOD(get_Width) (THIS_ long FAR* pWidth); STDMETHOD(put_Top) (THIS_ long Top); STDMETHOD(get_Top) (THIS_ long FAR* pTop); STDMETHOD(put_Height) (THIS_ long Height); STDMETHOD(get_Height) (THIS_ long FAR* pHeight); STDMETHOD(put_Owner) (THIS_ OAHWND Owner); STDMETHOD(get_Owner) (THIS_ OAHWND FAR* Owner); STDMETHOD(put_MessageDrain) (THIS_ OAHWND Drain); STDMETHOD(get_MessageDrain) (THIS_ OAHWND FAR* Drain); STDMETHOD(get_BorderColor) (THIS_ long FAR* Color); STDMETHOD(put_BorderColor) (THIS_ long Color); STDMETHOD(get_FullScreenMode) (THIS_ long FAR* FullScreenMode); STDMETHOD(put_FullScreenMode) (THIS_ long FullScreenMode); STDMETHOD(SetWindowForeground) (THIS_ long Focus); STDMETHOD(NotifyOwnerMessage) (THIS_ OAHWND hwnd, long uMsg, LONG_PTR wParam, LONG_PTR lParam); STDMETHOD(SetWindowPosition) (THIS_ long Left, long Top, long Width, long Height); STDMETHOD(GetWindowPosition) (THIS_ long FAR* pLeft, long FAR* pTop, long FAR* pWidth, long FAR* pHeight); STDMETHOD(GetMinIdealImageSize) (THIS_ long FAR* pWidth, long FAR* pHeight); STDMETHOD(GetMaxIdealImageSize) (THIS_ long FAR* pWidth, long FAR* pHeight); STDMETHOD(GetRestorePosition) (THIS_ long FAR* pLeft, long FAR* pTop, long FAR* pWidth, long FAR* pHeight); STDMETHOD(HideCursor) (THIS_ long HideCursor); STDMETHOD(IsCursorHidden) (THIS_ long FAR* CursorHidden); // IDrawVideoImage public: STDMETHOD(DrawVideoImageBegin)(void); STDMETHOD(DrawVideoImageEnd) (void); STDMETHOD(DrawVideoImageDraw) (IN HDC hdc, IN LPRECT lprcSrc, IN LPRECT lprcDst); // Implementation private: // // Data members // CComPtr m_pIBasicVideo; CComPtr m_pIVideoWindow; CComPtr m_pIDrawVideoImage; long m_lAutoShowCache; BOOL m_bThreadStarted; public: // // Methods // // CBaseTerminal required overrides STDMETHODIMP CompleteConnectTerminal(void); virtual HRESULT AddFiltersToGraph(void); virtual DWORD GetSupportedMediaTypes(void) { return (DWORD) TAPIMEDIATYPE_VIDEO; } }; #endif // !defined(AFX_VIDEOOUTT_H__D1691429_B6CA_11D0_82A4_00AA00B5CA1B__INCLUDED_)