125 lines
3.1 KiB
C++
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_
|