📄 rtspif.h
字号:
* Purpose:
* Request stream description from URL
*/
STDMETHOD(SendStreamDescriptionRequest)
(THIS_
const char* pURL,
IHXValues* pRequestHeaders
) PURE;
STDMETHOD(SendStreamRecordDescriptionRequest)
(THIS_
const char* pURL,
IHXValues* pFileHeader,
CHXSimpleList* pStreams,
IHXValues* pRequestHeaders
) PURE;
/************************************************************************
* Method:
* IHXRTSPClientProtocol::SendTransportRequest
* Purpose:
* Request a transport type for data stream from an array of
* available transport types
*/
STDMETHOD(SendSetupRequest)
(
THIS_
RTSPTransportType* pTransType,
UINT16 nTransTypes,
IHXValues* pIHXValuesRequestHeaders
) PURE;
STDMETHOD(SendSetParameterRequest) (THIS_
UINT32 lParamType,
const char* pParamName,
IHXBuffer* pParamValue
) PURE;
STDMETHOD(SendSetParameterRequest) (THIS_
const char* pParamName,
const char* pParamValue,
const char* pMimeType,
const char* pContent) PURE;
STDMETHOD(SendGetParameterRequest) (THIS_
UINT32 lParamType,
const char* pParamName
) PURE;
/************************************************************************
* Method:
* IHXRTSPClientProtocol::SendPlayRequest
* Purpose:
* Request start of packet delivery
*/
STDMETHOD(SendPlayRequest) (THIS_
UINT32 lFrom,
UINT32 lTo,
CHXSimpleList* pSubList
/* RTSPSubscription */
) PURE;
STDMETHOD(SendPauseRequest) (THIS) PURE;
STDMETHOD(SendResumeRequest) (THIS) PURE;
STDMETHOD(SendRecordRequest) (THIS) PURE;
/************************************************************************
* Method:
* IHXRTSPClientProtocol::SendTeardownRequest
* Purpose:
* Request release of connection resources
*/
STDMETHOD(SendTeardownRequest) (THIS) PURE;
/************************************************************************
* Method:
* IHXRTSPClientProtocol::SendPacket
* Purpose:
* Send data packet to server (for RECORD)
*/
STDMETHOD(SendPacket) (THIS_
BasePacket* pPacket
) PURE;
/************************************************************************
* Method:
* IHXRTSPClientProtocol::SendStreamDone
* Purpose:
* Send data end packet to server (for RECORD)
*/
STDMETHOD(SendStreamDone) (THIS_
UINT16 streamID
) PURE;
/************************************************************************
* Method:
* IHXRTSPClientProtocol::SendStatistics
* Purpose:
* Send cumulative stats from player to server
*/
STDMETHOD(SendPlayerStats) (THIS_
const char* pStats
) PURE;
/************************************************************************
* Method:
* IHXRTSPClientProtocol::SendKeepAlive
* Purpose:
* Send keep alive request to server
*/
STDMETHOD(SendKeepAlive) (THIS) PURE;
/************************************************************************
* Method:
* IHXRTSPClientProtocol::GetPacket
* Purpose:
* Get data packet from transport layer
*/
STDMETHOD(GetPacket) (THIS_
UINT16 uStreamNumber,
REF(IHXPacket*) pPacket
) PURE;
STDMETHOD(StartPackets) (THIS_
UINT16 uStreamNumber
) PURE;
STDMETHOD(StopPackets) (THIS_
UINT16 uStreamNumber
) PURE;
STDMETHOD(SetProxy) (THIS_
const char* pProxyHost,
UINT16 proxyPort
) PURE;
STDMETHOD(SetResponse) (THIS_
IHXRTSPClientProtocolResponse* pResp
) PURE;
STDMETHOD(InitSockets) (THIS) PURE;
STDMETHOD(GetCurrentBuffering) (THIS_
UINT16 uStreamNumber,
REF(INT64) llLowestTimestamp,
REF(INT64) llHighestTimestamp,
REF(UINT32) ulNumBytes,
REF(BOOL) bDone) PURE;
STDMETHOD(SeekFlush) (THIS) PURE;
STDMETHOD_(BOOL, IsDataReceived) (THIS) PURE;
STDMETHOD_(BOOL,IsSourceDone) (THIS) PURE;
/*
* XXX...The following 3 functions had better be removed under
* full IRMA
*/
STDMETHOD_(IHXPendingStatus*, GetPendingStatus) (THIS) PURE;
STDMETHOD_(IHXStatistics*, GetStatistics) (THIS) PURE;
STDMETHOD_(BOOL, HttpOnly) (THIS) PURE;
/*****************************************
* Methods specific to TNG/ASM transport
*
*/
STDMETHOD(Subscribe) (THIS_
CHXSimpleList* pSubscriptions
/* RTSPSubscription */
) PURE;
STDMETHOD(Unsubscribe) (THIS_
CHXSimpleList* pUnsubscriptions
/* RTSPSubscription */
) PURE;
STDMETHOD(RuleChange) (THIS_
CHXSimpleList* pChanges) PURE;
STDMETHOD(BackChannelPacketReady) (THIS_
IHXPacket* pPacket) PURE;
STDMETHOD(SendRTTRequest) (THIS) PURE;
STDMETHOD(SendBWReport) (THIS_
INT32 aveBandwidth,
INT32 packetLoss,
INT32 bandwidthWanted
) PURE;
STDMETHOD(SetFirstSeqNum) (THIS_
UINT16 uStreamNumber,
UINT16 uSeqNum
) PURE;
STDMETHOD(SetRTPInfo) (THIS_
UINT16 uStreamNumber,
UINT16 uSeqNum,
UINT32 ulRTPTime,
RTPInfoEnum info
) PURE;
STDMETHOD(SetConnectionTimeout) (THIS_
UINT32 uSeconds
) PURE;
/* This is a quick fix to correctly display UDPMode in the client.
* We currently always show Multicast since the rtsp library
* never tells the reponse object that the protocol that actually
* succeeded is UDP and not Mutlicast.
*
* This is an interim soluton.
* Correct solution is to add transport type in HandleSetupResponse().
* Will do after B2 since I do not break any builds - XXXRA
*
* MULTICAST_MODE = 1,
* UDP_MODE = 2,
* TCP_MODE = 3,
*
*/
STDMETHOD_(UINT16, GetProtocolType) (THIS) PURE;
STDMETHOD(InitPacketFilter) (THIS_
RawPacketFilter* pFilter) PURE;
};
DECLARE_INTERFACE_(IHXRTSPTransportResponse, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* PacketReady() is for control packets only. Data packets should
* be retrieved with the getPacket() call exported by RTSPTransport
*/
STDMETHOD(PacketReady) (THIS_
HX_RESULT status,
const char* pSessionID,
IHXPacket* pPacket
) PURE;
STDMETHOD(OnRTTRequest) (THIS_
HX_RESULT status,
const char* pSessionID
) PURE;
STDMETHOD(OnRTTResponse) (THIS_
HX_RESULT status,
const char* pSessionID,
UINT32 ulSecs,
UINT32 ulUSecs
) PURE;
STDMETHOD(OnBWReport) (THIS_
HX_RESULT status,
const char* pSessionID,
INT32 aveBandwidth,
INT32 packetLoss,
INT32 bandwidthWanted
) PURE;
STDMETHOD(OnCongestion) (THIS_
HX_RESULT status,
const char* pSessionID,
INT32 xmitMultiplier,
INT32 recvMultiplier
) PURE;
STDMETHOD(OnStreamDone) (THIS_
HX_RESULT status,
UINT16 uStreamNumber
) PURE;
STDMETHOD(OnSourceDone) (THIS) PURE;
STDMETHOD(OnACK) (THIS_
HX_RESULT status,
RTSPResendBuffer* pResendBuffer,
UINT16 uStreamNumber,
const char* pSessionID,
UINT16* pAckList,
UINT32 uAckListCount,
UINT16* pNakList,
UINT32 uNakListCount
) PURE;
STDMETHOD(OnProtocolError) (THIS_
HX_RESULT status
) PURE;
};
DECLARE_INTERFACE_(IHXRTSPServerTransportResponse, IHXRTSPTransportResponse)
{
STDMETHOD(OnRTTRequest) (THIS_
HX_RESULT status,
const char* pSessionID
) PURE;
STDMETHOD(OnRTTResponse) (THIS_
HX_RESULT status,
const char* pSessionID,
UINT32 ulSecs,
UINT32 ulUSecs
) PURE;
STDMETHOD(OnBWReport) (THIS_
HX_RESULT status,
const char* pSessionID,
INT32 aveBandwidth,
INT32 packetLoss,
INT32 bandwidthWanted
) PURE;
STDMETHOD(OnCongestion) (THIS_
HX_RESULT status,
const char* pSessionID,
INT32 xmitMultiplier,
INT32 recvMultiplier
) PURE;
STDMETHOD(OnStreamDone) (THIS_
HX_RESULT status,
UINT16 uStreamNumber
) PURE;
STDMETHOD(OnSourceDone) (THIS) PURE;
STDMETHOD(OnACK) (THIS_
HX_RESULT status,
RTSPResendBuffer* pResendBuffer,
UINT16 uStreamNumber,
const char* pSessionID,
UINT16* pAckList,
UINT32 uAckListCount,
UINT16* pNakList,
UINT32 uNakListCount
) PURE;
STDMETHOD(OnProtocolError) (THIS_
HX_RESULT status
) PURE;
};
DECLARE_INTERFACE_(IHXRTSPClientTransportResponse, IHXRTSPTransportResponse)
{
STDMETHOD(OnRTTRequest) (THIS_
HX_RESULT status,
const char* pSessionID
) PURE;
STDMETHOD(OnRTTResponse) (THIS_
HX_RESULT status,
const char* pSessionID,
UINT32 ulSecs,
UINT32 ulUSecs
) PURE;
STDMETHOD(OnBWReport) (THIS_
HX_RESULT status,
const char* pSessionID,
INT32 aveBandwidth,
INT32 packetLoss,
INT32 bandwidthWanted
) PURE;
STDMETHOD(OnCongestion) (THIS_
HX_RESULT status,
const char* pSessionID,
INT32 xmitMultiplier,
INT32 recvMultiplier
) PURE;
STDMETHOD(OnStreamDone) (THIS_
HX_RESULT status,
UINT16 uStreamNumber
) PURE;
/* This only indicates that all packets have been received from the
* server. We still need to read packets from the transport buffer
* StreamDone will indicate when there are no more packets to be
* read from Transport buffer
*/
STDMETHOD(OnSourceDone) (THIS) PURE;
STDMETHOD(OnACK) (THIS_
HX_RESULT status,
RTSPResendBuffer* pResendBuffer,
UINT16 uStreamNumber,
const char* pSessionID,
UINT16* pAckList,
UINT32 uAckListCount,
UINT16* pNakList,
UINT32 uNakListCount
) PURE;
STDMETHOD(OnProtocolError) (THIS_
HX_RESULT status
) PURE;
};
DEFINE_GUID(IID_IHXPacketResend, 0x00000400, 0xb4c8, 0x11d0, 0x99, 0x95, 0x0, 0xa0, 0x24, 0x8d, 0xa5, 0xf0);
DECLARE_INTERFACE_(IHXPacketResend, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
STDMETHOD(OnPacket) (THIS_
UINT16 uStreamNumber,
BasePacket** ppPacket) PURE;
};
DEFINE_GUID(IID_IHXRTSPContext, 0x00000401, 0xb4c8, 0x11d0, 0x99, 0x95, 0x0, 0xa0, 0x24, 0x8d, 0xa5, 0xf0);
DECLARE_INTERFACE_(IHXRTSPContext, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
STDMETHOD(GetCurrentSequenceNumber)
(
THIS_
REF(UINT32) ulSequenceNumber
) PURE;
STDMETHOD(GetSessionID)
(
THIS_
REF(IHXBuffer*) pIHXBufferSessionID
) PURE;
};
DEFINE_GUID(IID_IHXTimeStampSync, 0x00000402, 0xb4c8, 0x11d0, 0x99, 0x95, 0x0, 0xa0, 0x24, 0x8d, 0xa5, 0xf0);
DECLARE_INTERFACE_(IHXTimeStampSync, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
STDMETHOD(SetInitialTS(const char* pSessionID, UINT32 ulInitialTS)) PURE;
STDMETHOD_(BOOL, NeedInitialTS(const char* pSessionID)) PURE;
STDMETHOD_(UINT32, GetInitialTS(const char* pSessionID)) PURE;
STDMETHOD(ClearInitialTS(const char* pSessionID)) PURE;
};
DEFINE_GUID(IID_IHXTransportSyncServer, 0x16b420d0, 0xf4d0, 0x11d5, 0xaa,
0xc0, 0x0, 0x1, 0x2, 0x51, 0xb3, 0x40);
DECLARE_INTERFACE_(IHXTransportSyncServer, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
STDMETHOD(DistributeSyncAnchor) (THIS_
ULONG32 ulHXTime,
ULONG32 ulNTPTime) PURE;
STDMETHOD(DistributeSync) (ULONG32 ulHXTime,
LONG32 lHXTimeOffset) PURE;
STDMETHOD(DistributeStartTime) (ULONG32 ulHXRefTime) PURE;
};
DECLARE_INTERFACE_(IHXRTSPServerPauseResponse, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
STDMETHOD(HandlePauseRequest) (THIS_ const char* pSessionID,
UINT32 ulPausePoint) PURE;
};
#endif /* _RTSPIF_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -