Msptrmar.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. //
  3. //
  4. //      Copyright (c) Microsoft Corporation. All rights reserved.
  5. //
  6. //
  7. //      Name: msptrmar.h
  8. //
  9. // Description: Definition of the CAudioRenderTerminal class
  10. //
  11. ///////////////////////////////////////////////////////////////////////////////
  12. #ifndef _MSPTRMAR_H_
  13. #define _MSPTRMAR_H_
  14. #define WAVEOUT_NAME L"WaveOut Terminal"
  15. #define MIXER_NAME L"PCM Mixer"
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CAudioRenderTerminal
  18. class CAudioRenderTerminal : 
  19.     public IDispatchImpl<ITBasicAudioTerminal, &IID_ITBasicAudioTerminal, &LIBID_TAPI3Lib>, 
  20.     public IDispatchImpl<ITStaticAudioTerminal, &IID_ITStaticAudioTerminal, &LIBID_TAPI3Lib>, 
  21.     public CSingleFilterStaticTerminal,
  22.     public CMSPObjectSafetyImpl
  23. {
  24. public:
  25.     CAudioRenderTerminal();
  26.     virtual ~CAudioRenderTerminal();
  27.     // Helper methods.
  28.     HRESULT InitializeDefaultTerminal();
  29.     static HRESULT CreateTerminal(
  30.         IN    CComPtr<IMoniker>    pMoniker,
  31.         IN    MSP_HANDLE           htAddress,
  32.         OUT   ITTerminal         **ppTerm
  33.         );
  34.     HRESULT FindTerminalPin();
  35. BEGIN_COM_MAP(CAudioRenderTerminal)
  36.     COM_INTERFACE_ENTRY(IObjectSafety)
  37.     COM_INTERFACE_ENTRY(ITBasicAudioTerminal)
  38.     COM_INTERFACE_ENTRY(ITStaticAudioTerminal)
  39.     COM_INTERFACE_ENTRY_CHAIN(CSingleFilterStaticTerminal)
  40. END_COM_MAP()
  41. DECLARE_VQI()
  42. DECLARE_LOG_ADDREF_RELEASE(CAudioRenderTerminal)
  43. // ITBasicAudioTerminal
  44. public:
  45.     STDMETHOD(get_Balance)(OUT  long *pVal);
  46.     STDMETHOD(put_Balance)(IN   long newVal);
  47.     STDMETHOD(get_Volume) (OUT  long *pVal);
  48.     STDMETHOD(put_Volume) (IN   long newVal);
  49. // ITStaticAudioTerminal
  50. public:
  51.     STDMETHOD(get_WaveId) (OUT  long * plWaveId);
  52. // Implementation
  53. public:
  54.     // CBaseTerminal overrides 
  55.     STDMETHODIMP CompleteConnectTerminal(void);
  56.     STDMETHODIMP DisconnectTerminal(
  57.             IN      IGraphBuilder  * pGraph,
  58.             IN      DWORD            dwReserved
  59.             );
  60.     
  61.     virtual HRESULT AddFiltersToGraph();
  62.     virtual DWORD GetSupportedMediaTypes(void)
  63.     {
  64.         return (DWORD) TAPIMEDIATYPE_AUDIO;
  65.     }
  66.     HRESULT CreateFilters();
  67. private:
  68.     // Keeps track of whether we need to unreserve WaveOut
  69.     bool m_bResourceReserved;
  70.     CComPtr<IBasicAudio> m_pIBasicAudio;
  71. };
  72. #endif // _MSPTRMAR_H_