//==========================================================================; // MSVidBDATuner.h : Declaration of the CMSVidBDATuner // copyright (c) Microsoft Corp. 1998-1999. ///////////////////////////////////////////////////////////////////////////// #pragma once #ifndef __MSVidBDATUNER_H_ #define __MSVidBDATUNER_H_ #include #include #include #include #include "bcasteventimpl.h" #include "segimpl.h" #include "tunerimpl.h" #include "seg.h" typedef CComQIPtr PQTuner; ///////////////////////////////////////////////////////////////////////////// // CMSVidBDATuner class ATL_NO_VTABLE __declspec(uuid("A2E3074E-6C3D-11d3-B653-00C04F79498E")) CMSVidBDATuner : public CComObjectRootEx, public CComCoClass, public ISupportErrorInfo, public IConnectionPointContainerImpl, public CProxy_Tuner, public IBroadcastEventImpl, public IObjectWithSiteImplSec, public IMSVidGraphSegmentImpl, public IMSVidTunerImpl, public IProvideClassInfo2Impl<&CLSID_MSVidBDATunerDevice, &IID_IMSVidTunerEvent, &LIBID_MSVidCtlLib> { public: CMSVidBDATuner() : m_iNetworkProvider(-1), m_iTuner(-1), m_iTIF(-1) { } REGISTER_AUTOMATION_OBJECT(IDS_PROJNAME, IDS_REG_BDATUNER_PROGID, IDS_REG_BDATUNER_DESC, LIBID_MSVidCtlLib, __uuidof(CMSVidBDATuner)); DECLARE_PROTECT_FINAL_CONSTRUCT() BEGIN_COM_MAP(CMSVidBDATuner) COM_INTERFACE_ENTRY(IMSVidGraphSegment) COM_INTERFACE_ENTRY(IMSVidTuner) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IMSVidDevice) COM_INTERFACE_ENTRY(IMSVidInputDevice) COM_INTERFACE_ENTRY(IMSVidVideoInputDevice) COM_INTERFACE_ENTRY(IObjectWithSite) COM_INTERFACE_ENTRY(IBroadcastEvent) COM_INTERFACE_ENTRY(ISupportErrorInfo) COM_INTERFACE_ENTRY(IConnectionPointContainer) COM_INTERFACE_ENTRY(IPersist) COM_INTERFACE_ENTRY(IProvideClassInfo2) COM_INTERFACE_ENTRY(IProvideClassInfo) END_COM_MAP() BEGIN_CATEGORY_MAP(CMSVidBDATuner) IMPLEMENTED_CATEGORY(CATID_SafeForScripting) IMPLEMENTED_CATEGORY(CATID_SafeForInitializing) IMPLEMENTED_CATEGORY(CATID_PersistsToPropertyBag) END_CATEGORY_MAP() BEGIN_CONNECTION_POINT_MAP(CMSVidBDATuner) CONNECTION_POINT_ENTRY(IID_IMSVidTunerEvent) END_CONNECTION_POINT_MAP() // ISupportsErrorInfo STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid); public: PQCreateDevEnum m_pSystemEnum; int m_iNetworkProvider; int m_iTuner; int m_iTIF; virtual HRESULT DoTune(TNTuneRequest &ctr); virtual HRESULT UpdateTR(TNTuneRequest& pTR); HRESULT Unload(void); HRESULT LoadTunerSection(DSFilter& np, const GUID& kscategory); // IMSVidGraphSegment STDMETHOD(put_Init)(IUnknown *pDeviceMoniker) { if (!pDeviceMoniker) { return E_POINTER; } HRESULT hr = IMSVidGraphSegmentImpl::put_Init(pDeviceMoniker); if (FAILED(hr)) { return hr; } if (!m_pDev) { m_fInit = false; return E_NOINTERFACE; } return NOERROR; } STDMETHOD(Build)() { // undone: should we tune here? return NOERROR; } STDMETHOD(PreRun)() { if (m_pCurrentTR) { return DoTune(m_pCurrentTR); } // undone: do any np initialization. return NOERROR; } STDMETHOD(put_Container)(IMSVidGraphSegmentContainer *pCtl); // IMSVidDevice STDMETHOD(get_Name)(BSTR * Name) { if (!m_fInit) { return Error(IDS_OBJ_NO_INIT, __uuidof(CMSVidBDATuner), CO_E_NOTINITIALIZED); } try { return GetName(((m_iNetworkProvider > -1) ? (m_Filters[m_iNetworkProvider]) : DSFilter()), m_pDev, CComBSTR(_T("BDA NetworkProvider"))).CopyTo(Name); return NOERROR; } catch(...) { return E_POINTER; } } // IBroadcastEvent STDMETHOD(Fire)(GUID gEventID); }; #endif //__MSVidBDATUNER_H_