📄 rtspclnt.h
字号:
RTSPClientProtocol ();
~RTSPClientProtocol ();
enum State
{
INIT,
READY,
PLAYING,
RECORDING
};
class UDPResponseHelper: public IHXUDPResponse,
public IHXInterruptSafe
{
private:
LONG32 m_lRefCount;
UINT16 m_nPort;
RTSPClientProtocol* m_pOwner;
public:
UDPResponseHelper(RTSPClientProtocol* pParent, UINT16 nPort);
~UDPResponseHelper();
/* IUnknown Interfaces */
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj);
STDMETHOD_(ULONG32,AddRef) (THIS);
STDMETHOD_(ULONG32,Release) (THIS);
/*
* IHXInterruptSafe methods
*/
STDMETHOD_(BOOL,IsInterruptSafe)(THIS) {return TRUE;};
/*
* IHXUDPSocket methods
*/
STDMETHOD(ReadDone) (THIS_
HX_RESULT status,
IHXBuffer* pBuffer,
UINT32 ulAddr,
UINT16 nPort);
};
class ConnectionCheckCallback : public IHXCallback
{
public:
ConnectionCheckCallback(RTSPClientProtocol* pOwner);
~ConnectionCheckCallback();
/* IUnknown Interfaces */
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj);
STDMETHOD_(ULONG32,AddRef) (THIS);
STDMETHOD_(ULONG32,Release) (THIS);
STDMETHOD(Func) (THIS);
private:
LONG32 m_lRefCount;
RTSPClientProtocol* m_pOwner;
};
#ifdef _MACINTOSH
class RTSPClientProtocolCallback : public IHXCallback
{
public:
RTSPClientProtocolCallback(RTSPClientProtocol* pOwner);
~RTSPClientProtocolCallback();
/* IUnknown Interfaces */
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj);
STDMETHOD_(ULONG32,AddRef) (THIS);
STDMETHOD_(ULONG32,Release) (THIS);
STDMETHOD(Func) (THIS);
LONG32 m_lRefCount;
RTSPClientProtocol* m_pOwner;
BOOL m_bIsCallbackPending;
CallbackHandle m_Handle;
IHXValues* m_pPendingRequestHeaders;
CHXString m_PendingDescURL;
};
friend class RTSPClientProtocolCallback;
#endif /* _MACINTOSH */
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj);
STDMETHOD_(ULONG32,AddRef) (THIS);
STDMETHOD_(ULONG32,Release) (THIS);
/*
* IHXRTSPClientProtocol methods
*/
STDMETHOD(Init) (THIS_
IUnknown* pContext,
const char* pHostName,
UINT16 foreignPort,
IHXRTSPClientProtocolResponse* pClient,
UINT32 initializationType,
IHXValues* pSessionHeaders,
IHXValues* pInfo,
BOOL bHTTPCloak,
UINT16 uCloakPort,
BOOL bNoReuseConnection);
STDMETHOD(SetBuildVersion) (THIS_
const char* pVersionString);
STDMETHOD(Done) (THIS);
STDMETHOD(SendStreamDescriptionRequest)
(THIS_
const char* pURL,
IHXValues* pRequestHeaders);
STDMETHOD(SendStreamRecordDescriptionRequest)
(THIS_
const char* pURL,
IHXValues* pFileHeader,
CHXSimpleList* pStreams,
IHXValues* pRequestHeaders);
STDMETHOD(SendSetupRequest)
(
THIS_
RTSPTransportType* pTransType,
UINT16 nTransTypes,
IHXValues* pIHXValuesRequestHeaders
);
STDMETHOD(SendPlayRequest) (THIS_
UINT32 lFrom,
UINT32 lTo,
CHXSimpleList* pSubscriptions);
STDMETHOD(SendRecordRequest) (THIS);
STDMETHOD(SendPauseRequest) (THIS);
STDMETHOD(SendResumeRequest) (THIS);
STDMETHOD(SendTeardownRequest) (THIS);
STDMETHOD(SendSetParameterRequest) (THIS_
UINT32 lParamType,
const char* pParamName,
IHXBuffer* pParamValue);
STDMETHOD(SendSetParameterRequest) (THIS_
const char* pParamName,
const char* pParamValue,
const char* pMimeType,
const char* pContent);
STDMETHOD(SendGetParameterRequest) (THIS_
UINT32 lParamType,
const char* pParamName);
STDMETHOD(SendPacket) (THIS_
BasePacket* pPacket);
STDMETHOD(SendStreamDone) (THIS_
UINT16 streamNumber);
STDMETHOD(SendPlayerStats) (THIS_
const char* pStats);
STDMETHOD(SendKeepAlive) (THIS);
STDMETHOD(GetPacket) (THIS_
UINT16 uStreamNumber,
REF(IHXPacket*) pPacket);
STDMETHOD(StartPackets) (THIS_
UINT16 uStreamNumber);
STDMETHOD(StopPackets) (THIS_
UINT16 uStreamNumber);
STDMETHOD(SetProxy) (THIS_
const char* pProxyHost,
UINT16 proxyPort);
STDMETHOD(SetResponse) (THIS_
IHXRTSPClientProtocolResponse* pResp);
/*
* IHXThinnableSource methods.
*/
/************************************************************************
* Method:
* IHXThinnableSource::DropByN
* Purpose:
*
* Implemented by protocols that allow infinite thinnability through
* LimitBandwidthByDropping
*/
STDMETHOD(LimitBandwidthByDropping) (THIS_
UINT32 ulStreamNo,
UINT32 ulBandwidthLimit);
STDMETHOD(SetDeliveryBandwidth) (THIS_
UINT32 ulBandwidth,
UINT32 ulMsBackoff);
/*
* XXX...The following 3 functions had better be removed under
* full IRMA
*/
STDMETHOD_(IHXPendingStatus*, GetPendingStatus) (THIS);
STDMETHOD_(IHXStatistics*, GetStatistics) (THIS);
STDMETHOD_(BOOL, HttpOnly) (THIS);
STDMETHOD(Subscribe) (THIS_
CHXSimpleList* pSubscriptions);
STDMETHOD(Unsubscribe) (THIS_
CHXSimpleList* pUnsubscriptions);
STDMETHOD(RuleChange) (THIS_
CHXSimpleList* pRuleChanges);
STDMETHOD(BackChannelPacketReady) (THIS_
IHXPacket* pPacket);
STDMETHOD(SendRTTRequest) (THIS);
STDMETHOD(SendBWReport) (THIS_
INT32 aveBandwidth,
INT32 packetLoss,
INT32 bandwidthWanted);
STDMETHOD(SetFirstSeqNum) (THIS_
UINT16 uStreamNumber,
UINT16 uSeqNum);
STDMETHOD(SetRTPInfo) (THIS_
UINT16 uStreamNumber,
UINT16 uSeqNum,
UINT32 ulRTPTime,
RTPInfoEnum info
);
STDMETHOD(InitSockets) (THIS);
STDMETHOD(GetCurrentBuffering) (THIS_
UINT16 uStreamNumber,
REF(INT64) llLowestTimestamp,
REF(INT64) llHighestTimestamp,
REF(UINT32) ulNumBytes,
REF(BOOL) bDone);
STDMETHOD(SeekFlush) (THIS);
STDMETHOD_(BOOL, IsDataReceived) (THIS);
STDMETHOD_(BOOL,IsSourceDone) (THIS);
/*
* IHXInterruptSafe methods
*/
STDMETHOD_(BOOL,IsInterruptSafe) (THIS) {return TRUE;};
/*
* IHXRTSPClientTransportResponse methods
*/
STDMETHOD(PacketReady) (THIS_
HX_RESULT status,
const char* pSessionID,
IHXPacket* pPacket);
STDMETHOD(OnRTTRequest) (THIS_
HX_RESULT status,
const char* pSessionID
);
STDMETHOD(OnRTTResponse) (THIS_
HX_RESULT status,
const char* pSessionID,
UINT32 ulSecs,
UINT32 ulUSecs);
STDMETHOD(OnBWReport) (THIS_
HX_RESULT status,
const char* pSessionID,
INT32 aveBandwidth,
INT32 packetLoss,
INT32 bandwidthWanted
);
STDMETHOD(OnCongestion) (THIS_
HX_RESULT status,
const char* pSessionID,
INT32 xmitMultiplier,
INT32 recvMultiplier);
STDMETHOD(OnACK) (THIS_
HX_RESULT status,
RTSPResendBuffer* pResendBuffer,
UINT16 uStreamNumber,
const char* pSessionID,
UINT16* pAckList,
UINT32 uAckListCount,
UINT16* pNakList,
UINT32 uNakListCount);
STDMETHOD(OnStreamDone) (THIS_
HX_RESULT status,
UINT16 uStreamNumber);
STDMETHOD(OnSourceDone) (THIS);
STDMETHOD(OnProtocolError) (THIS_
HX_RESULT status);
/*
* IHXPendingStatus methods
*/
STDMETHOD(GetStatus) (THIS_
REF(UINT16) uStatusCode,
REF(IHXBuffer*) pStatusDesc,
REF(UINT16) ulPercentDone);
/*
* IHXResolverResponse methods
*/
STDMETHOD(GetHostByNameDone) (THIS_
HX_RESULT status,
UINT32 ulAddr);
/*
* IHXStatistics methods
*/
STDMETHOD (InitializeStatistics) (THIS_
UINT32 /*IN*/ ulRegistryID);
STDMETHOD (UpdateStatistics) (THIS);
STDMETHOD(OnPacket) (THIS_
UINT16 uStreamNumber,
BasePacket** ppPacket);
STDMETHOD(SetConnectionTimeout) (THIS_
UINT32 uSeconds);
STDMETHOD_(UINT16, GetProtocolType) (THIS) {return m_uProtocolType;};
STDMETHOD(InitPacketFilter) (THIS_
RawPacketFilter* pFilter);
STDMETHOD(SetResendBufferDepth) (THIS_
UINT32 uSeconds);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -