| /** |
| * This file has no copyright assigned and is placed in the Public Domain. |
| * This file is part of the mingw-w64 runtime package. |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| */ |
| #ifndef _MSPTRMAC_H_ |
| #define _MSPTRMAC_H_ |
| |
| #define WAVEIN_NAME L"WaveIn Terminal" |
| |
| #ifdef __cplusplus |
| |
| class CAudioCaptureTerminal : public IDispatchImpl<ITBasicAudioTerminal,&IID_ITBasicAudioTerminal,&LIBID_TAPI3Lib>,public IDispatchImpl<ITStaticAudioTerminal,&IID_ITStaticAudioTerminal,&LIBID_TAPI3Lib>,public CSingleFilterStaticTerminal,public CMSPObjectSafetyImpl |
| { |
| BEGIN_COM_MAP(CAudioCaptureTerminal) |
| COM_INTERFACE_ENTRY(IObjectSafety) |
| COM_INTERFACE_ENTRY(ITBasicAudioTerminal) |
| COM_INTERFACE_ENTRY(ITStaticAudioTerminal) |
| COM_INTERFACE_ENTRY_CHAIN(CSingleFilterStaticTerminal) |
| END_COM_MAP() |
| DECLARE_VQI() |
| DECLARE_LOG_ADDREF_RELEASE(CAudioCaptureTerminal) |
| public: |
| CAudioCaptureTerminal(); |
| virtual ~CAudioCaptureTerminal(); |
| static HRESULT CreateTerminal(CComPtr<IMoniker> pMoniker,MSP_HANDLE htAddress,ITTerminal **ppTerm); |
| HRESULT FindTerminalPin(); |
| public: |
| STDMETHOD(get_Balance)(__LONG32 *pVal); |
| STDMETHOD(put_Balance)(__LONG32 newVal); |
| STDMETHOD(get_Volume) (__LONG32 *pVal); |
| STDMETHOD(put_Volume) (__LONG32 newVal); |
| public: |
| STDMETHOD(get_WaveId) (__LONG32 *plWaveId); |
| STDMETHODIMP CompleteConnectTerminal(void); |
| STDMETHODIMP DisconnectTerminal(IGraphBuilder *pGraph,DWORD dwReserved); |
| virtual HRESULT AddFiltersToGraph(); |
| virtual DWORD GetSupportedMediaTypes(void) { return (DWORD) TAPIMEDIATYPE_AUDIO; } |
| HRESULT CreateFilters(); |
| inline HRESULT CreateFiltersIfRequired(); |
| private: |
| bool m_bResourceReserved; |
| CComPtr<IAMAudioInputMixer> m_pIAMAudioInputMixer; |
| }; |
| |
| inline HRESULT CAudioCaptureTerminal::CreateFiltersIfRequired() { |
| if(!m_pIFilter) return CreateFilters(); |
| return S_OK; |
| } |
| |
| #endif /* __cplusplus */ |
| |
| #endif |