2025-04-27 07:49:33 -04:00

89 lines
2.2 KiB
C++

/*******************************************************************************
Module Name:
bgapp.h
Abstract:
Defines CBridgeApp class
Author:
Qianbo Huai (qhuai) Jan 27 2000
*******************************************************************************/
#ifndef _BGAPP_H
#define _BGAPP_H
/*//////////////////////////////////////////////////////////////////////////////
////*/
class CBridgeApp
{
public:
// init tapi objects
CBridgeApp (HRESULT *phr);
// release tapi objects
~CBridgeApp ();
// create h323 call
HRESULT CreateH323Call (IDispatch *pEvent);
// create sdp call
HRESULT CreateSDPCall (CBridgeItem *pItem);
// bridge calls
HRESULT BridgeCalls (CBridgeItem *pItem);
// get h323 call if exists
HRESULT HasH323Call (IDispatch *pEvent, CBridgeItem **ppItem);
HRESULT HasCalls ();
// disconnect one call
HRESULT DisconnectCall (CBridgeItem *pItem, DISCONNECT_CODE);
// disconnect all calls
HRESULT DisconnectAllCalls (DISCONNECT_CODE);
HRESULT RemoveCall (CBridgeItem *pItem);
// alter a substream to display
HRESULT NextSubStream ();
// show specified participant
HRESULT ShowParticipant (ITBasicCallControl *pSDPCall, ITParticipant *pPartcipant);
private:
// create bridge terminals
HRESULT CreateBridgeTerminals (CBridgeItem *pItem);
// get streams from call
HRESULT GetStreams (CBridgeItem *pItem);
// select bridge terminals
HRESULT SelectBridgeTerminals (CBridgeItem *pItem);
HRESULT SetupParticipantInfo (CBridgeItem *pItem);
HRESULT SetMulticastMode (CBridgeItem *pItem);
// helper
HRESULT FindAddress (
long dwAddrType,
BSTR bstrAddrName,
long lMediaType,
ITAddress **ppAddr
);
BOOL AddressSupportsMediaType (ITAddress *pAddr, long lMediaType);
BOOL IsStream (
ITStream *pStream,
long lMediaType,
TERMINAL_DIRECTION tdDirection
);
private:
ITTAPI *m_pTapi;
ITAddress *m_pH323Addr;
ITAddress *m_pSDPAddr;
long m_lH323MediaType;
long m_lSDPMediaType;
CBridgeItemList *m_pList;
};
#endif // _BGAPP_H