1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _MSPTRMAR_H_ 7 #define _MSPTRMAR_H_ 8 9 #define WAVEOUT_NAME L"WaveOut Terminal" 10 #define MIXER_NAME L"PCM Mixer" 11 12 class CAudioRenderTerminal : public IDispatchImpl<ITBasicAudioTerminal,&IID_ITBasicAudioTerminal,&LIBID_TAPI3Lib>,public IDispatchImpl<ITStaticAudioTerminal,&IID_ITStaticAudioTerminal,&LIBID_TAPI3Lib>,public CSingleFilterStaticTerminal,public CMSPObjectSafetyImpl 13 { 14 public: 15 CAudioRenderTerminal(); 16 virtual ~CAudioRenderTerminal(); 17 HRESULT InitializeDefaultTerminal(); 18 static HRESULT CreateTerminal(CComPtr<IMoniker> pMoniker,MSP_HANDLE htAddress,ITTerminal **ppTerm); 19 HRESULT FindTerminalPin(); 20 BEGIN_COM_MAP(CAudioRenderTerminal) 21 COM_INTERFACE_ENTRY(IObjectSafety) 22 COM_INTERFACE_ENTRY(ITBasicAudioTerminal) 23 COM_INTERFACE_ENTRY(ITStaticAudioTerminal) 24 COM_INTERFACE_ENTRY_CHAIN(CSingleFilterStaticTerminal) 25 END_COM_MAP() 26 DECLARE_VQI() 27 DECLARE_LOG_ADDREF_RELEASE(CAudioRenderTerminal) 28 public: 29 STDMETHOD(get_Balance)(__LONG32 *pVal); 30 STDMETHOD(put_Balance)(__LONG32 newVal); 31 STDMETHOD(get_Volume)(__LONG32 *pVal); 32 STDMETHOD(put_Volume)(__LONG32 newVal); 33 STDMETHOD(get_WaveId) (__LONG32 *plWaveId); 34 public: 35 STDMETHODIMP CompleteConnectTerminal(void); 36 STDMETHODIMP DisconnectTerminal(IGraphBuilder *pGraph,DWORD dwReserved); 37 virtual HRESULT AddFiltersToGraph(); 38 virtual DWORD GetSupportedMediaTypes(void) { return (DWORD) TAPIMEDIATYPE_AUDIO; } 39 HRESULT CreateFilters(); 40 private: 41 bool m_bResourceReserved; 42 CComPtr<IBasicAudio> m_pIBasicAudio; 43 }; 44 45 #endif 46