41 #include "rtpconfig.h" 47 #define RTPSOURCES_HASHSIZE 8317 49 class RTPSources_GetHashIndex
52 static int GetIndex(
const uint32_t &ssrc) {
return ssrc%RTPSOURCES_HASHSIZE; }
58 class RTPInternalSourceData;
88 #ifdef RTP_SUPPORT_PROBATION 91 #endif // RTP_SUPPORT_PROBATION 94 int CreateOwnSSRC(uint32_t ssrc);
103 void SentRTPPacket();
140 int ProcessRTCPSenderInfo(uint32_t ssrc,
const RTPNTPTime &ntptime,uint32_t rtptime,
141 uint32_t packetcount,uint32_t octetcount,
const RTPTime &receivetime,
149 int ProcessRTCPReportBlock(uint32_t ssrc,uint8_t fractionlost,int32_t lostpackets,
150 uint32_t exthighseqnr,uint32_t jitter,uint32_t lsr,
159 const void *itemdata,
const RTPTime &receivetime,
const RTPAddress *senderaddress);
160 #ifdef RTP_SUPPORT_SDESPRIV 166 int ProcessSDESPrivateItem(uint32_t ssrc,
size_t prefixlen,
const void *prefixdata,
167 size_t valuelen,
const void *valuedata,
const RTPTime &receivetime,
169 #endif //RTP_SUPPORT_SDESPRIV 175 int ProcessBYE(uint32_t ssrc,
size_t reasonlength,
const void *reasondata,
const RTPTime &receivetime,
187 int UpdateReceiveTime(uint32_t ssrc,
const RTPTime &receivetime,
const RTPAddress *senderaddress);
193 bool GotoFirstSource();
199 bool GotoNextSource();
205 bool GotoPreviousSource();
213 bool GotoFirstSourceWithData();
221 bool GotoNextSourceWithData();
229 bool GotoPreviousSourceWithData();
243 bool GotEntry(uint32_t ssrc);
256 void SenderTimeout(
const RTPTime &curtime,
const RTPTime &timeoutdelay);
261 void BYETimeout(
const RTPTime &curtime,
const RTPTime &timeoutdelay);
266 void NoteTimeout(
const RTPTime &curtime,
const RTPTime &timeoutdelay);
272 void MultipleTimeouts(
const RTPTime &curtime,
const RTPTime &sendertimeout,
286 void SafeCountTotal();
287 void SafeCountSenders();
288 void SafeCountActive();
307 const uint8_t *cname,
size_t cnamelength) { }
341 void ClearSourceList();
342 int ObtainSourceDataInstance(uint32_t ssrc,RTPInternalSourceData **srcdat,
bool *created);
343 int GetRTCPSourceData(uint32_t ssrc,
const RTPAddress *senderaddress,RTPInternalSourceData **srcdat,
bool *newsource);
344 bool CheckCollision(RTPInternalSourceData *srcdat,
const RTPAddress *senderaddress,
bool isrtp);
346 RTPKeyHashTable<const uint32_t,RTPInternalSourceData*,RTPSources_GetHashIndex,RTPSOURCES_HASHSIZE> sourcelist;
352 #ifdef RTP_SUPPORT_PROBATION 354 #endif // RTP_SUPPORT_PROBATION 356 RTPInternalSourceData *owndata;
359 #endif // RTPSOURCES_H virtual void OnBYETimeout(RTPSourceData *srcdat)
Is called when participant srcdat is timed after having sent a BYE packet.
Definition: rtpsources.h:319
Represents an RTP Packet.
Definition: rtppacket.h:53
virtual void OnNewSource(RTPSourceData *srcdat)
Is called when a new entry srcdat is added to the source table.
Definition: rtpsources.h:310
Don't use the probation algorithm; accept RTP packets immediately.
Definition: rtpsources.h:77
A memory manager.
Definition: rtpmemorymanager.h:144
void SetProbationType(ProbationType probtype)
Changes the current probation type.
Definition: rtpsources.h:90
Represents a table in which information about the participating sources is kept.
Definition: rtpsources.h:71
virtual void OnBYEPacket(RTPSourceData *srcdat)
Is called when a BYE packet has been processed for source srcdat.
Definition: rtpsources.h:322
virtual void OnAPPPacket(RTCPAPPPacket *apppacket, const RTPTime &receivetime, const RTPAddress *senderaddress)
Is called when an RTCP APP packet apppacket has been received at time receivetime from address sender...
Definition: rtpsources.h:327
virtual void OnUnknownPacketFormat(RTCPPacket *rtcppack, const RTPTime &receivetime, const RTPAddress *senderaddress)
Is called when an unknown packet format for a known packet type was detected.
Definition: rtpsources.h:335
This class is used to specify wallclock time, delay intervals etc.
Definition: rtptimeutilities.h:77
Describes an RTCP APP packet.
Definition: rtcpapppacket.h:51
Base class for specific types of RTCP packets.
Definition: rtcppacket.h:47
virtual void OnUnknownPacketType(RTCPPacket *rtcppack, const RTPTime &receivetime, const RTPAddress *senderaddress)
Is called when an unknown RTCP packet type was detected.
Definition: rtpsources.h:331
virtual void OnTimeout(RTPSourceData *srcdat)
Is called when participant srcdat is timed out.
Definition: rtpsources.h:316
Represents an RTCP compound packet.
Definition: rtcpcompoundpacket.h:50
int GetTotalCount() const
Returns the total number of entries in the source table.
Definition: rtpsources.h:280
int GetActiveMemberCount() const
Returns the number of members which have been validated and which haven't sent a BYE packet yet...
Definition: rtpsources.h:283
ProbationType
Type of probation to use for new sources.
Definition: rtpsources.h:75
virtual void OnRTCPCompoundPacket(RTCPCompoundPacket *pack, const RTPTime &receivetime, const RTPAddress *senderaddress)
Is called when an RTCP compound packet is about to be processed.
Definition: rtpsources.h:295
This class is used by the transmission component to store the incoming RTP and RTCP data in...
Definition: rtprawpacket.h:48
RTPSourceData * GetOwnSourceInfo()
If present, it returns the RTPSourceData instance of the entry which was created by CreateOwnSSRC...
Definition: rtpsources.h:246
virtual void OnSSRCCollision(RTPSourceData *srcdat, const RTPAddress *senderaddress, bool isrtp)
Is called when an SSRC collision was detected.
Definition: rtpsources.h:303
virtual void OnCNAMECollision(RTPSourceData *srcdat, const RTPAddress *senderaddress, const uint8_t *cname, size_t cnamelength)
Is called when another CNAME was received than the one already present for source srcdat...
Definition: rtpsources.h:306
Abstract class from which actual transmission components should be derived.
Definition: rtptransmitter.h:57
ItemType
Identifies the type of an SDES item.
Definition: rtcpsdespacket.h:56
This class is an abstract class which is used to specify destinations, multicast groups etc...
Definition: rtpaddress.h:47
virtual void OnRemoveSource(RTPSourceData *srcdat)
Is called when the entry srcdat is about to be deleted from the source table.
Definition: rtpsources.h:313
virtual void OnRTPPacket(RTPPacket *pack, const RTPTime &receivetime, const RTPAddress *senderaddress)
Is called when an RTP packet is about to be processed.
Definition: rtpsources.h:292
Discard incoming RTP packets originating from a source that's on probation.
Definition: rtpsources.h:78
virtual void OnNoteTimeout(RTPSourceData *srcdat)
Is called when the SDES NOTE item for source srcdat has been timed out.
Definition: rtpsources.h:339
This is a simple wrapper for the most significant word (MSW) and least significant word (LSW) of an N...
Definition: rtptimeutilities.h:58
int GetSenderCount() const
Returns the number of participants which are marked as a sender.
Definition: rtpsources.h:277
Describes an entry in the RTPSources source table.
Definition: rtpsourcedata.h:164