Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
wavestrm.h
Abstract:
Declaration of the CWaveMSPStream
Author: Zoltan Szilagyi September 7th, 1998
--*/
#ifndef __WAVESTRM_H_
#define __WAVESTRM_H_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
/////////////////////////////////////////////////////////////////////////////
// CWaveMSPStream
/////////////////////////////////////////////////////////////////////////////
class CWaveMSPStream : public CMSPStream, public CMSPObjectSafetyImpl { public: // DECLARE_POLY_AGGREGATABLE(CWaveMSP)
// To add extra interfaces to this class, use the following:
BEGIN_COM_MAP(CWaveMSPStream) COM_INTERFACE_ENTRY( IObjectSafety ) COM_INTERFACE_ENTRY_CHAIN(CMSPStream) END_COM_MAP()
public:
//
// Construction and destruction.
//
CWaveMSPStream(); virtual ~CWaveMSPStream(); virtual void FinalRelease();
//
// Required base class overrides.
//
STDMETHOD (get_Name) ( OUT BSTR * ppName );
//
// We override these methods to implement our terminal handling.
// This consists of only allowing one terminal on the stream at a time
// and adding our filters and the terminal to the graph at the right
// times.
//
STDMETHOD (SelectTerminal) ( IN ITTerminal * pTerminal );
STDMETHOD (UnselectTerminal) ( IN ITTerminal * pTerminal );
STDMETHOD (StartStream) ();
STDMETHOD (PauseStream) ();
STDMETHOD (StopStream) ();
//
// Overrides for event handling.
//
virtual HRESULT ProcessGraphEvent( IN long lEventCode, IN LONG_PTR lParam1, IN LONG_PTR lParam2 );
//
// Public methods specific to our implementation.
//
virtual HRESULT SetWaveID(GUID *PermanentGuid); virtual HRESULT FireEvent(IN MSP_CALL_EVENT type, IN HRESULT hrError, IN MSP_CALL_EVENT_CAUSE cause);
protected: //
// Protected data members.
//
BOOL m_fHaveWaveID; BOOL m_fTerminalConnected; IBaseFilter * m_pFilter; IBaseFilter * m_pG711Filter; FILTER_STATE m_DesiredGraphState;
private: //
// Private helper methods.
//
HRESULT ConnectTerminal(ITTerminal * pTerminal); HRESULT ConnectToTerminalPin(IPin * pTerminalPin); HRESULT TryToConnect(IPin * pOutputPin, IPin * pInputPin); void CreateAndAddG711(void);
HRESULT FindPinInFilter( BOOL bWantOutputPin, // IN: if false, we want the input pin
IBaseFilter * pFilter, // IN: the filter to examine
IPin ** ppPin // OUT: the pin we found
); HRESULT FindPin( IPin ** ppPin ); HRESULT DecideDesiredCaptureBufferSize(IUnknown * pUnknown, long * plDesiredSize); HRESULT SetupWaveIn( IPin * pOutputPin, IPin * pInputPin ); HRESULT ExamineWaveInProperties(IPin *pPin); HRESULT ManipulateAllocatorProperties(IAMBufferNegotiation * pNegotiation, IMemInputPin * pMemInputPin); };
#endif //__WAVEADDR_H_
|