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 12class CAudioRenderTerminal : public IDispatchImpl<ITBasicAudioTerminal,&IID_ITBasicAudioTerminal,&LIBID_TAPI3Lib>,public IDispatchImpl<ITStaticAudioTerminal,&IID_ITStaticAudioTerminal,&LIBID_TAPI3Lib>,public CSingleFilterStaticTerminal,public CMSPObjectSafetyImpl 13{ 14public: 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) 28public: 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); 34public: 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(); 40private: 41 bool m_bResourceReserved; 42 CComPtr<IBasicAudio> m_pIBasicAudio; 43}; 44 45#endif 46