windows-nt/Source/XPSP1/NT/net/tapi/skywalker/wavemsp/wavecall.h
2020-09-26 16:20:57 +08:00

125 lines
3.1 KiB
C++

/*++
Copyright (c) 1998-1999 Microsoft Corporation
Module Name:
wavecall.h
Abstract:
Declaration of the CWaveMSPCall
Author:
Zoltan Szilagyi September 7th, 1998
--*/
#ifndef __WAVECALL_H_
#define __WAVECALL_H_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
/////////////////////////////////////////////////////////////////////////////
// CWaveMSPCall
/////////////////////////////////////////////////////////////////////////////
class CWaveMSPCall : public CMSPCallMultiGraph, public CMSPObjectSafetyImpl
{
public:
// DECLARE_POLY_AGGREGATABLE(CWaveMSP)
// To add extra interfaces to this class, use the following:
BEGIN_COM_MAP(CWaveMSPCall)
COM_INTERFACE_ENTRY( IObjectSafety )
COM_INTERFACE_ENTRY_CHAIN(CMSPCallMultiGraph)
END_COM_MAP()
public:
CWaveMSPCall();
virtual ~CWaveMSPCall();
virtual ULONG MSPCallAddRef(void);
virtual ULONG MSPCallRelease(void);
virtual HRESULT Init(
IN CMSPAddress * pMSPAddress,
IN MSP_HANDLE htCall,
IN DWORD dwReserved,
IN DWORD dwMediaType
);
virtual HRESULT CreateStreamObject(
IN DWORD dwMediaType,
IN TERMINAL_DIRECTION Direction,
IN IMediaEvent * pGraph,
IN ITStream ** ppStream
);
virtual HRESULT ReceiveTSPCallData(
IN PBYTE pBuffer,
IN DWORD dwSize
);
//
// We override these to make sure the number of
// streams we have is constant.
//
STDMETHOD (CreateStream) (
IN long lMediaType,
IN TERMINAL_DIRECTION Direction,
IN OUT ITStream ** ppStream
);
STDMETHOD (RemoveStream) (
IN ITStream * pStream
);
//
// Public method called by the address to tell us the
// per-address wave IDs. We hold on to them until
// we know whether we have per-call waveids, and if we
// don't, then we set them on the streams.
//
virtual HRESULT SetWaveIDs(
IN DWORD dwWaveInID,
IN DWORD dwWaveOutID
);
//
// Public method for creating the filter mapper cache up front.
// Called by the stream when an intelligent connection is
// attempted. Simply forwarded to the call's owning address object.
//
virtual HRESULT CreateFilterMapper(void)
{
//
// m_pMSPAddress is valid here, because it is released in
// CMSPCallBase::FinalRelease, and FinalRelease cannot occur
// until after all connection attempts are complete.
//
return ((CWaveMSP *) m_pMSPAddress)->CreateFilterMapper();
}
protected:
//
// Protected data members.
//
CWaveMSPStream * m_pRenderStream;
CWaveMSPStream * m_pCaptureStream;
BOOL m_fHavePerAddressWaveIDs;
DWORD m_dwPerAddressWaveInID;
DWORD m_dwPerAddressWaveOutID;
};
#endif //__WAVEADDR_H_