home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / samples / Multimedia / DirectShow / BDA / BDASample / graph.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-10-08  |  3.8 KB  |  126 lines

  1. //------------------------------------------------------------------------------
  2. // File: Graph.h
  3. //
  4. // Desc: Sample code for BDA graph building.
  5. //
  6. // Copyright (c) 2000-2001, Microsoft Corporation. All rights reserved.
  7. //------------------------------------------------------------------------------
  8.  
  9. #ifndef GRAPH_H_INCLUDED_
  10. #define GRAPH_H_INCLUDED_
  11.  
  12. #include "bdasampl.h"
  13.  
  14. class CBDAFilterGraph
  15. {
  16. private:
  17.     CComPtr <ITuningSpace>   m_pITuningSpace;
  18.  
  19.     CComPtr <IScanningTuner> m_pITuner;
  20.  
  21.     CComPtr <IGraphBuilder>  m_pFilterGraph;         // for current graph
  22.     CComPtr <IMediaControl>  m_pIMediaControl;       // for controlling graph state
  23.     CComPtr <ICreateDevEnum> m_pICreateDevEnum;      // for enumerating system devices
  24.  
  25.     CComPtr <IBaseFilter>    m_pNetworkProvider;     // for network provider filter
  26.     CComPtr <IBaseFilter>    m_pTunerDevice;         // for tuner device filter
  27.     CComPtr <IBaseFilter>    m_pDemodulatorDevice;   // for tuner device filter
  28.     CComPtr <IBaseFilter>    m_pCaptureDevice;       // for capture device filter
  29.     CComPtr <IBaseFilter>    m_pDemux;               // for demux filter
  30.     CComPtr <IBaseFilter>    m_pVideoDecoder;        // for mpeg video decoder filter
  31.     CComPtr <IBaseFilter>    m_pAudioDecoder;        // for mpeg audio decoder filter
  32.     CComPtr <IBaseFilter>    m_pTIF;                 // for transport information filter
  33.     CComPtr <IBaseFilter>    m_pMPE;                 // for multiple protocol encapsulator
  34.     CComPtr <IBaseFilter>    m_pIPSink;              // for ip sink filter
  35.     CComPtr <IBaseFilter>    m_pOVMixer;             // for overlay mixer filter
  36.     CComPtr <IBaseFilter>    m_pVRenderer;           // for video renderer filter
  37.     CComPtr <IBaseFilter>    m_pDDSRenderer;         // for sound renderer filter
  38.  
  39.     //required for an ATSC network when creating a tune request
  40.     LONG            m_lMajorChannel;
  41.     LONG            m_lMinorChannel;
  42.     LONG            m_lPhysicalChannel;
  43.  
  44.     //registration number for the RunningObjectTable
  45.     DWORD           m_dwGraphRegister;
  46.  
  47.     NETWORK_TYPE    m_NetworkType;
  48.  
  49.     HRESULT InitializeGraphBuilder();
  50.     HRESULT LoadTuningSpace();
  51.     HRESULT LoadNetworkProvider();
  52.     HRESULT LoadDemux();
  53.     HRESULT RenderDemux();
  54.     HRESULT LoadFilter(
  55.         REFCLSID clsid, 
  56.         IBaseFilter** ppFilter,
  57.         IBaseFilter* pConnectFilter, 
  58.         BOOL fIsUpstream
  59.         );
  60.     HRESULT ConnectFilters(
  61.         IBaseFilter* pFilterUpstream, 
  62.         IBaseFilter* pFilterDownstream
  63.         );
  64.     HRESULT CreateATSCTuneRequest(
  65.         LONG lPhysicalChannel,
  66.         LONG lMajorChannel, 
  67.         LONG lMinorChannel,
  68.         IATSCChannelTuneRequest**   pTuneRequest
  69.         );
  70.  
  71. public:
  72.     bool            m_fGraphBuilt;
  73.     bool            m_fGraphRunning;
  74.     bool            m_fGraphFailure;
  75.  
  76.     CBDAFilterGraph();
  77.     
  78.     ~CBDAFilterGraph();
  79.  
  80.     HRESULT     
  81.     BuildGraph(
  82.         NETWORK_TYPE NetworkType
  83.         );
  84.  
  85.     HRESULT 
  86.     RunGraph();
  87.  
  88.     HRESULT 
  89.     StopGraph();
  90.  
  91.     HRESULT 
  92.     TearDownGraph();
  93.  
  94.     HRESULT 
  95.     SetVideoWindow(
  96.         HWND hwndMain
  97.         );
  98.     
  99.     HRESULT
  100.     ChangeChannel(
  101.         LONG lMajorChannel, 
  102.         LONG lMinorChannel
  103.         );
  104.     
  105.  
  106.     // Adds/removes a DirectShow filter graph from the Running Object Table,
  107.     // allowing GraphEdit to "spy" on a remote filter graph if enabled.
  108.     HRESULT 
  109.     AddGraphToRot(
  110.         IUnknown *pUnkGraph, 
  111.         DWORD *pdwRegister
  112.         );
  113.  
  114.     void 
  115.     RemoveGraphFromRot(
  116.         DWORD pdwRegister
  117.         );
  118.  
  119.     LONG
  120.     GetMajorChannel () {return m_lMajorChannel;};
  121.  
  122.     LONG
  123.     GetMinorChannel () {return m_lMinorChannel;};
  124.  };
  125. #endif // GRAPH_H_INCLUDED_
  126.