SDRAngel
4.11.5
Developer docs for <a href="https://github.com/f4exb/sdrangel">SDRangel<\a>, an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
|
#include <rtpsources.h>
Public Types | |
enum | ProbationType { NoProbation, ProbationDiscard, ProbationStore } |
Public Member Functions | |
RTPSources () | |
virtual | ~RTPSources () |
void | Clear () |
int | CreateOwnSSRC (uint32_t ssrc) |
int | DeleteOwnSSRC () |
void | SentRTPPacket () |
int | ProcessRawPacket (RTPRawPacket *rawpack, RTPTransmitter *trans, bool acceptownpackets) |
int | ProcessRawPacket (RTPRawPacket *rawpack, RTPTransmitter *trans[], int numtrans, bool acceptownpackets) |
int | ProcessRTPPacket (RTPPacket *rtppack, const RTPTime &receivetime, const RTPAddress *senderaddress, bool *stored) |
int | ProcessRTCPCompoundPacket (RTCPCompoundPacket *rtcpcomppack, const RTPTime &receivetime, const RTPAddress *senderaddress) |
int | ProcessRTCPSenderInfo (uint32_t ssrc, const RTPNTPTime &ntptime, uint32_t rtptime, uint32_t packetcount, uint32_t octetcount, const RTPTime &receivetime, const RTPAddress *senderaddress) |
int | ProcessRTCPReportBlock (uint32_t ssrc, uint8_t fractionlost, int32_t lostpackets, uint32_t exthighseqnr, uint32_t jitter, uint32_t lsr, uint32_t dlsr, const RTPTime &receivetime, const RTPAddress *senderaddress) |
int | ProcessSDESNormalItem (uint32_t ssrc, RTCPSDESPacket::ItemType t, std::size_t itemlength, const void *itemdata, const RTPTime &receivetime, const RTPAddress *senderaddress) |
int | ProcessSDESPrivateItem (uint32_t ssrc, std::size_t prefixlen, const void *prefixdata, std::size_t valuelen, const void *valuedata, const RTPTime &receivetime, const RTPAddress *senderaddress) |
int | ProcessBYE (uint32_t ssrc, std::size_t reasonlength, const void *reasondata, const RTPTime &receivetime, const RTPAddress *senderaddress) |
int | UpdateReceiveTime (uint32_t ssrc, const RTPTime &receivetime, const RTPAddress *senderaddress) |
bool | GotoFirstSource () |
bool | GotoNextSource () |
bool | GotoPreviousSource () |
bool | GotoFirstSourceWithData () |
bool | GotoNextSourceWithData () |
bool | GotoPreviousSourceWithData () |
RTPSourceData * | GetCurrentSourceInfo () |
RTPSourceData * | GetSourceInfo (uint32_t ssrc) |
RTPPacket * | GetNextPacket () |
bool | GotEntry (uint32_t ssrc) |
RTPSourceData * | GetOwnSourceInfo () |
void | Timeout (const RTPTime &curtime, const RTPTime &timeoutdelay) |
void | SenderTimeout (const RTPTime &curtime, const RTPTime &timeoutdelay) |
void | BYETimeout (const RTPTime &curtime, const RTPTime &timeoutdelay) |
void | NoteTimeout (const RTPTime &curtime, const RTPTime &timeoutdelay) |
void | MultipleTimeouts (const RTPTime &curtime, const RTPTime &sendertimeout, const RTPTime &byetimeout, const RTPTime &generaltimeout, const RTPTime ¬etimeout) |
int | GetSenderCount () const |
int | GetTotalCount () const |
int | GetActiveMemberCount () const |
Protected Member Functions | |
virtual void | OnRTPPacket (RTPPacket *pack, const RTPTime &receivetime, const RTPAddress *senderaddress) |
virtual void | OnRTCPCompoundPacket (RTCPCompoundPacket *pack, const RTPTime &receivetime, const RTPAddress *senderaddress) |
virtual void | OnSSRCCollision (RTPSourceData *srcdat, const RTPAddress *senderaddress, bool isrtp) |
virtual void | OnCNAMECollision (RTPSourceData *srcdat, const RTPAddress *senderaddress, const uint8_t *cname, std::size_t cnamelength) |
virtual void | OnNewSource (RTPSourceData *srcdat) |
virtual void | OnRemoveSource (RTPSourceData *srcdat) |
virtual void | OnTimeout (RTPSourceData *srcdat) |
virtual void | OnBYETimeout (RTPSourceData *srcdat) |
virtual void | OnBYEPacket (RTPSourceData *srcdat) |
virtual void | OnRTCPSenderReport (RTPSourceData *srcdat) |
virtual void | OnRTCPReceiverReport (RTPSourceData *srcdat) |
virtual void | OnRTCPSDESItem (RTPSourceData *srcdat, RTCPSDESPacket::ItemType t, const void *itemdata, std::size_t itemlength) |
virtual void | OnRTCPSDESPrivateItem (RTPSourceData *srcdat, const void *prefixdata, std::size_t prefixlen, const void *valuedata, std::size_t valuelen) |
virtual void | OnAPPPacket (RTCPAPPPacket *apppacket, const RTPTime &receivetime, const RTPAddress *senderaddress) |
virtual void | OnUnknownPacketType (RTCPPacket *rtcppack, const RTPTime &receivetime, const RTPAddress *senderaddress) |
virtual void | OnUnknownPacketFormat (RTCPPacket *rtcppack, const RTPTime &receivetime, const RTPAddress *senderaddress) |
virtual void | OnNoteTimeout (RTPSourceData *srcdat) |
virtual void | OnValidatedRTPPacket (RTPSourceData *srcdat, RTPPacket *rtppack, bool isonprobation, bool *ispackethandled) |
Private Member Functions | |
void | ClearSourceList () |
int | ObtainSourceDataInstance (uint32_t ssrc, RTPInternalSourceData **srcdat, bool *created) |
int | GetRTCPSourceData (uint32_t ssrc, const RTPAddress *senderaddress, RTPInternalSourceData **srcdat, bool *newsource) |
bool | CheckCollision (RTPInternalSourceData *srcdat, const RTPAddress *senderaddress, bool isrtp) |
Private Attributes | |
RTPKeyHashTable< const uint32_t, RTPInternalSourceData *, RTPSources_GetHashIndex, RTPSOURCES_HASHSIZE > | sourcelist |
int | sendercount |
int | totalcount |
int | activecount |
RTPInternalSourceData * | owndata |
Friends | |
class | RTPInternalSourceData |
Represents a table in which information about the participating sources is kept. Represents a table in which information about the participating sources is kept. The class has member functions to process RTP and RTCP data and to iterate over the participants. Note that a NULL address is used to identify packets from our own session. The class also provides some overridable functions which can be used to catch certain events (new SSRC, SSRC collision, ...).
Definition at line 78 of file rtpsources.h.
Type of probation to use for new sources.
Definition at line 82 of file rtpsources.h.
qrtplib::RTPSources::RTPSources | ( | ) |
In the constructor you can select the probation type you'd like to use and also a memory manager.
Definition at line 51 of file rtpsources.cpp.
References activecount, owndata, sendercount, and totalcount.
|
virtual |
Definition at line 59 of file rtpsources.cpp.
References Clear().
Assuming that the current time is curtime
, remove the members who sent a BYE packet more than the time interval timeoutdelay
ago.
Definition at line 960 of file rtpsources.cpp.
References activecount, qrtplib::RTPSourceData::GetBYETime(), qrtplib::RTPSourceData::IsActive(), qrtplib::RTPSourceData::IsSender(), OnBYETimeout(), OnRemoveSource(), owndata, qrtplib::RTPSourceData::ReceivedBYE(), sendercount, sourcelist, and totalcount.
|
private |
Definition at line 1168 of file rtpsources.cpp.
References qrtplib::RTPSourceData::GetRTCPDataAddress(), qrtplib::RTPSourceData::GetRTPDataAddress(), qrtplib::RTPAddress::IsFromSameHost(), qrtplib::RTPSourceData::IsRTCPAddressSet(), qrtplib::RTPSourceData::IsRTPAddressSet(), qrtplib::RTPAddress::IsSameAddress(), OnSSRCCollision(), qrtplib::RTPInternalSourceData::SetRTCPDataAddress(), and qrtplib::RTPInternalSourceData::SetRTPDataAddress().
Referenced by GetRTCPSourceData(), and ProcessRTPPacket().
void qrtplib::RTPSources::Clear | ( | ) |
Clears the source table.
Definition at line 64 of file rtpsources.cpp.
References ClearSourceList().
Referenced by qrtplib::RTPSession::BYEDestroy(), qrtplib::RTPSession::Destroy(), qrtplib::RTPSession::InternalCreate(), and ~RTPSources().
|
private |
Definition at line 69 of file rtpsources.cpp.
References activecount, owndata, sendercount, sourcelist, and totalcount.
Referenced by Clear().
int qrtplib::RTPSources::CreateOwnSSRC | ( | uint32_t | ssrc | ) |
Creates an entry for our own SSRC identifier.
Definition at line 87 of file rtpsources.cpp.
References activecount, ERR_RTP_SOURCES_ALREADYHAVEOWNSSRC, ERR_RTP_SOURCES_SSRCEXISTS, GotEntry(), ObtainSourceDataInstance(), OnNewSource(), owndata, qrtplib::RTPInternalSourceData::SetOwnSSRC(), qrtplib::RTPInternalSourceData::SetRTCPDataAddress(), and qrtplib::RTPInternalSourceData::SetRTPDataAddress().
Referenced by qrtplib::RTPSession::InternalCreate(), and qrtplib::RTPSession::ProcessPolledData().
int qrtplib::RTPSources::DeleteOwnSSRC | ( | ) |
Deletes the entry for our own SSRC identifier.
Definition at line 114 of file rtpsources.cpp.
References activecount, ERR_RTP_SOURCES_DONTHAVEOWNSSRC, qrtplib::RTPSourceData::GetSSRC(), qrtplib::RTPSourceData::IsActive(), qrtplib::RTPSourceData::IsSender(), OnRemoveSource(), owndata, sendercount, sourcelist, and totalcount.
Referenced by qrtplib::RTPSession::ProcessPolledData().
|
inline |
Returns the number of members which have been validated and which haven't sent a BYE packet yet.
Definition at line 287 of file rtpsources.h.
Referenced by qrtplib::RTCPScheduler::ActiveMemberDecrease(), qrtplib::RTCPScheduler::CalculateDeterministicInterval(), qrtplib::RTCPScheduler::GetTransmissionDelay(), qrtplib::RTCPScheduler::IsTime(), qrtplib::RTCPScheduler::PerformReverseReconsideration(), and qrtplib::RTCPScheduler::ScheduleBYEPacket().
RTPSourceData * qrtplib::RTPSources::GetCurrentSourceInfo | ( | ) |
Returns the RTPSourceData instance for the currently selected participant.
Definition at line 609 of file rtpsources.cpp.
References sourcelist.
Referenced by qrtplib::RTCPPacketBuilder::ClearAllSourceFlags(), qrtplib::RTCPPacketBuilder::FillInReportBlocks(), and qrtplib::RTPSession::GetCurrentSourceInfo().
RTPPacket * qrtplib::RTPSources::GetNextPacket | ( | ) |
Extracts the next packet from the received packets queue of the current participant.
Definition at line 630 of file rtpsources.cpp.
References qrtplib::RTPSourceData::GetNextPacket(), and sourcelist.
Referenced by qrtplib::RTPSession::GetNextPacket().
|
inline |
If present, it returns the RTPSourceData instance of the entry which was created by CreateOwnSSRC.
Definition at line 243 of file rtpsources.h.
Referenced by qrtplib::RTCPPacketBuilder::BuildBYEPacket(), qrtplib::RTCPPacketBuilder::BuildNextPacket(), qrtplib::RTCPScheduler::CalculateNextRTCPTime(), and qrtplib::RTCPScheduler::IsTime().
|
private |
Definition at line 827 of file rtpsources.cpp.
References CheckCollision(), ObtainSourceDataInstance(), and qrtplib::RTPInternalSourceData::SetRTCPDataAddress().
Referenced by ProcessBYE(), ProcessRTCPReportBlock(), ProcessRTCPSenderInfo(), ProcessSDESNormalItem(), ProcessSDESPrivateItem(), and UpdateReceiveTime().
|
inline |
Returns the number of participants which are marked as a sender.
Definition at line 275 of file rtpsources.h.
Referenced by qrtplib::RTCPScheduler::CalculateDeterministicInterval().
RTPSourceData * qrtplib::RTPSources::GetSourceInfo | ( | uint32_t | ssrc | ) |
Returns the RTPSourceData instance for the participant identified by ssrc
, or NULL if no such entry exists.
Definition at line 616 of file rtpsources.cpp.
References sourcelist.
Referenced by qrtplib::RTPSession::GetSourceInfo().
|
inline |
Returns the total number of entries in the source table.
Definition at line 281 of file rtpsources.h.
Referenced by qrtplib::RTCPPacketBuilder::BuildNextPacket().
bool qrtplib::RTPSources::GotEntry | ( | uint32_t | ssrc | ) |
Returns true
if an entry for participant ssrc
exists and false
otherwise.
Definition at line 625 of file rtpsources.cpp.
References sourcelist.
Referenced by qrtplib::RTPPacketBuilder::CreateNewSSRC(), and CreateOwnSSRC().
bool qrtplib::RTPSources::GotoFirstSource | ( | ) |
Starts the iteration over the participants by going to the first member in the table. Starts the iteration over the participants by going to the first member in the table. If a member was found, the function returns true
, otherwise it returns false
.
Definition at line 528 of file rtpsources.cpp.
References sourcelist.
Referenced by qrtplib::RTCPPacketBuilder::ClearAllSourceFlags(), qrtplib::RTCPPacketBuilder::FillInReportBlocks(), and qrtplib::RTPSession::GotoFirstSource().
bool qrtplib::RTPSources::GotoFirstSourceWithData | ( | ) |
Sets the current source to be the first source in the table which has RTPPacket instances that we haven't extracted yet. Sets the current source to be the first source in the table which has RTPPacket instances that we haven't extracted yet. If no such member was found, the function returns false
, otherwise it returns true
.
Definition at line 552 of file rtpsources.cpp.
References qrtplib::RTPSourceData::HasData(), and sourcelist.
Referenced by qrtplib::RTPSession::GotoFirstSourceWithData().
bool qrtplib::RTPSources::GotoNextSource | ( | ) |
Sets the current source to be the next source in the table. Sets the current source to be the next source in the table. If we're already at the last source, the function returns false
, otherwise it returns true
.
Definition at line 536 of file rtpsources.cpp.
References sourcelist.
Referenced by qrtplib::RTCPPacketBuilder::ClearAllSourceFlags(), qrtplib::RTCPPacketBuilder::FillInReportBlocks(), and qrtplib::RTPSession::GotoNextSource().
bool qrtplib::RTPSources::GotoNextSourceWithData | ( | ) |
Sets the current source to be the next source in the table which has RTPPacket instances that we haven't extracted yet. Sets the current source to be the next source in the table which has RTPPacket instances that we haven't extracted yet. If no such member was found, the function returns false
, otherwise it returns true
.
Definition at line 571 of file rtpsources.cpp.
References qrtplib::RTPSourceData::HasData(), and sourcelist.
Referenced by qrtplib::RTPSession::GotoNextSourceWithData().
bool qrtplib::RTPSources::GotoPreviousSource | ( | ) |
Sets the current source to be the previous source in the table. Sets the current source to be the previous source in the table. If we're at the first source, the function returns false
, otherwise it returns true
.
Definition at line 544 of file rtpsources.cpp.
References sourcelist.
Referenced by qrtplib::RTPSession::GotoPreviousSource().
bool qrtplib::RTPSources::GotoPreviousSourceWithData | ( | ) |
Sets the current source to be the previous source in the table which has RTPPacket instances that we haven't extracted yet. Sets the current source to be the previous source in the table which has RTPPacket instances that we haven't extracted yet. If no such member was found, the function returns false
, otherwise it returns true
.
Definition at line 590 of file rtpsources.cpp.
References qrtplib::RTPSourceData::HasData(), and sourcelist.
Referenced by qrtplib::RTPSession::GotoPreviousSourceWithData().
void qrtplib::RTPSources::MultipleTimeouts | ( | const RTPTime & | curtime, |
const RTPTime & | sendertimeout, | ||
const RTPTime & | byetimeout, | ||
const RTPTime & | generaltimeout, | ||
const RTPTime & | notetimeout | ||
) |
Combines the functions SenderTimeout, BYETimeout, Timeout and NoteTimeout. Combines the functions SenderTimeout, BYETimeout, Timeout and NoteTimeout. This is more efficient than calling all four functions since only one iteration is needed in this function.
Definition at line 1055 of file rtpsources.cpp.
References activecount, qrtplib::RTPInternalSourceData::ClearNote(), qrtplib::RTPInternalSourceData::ClearSenderFlag(), qrtplib::RTPSourceData::GetBYETime(), qrtplib::RTPSourceData::INF_GetLastMessageTime(), qrtplib::RTPSourceData::INF_GetLastRTPPacketTime(), qrtplib::RTPSourceData::INF_GetLastSDESNoteTime(), qrtplib::RTPSourceData::IsActive(), qrtplib::RTPSourceData::IsSender(), OnBYETimeout(), OnNoteTimeout(), OnRemoveSource(), OnTimeout(), owndata, qrtplib::RTPSourceData::ReceivedBYE(), qrtplib::RTPSourceData::SDES_GetNote(), sendercount, sourcelist, and totalcount.
Referenced by qrtplib::RTPSession::ProcessPolledData().
Assuming that the current time is curtime
, clear the SDES NOTE items which haven't been updated during the previous time interval timeoutdelay
.
Definition at line 1015 of file rtpsources.cpp.
References activecount, qrtplib::RTPInternalSourceData::ClearNote(), qrtplib::RTPSourceData::INF_GetLastSDESNoteTime(), qrtplib::RTPSourceData::IsActive(), qrtplib::RTPSourceData::IsSender(), OnNoteTimeout(), qrtplib::RTPSourceData::SDES_GetNote(), sendercount, sourcelist, and totalcount.
|
private |
Definition at line 802 of file rtpsources.cpp.
References RTPInternalSourceData, sourcelist, and totalcount.
Referenced by CreateOwnSSRC(), GetRTCPSourceData(), and ProcessRTPPacket().
|
inlineprotectedvirtual |
Is called when an RTCP APP packet apppacket
has been received at time receivetime
from address senderaddress
.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 415 of file rtpsources.h.
Referenced by ProcessRTCPCompoundPacket().
|
inlineprotectedvirtual |
Is called when a BYE packet has been processed for source srcdat
.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 398 of file rtpsources.h.
Referenced by ProcessBYE().
|
inlineprotectedvirtual |
Is called when participant srcdat
is timed after having sent a BYE packet.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 395 of file rtpsources.h.
Referenced by BYETimeout(), and MultipleTimeouts().
|
inlineprotectedvirtual |
Is called when another CNAME was received than the one already present for source srcdat
.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 383 of file rtpsources.h.
Referenced by ProcessSDESNormalItem().
|
inlineprotectedvirtual |
Is called when a new entry srcdat
is added to the source table.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 386 of file rtpsources.h.
Referenced by CreateOwnSSRC(), ProcessBYE(), ProcessRTCPReportBlock(), ProcessRTCPSenderInfo(), ProcessRTPPacket(), ProcessSDESNormalItem(), ProcessSDESPrivateItem(), and UpdateReceiveTime().
|
inlineprotectedvirtual |
Is called when the SDES NOTE item for source srcdat
has been timed out.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 424 of file rtpsources.h.
Referenced by MultipleTimeouts(), and NoteTimeout().
|
inlineprotectedvirtual |
Is called when the entry srcdat
is about to be deleted from the source table.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 389 of file rtpsources.h.
Referenced by BYETimeout(), DeleteOwnSSRC(), MultipleTimeouts(), and Timeout().
|
inlineprotectedvirtual |
Is called when an RTCP compound packet is about to be processed.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 377 of file rtpsources.h.
Referenced by ProcessRTCPCompoundPacket().
|
inlineprotectedvirtual |
Is called when an RTCP receiver report has been processed for this source.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 404 of file rtpsources.h.
Referenced by ProcessRTCPReportBlock().
|
inlineprotectedvirtual |
Is called when a specific SDES item was received for this source.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 407 of file rtpsources.h.
Referenced by ProcessSDESNormalItem().
|
inlineprotectedvirtual |
Is called when a specific SDES item of 'private' type was received for this source.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 411 of file rtpsources.h.
Referenced by ProcessSDESPrivateItem().
|
inlineprotectedvirtual |
Is called when an RTCP sender report has been processed for this source.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 401 of file rtpsources.h.
Referenced by ProcessRTCPSenderInfo().
|
inlineprotectedvirtual |
Is called when an RTP packet is about to be processed.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 374 of file rtpsources.h.
Referenced by ProcessRTPPacket().
|
inlineprotectedvirtual |
Is called when an SSRC collision was detected. Is called when an SSRC collision was detected. The instance srcdat
is the one present in the table, the address senderaddress
is the one that collided with one of the addresses and isrtp
indicates against which address of srcdat
the check failed.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 380 of file rtpsources.h.
Referenced by CheckCollision().
|
inlineprotectedvirtual |
Is called when participant srcdat
is timed out.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 392 of file rtpsources.h.
Referenced by MultipleTimeouts(), and Timeout().
|
inlineprotectedvirtual |
Is called when an unknown packet format for a known packet type was detected.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 421 of file rtpsources.h.
Referenced by ProcessRTCPCompoundPacket().
|
inlineprotectedvirtual |
Is called when an unknown RTCP packet type was detected.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 418 of file rtpsources.h.
Referenced by ProcessRTCPCompoundPacket().
|
inlineprotectedvirtual |
Allows you to use an RTP packet from the specified source directly. Allows you to use an RTP packet from the specified source directly. If ispackethandled
is set to true
, the packet will no longer be stored in this source's packet list.
Reimplemented in qrtplib::RTPSessionSources.
Definition at line 427 of file rtpsources.h.
Referenced by qrtplib::RTPInternalSourceData::ProcessRTPPacket().
int qrtplib::RTPSources::ProcessBYE | ( | uint32_t | ssrc, |
std::size_t | reasonlength, | ||
const void * | reasondata, | ||
const RTPTime & | receivetime, | ||
const RTPAddress * | senderaddress | ||
) |
Processes the BYE message for SSRC ssrc
. Processes the BYE message for SSRC ssrc
. The information was received at time receivetime
from address senderaddress
. The senderaddress
parameter must be NULL if the packet was sent by the local participant.
Definition at line 773 of file rtpsources.cpp.
References activecount, GetRTCPSourceData(), qrtplib::RTPSourceData::IsActive(), OnBYEPacket(), OnNewSource(), owndata, and qrtplib::RTPInternalSourceData::ProcessBYEPacket().
Referenced by ProcessRTCPCompoundPacket().
int qrtplib::RTPSources::ProcessRawPacket | ( | RTPRawPacket * | rawpack, |
RTPTransmitter * | trans, | ||
bool | acceptownpackets | ||
) |
Processes a raw packet rawpack
. Processes a raw packet rawpack
. The instance trans
will be used to check if this packet is one of our own packets. The flag acceptownpackets
indicates whether own packets should be accepted or ignored.
Definition at line 149 of file rtpsources.cpp.
Referenced by qrtplib::RTPSession::ProcessPolledData().
int qrtplib::RTPSources::ProcessRawPacket | ( | RTPRawPacket * | rawpack, |
RTPTransmitter * | trans[], | ||
int | numtrans, | ||
bool | acceptownpackets | ||
) |
Processes a raw packet rawpack
. Processes a raw packet rawpack
. Every transmitter in the array trans
of length numtrans
is used to check if the packet is from our own session. The flag acceptownpackets
indicates whether own packets should be accepted or ignored.
Definition at line 162 of file rtpsources.cpp.
References ERR_RTP_PACKET_INVALIDPACKET, ERR_RTP_RTCPCOMPOUND_INVALIDPACKET, qrtplib::RTCPCompoundPacket::GetCreationError(), qrtplib::RTPPacket::GetCreationError(), qrtplib::RTPRawPacket::GetReceiveTime(), qrtplib::RTPRawPacket::GetSenderAddress(), i, qrtplib::RTPRawPacket::IsRTP(), ProcessRTCPCompoundPacket(), and ProcessRTPPacket().
int qrtplib::RTPSources::ProcessRTCPCompoundPacket | ( | RTCPCompoundPacket * | rtcpcomppack, |
const RTPTime & | receivetime, | ||
const RTPAddress * | senderaddress | ||
) |
Processes the RTCP compound packet rtcpcomppack
which was received at time receivetime
from senderaddress
. Processes the RTCP compound packet rtcpcomppack
which was received at time receivetime
from senderaddress
. The senderaddress
parameter must be NULL if the packet was sent by the local participant.
Definition at line 362 of file rtpsources.cpp.
References qrtplib::RTCPPacket::APP, qrtplib::RTCPPacket::BYE, qrtplib::RTCPSDESPacket::GetChunkSSRC(), qrtplib::RTCPRRPacket::GetDLSR(), qrtplib::RTCPSRPacket::GetDLSR(), qrtplib::RTCPRRPacket::GetExtendedHighestSequenceNumber(), qrtplib::RTCPSRPacket::GetExtendedHighestSequenceNumber(), qrtplib::RTCPRRPacket::GetFractionLost(), qrtplib::RTCPSRPacket::GetFractionLost(), qrtplib::RTCPSDESPacket::GetItemData(), qrtplib::RTCPSDESPacket::GetItemLength(), qrtplib::RTCPSDESPacket::GetItemType(), qrtplib::RTCPRRPacket::GetJitter(), qrtplib::RTCPSRPacket::GetJitter(), qrtplib::RTCPRRPacket::GetLostPacketCount(), qrtplib::RTCPSRPacket::GetLostPacketCount(), qrtplib::RTCPRRPacket::GetLSR(), qrtplib::RTCPSRPacket::GetLSR(), qrtplib::RTCPCompoundPacket::GetNextPacket(), qrtplib::RTCPSRPacket::GetNTPTimestamp(), qrtplib::RTCPPacket::GetPacketType(), qrtplib::RTCPSDESPacket::GetPRIVPrefixData(), qrtplib::RTCPSDESPacket::GetPRIVPrefixLength(), qrtplib::RTCPSDESPacket::GetPRIVValueData(), qrtplib::RTCPSDESPacket::GetPRIVValueLength(), qrtplib::RTCPBYEPacket::GetReasonData(), qrtplib::RTCPBYEPacket::GetReasonLength(), qrtplib::RTCPRRPacket::GetReceptionReportCount(), qrtplib::RTCPSRPacket::GetReceptionReportCount(), qrtplib::RTCPSRPacket::GetRTPTimestamp(), qrtplib::RTCPSRPacket::GetSenderOctetCount(), qrtplib::RTCPSRPacket::GetSenderPacketCount(), qrtplib::RTCPRRPacket::GetSenderSSRC(), qrtplib::RTCPSRPacket::GetSenderSSRC(), qrtplib::RTCPBYEPacket::GetSSRC(), qrtplib::RTCPRRPacket::GetSSRC(), qrtplib::RTCPSRPacket::GetSSRC(), qrtplib::RTPSourceData::GetSSRC(), qrtplib::RTCPBYEPacket::GetSSRCCount(), qrtplib::RTCPSDESPacket::GotoFirstChunk(), qrtplib::RTCPSDESPacket::GotoFirstItem(), qrtplib::RTCPCompoundPacket::GotoFirstPacket(), qrtplib::RTCPSDESPacket::GotoNextChunk(), qrtplib::RTCPSDESPacket::GotoNextItem(), i, qrtplib::RTCPPacket::IsKnownFormat(), OnAPPPacket(), OnRTCPCompoundPacket(), OnUnknownPacketFormat(), OnUnknownPacketType(), owndata, qrtplib::RTCPSDESPacket::PRIV, ProcessBYE(), ProcessRTCPReportBlock(), ProcessRTCPSenderInfo(), ProcessSDESNormalItem(), ProcessSDESPrivateItem(), qrtplib::RTCPPacket::RR, qrtplib::RTCPPacket::SDES, qrtplib::RTCPPacket::SR, qrtplib::RTCPPacket::Unknown, and UpdateReceiveTime().
Referenced by ProcessRawPacket().
int qrtplib::RTPSources::ProcessRTCPReportBlock | ( | uint32_t | ssrc, |
uint8_t | fractionlost, | ||
int32_t | lostpackets, | ||
uint32_t | exthighseqnr, | ||
uint32_t | jitter, | ||
uint32_t | lsr, | ||
uint32_t | dlsr, | ||
const RTPTime & | receivetime, | ||
const RTPAddress * | senderaddress | ||
) |
Processes the report block information which was sent by participant ssrc
into the source table. Processes the report block information which was sent by participant ssrc
into the source table. The information was received at time receivetime
from address senderaddress
The senderaddress
parameter must be NULL if the packet was sent by the local participant.
Definition at line 664 of file rtpsources.cpp.
References GetRTCPSourceData(), OnNewSource(), OnRTCPReceiverReport(), and qrtplib::RTPInternalSourceData::ProcessReportBlock().
Referenced by ProcessRTCPCompoundPacket().
int qrtplib::RTPSources::ProcessRTCPSenderInfo | ( | uint32_t | ssrc, |
const RTPNTPTime & | ntptime, | ||
uint32_t | rtptime, | ||
uint32_t | packetcount, | ||
uint32_t | octetcount, | ||
const RTPTime & | receivetime, | ||
const RTPAddress * | senderaddress | ||
) |
Process the sender information of SSRC ssrc
into the source table. Process the sender information of SSRC ssrc
into the source table. The information was received at time receivetime
from address senderaddress
. The senderaddress}
parameter must be NULL if the packet was sent by the local participant.
Definition at line 640 of file rtpsources.cpp.
References GetRTCPSourceData(), OnNewSource(), OnRTCPSenderReport(), and qrtplib::RTPInternalSourceData::ProcessSenderInfo().
Referenced by ProcessRTCPCompoundPacket().
int qrtplib::RTPSources::ProcessRTPPacket | ( | RTPPacket * | rtppack, |
const RTPTime & | receivetime, | ||
const RTPAddress * | senderaddress, | ||
bool * | stored | ||
) |
Processes an RTPPacket instance rtppack
which was received at time receivetime
and which originated from senderaddres
. Processes an RTPPacket instance rtppack
which was received at time receivetime
and which originated from senderaddres
. The senderaddress
parameter must be NULL if the packet was sent by the local participant. The flag stored
indicates whether the packet was stored in the table or not. If so, the rtppack
instance may not be deleted.
Definition at line 278 of file rtpsources.cpp.
References activecount, CheckCollision(), qrtplib::RTPPacket::GetCSRC(), qrtplib::RTPPacket::GetCSRCCount(), qrtplib::RTPPacket::GetSSRC(), i, qrtplib::RTPSourceData::IsActive(), qrtplib::RTPSourceData::IsSender(), qrtplib::RTPSourceData::IsValidated(), ObtainSourceDataInstance(), OnNewSource(), OnRTPPacket(), qrtplib::RTPInternalSourceData::ProcessRTPPacket(), RTP_MAXCSRCS, sendercount, qrtplib::RTPInternalSourceData::SetCSRC(), and qrtplib::RTPInternalSourceData::SetRTPDataAddress().
Referenced by ProcessRawPacket().
int qrtplib::RTPSources::ProcessSDESNormalItem | ( | uint32_t | ssrc, |
RTCPSDESPacket::ItemType | t, | ||
std::size_t | itemlength, | ||
const void * | itemdata, | ||
const RTPTime & | receivetime, | ||
const RTPAddress * | senderaddress | ||
) |
Processes the non-private SDES item from source ssrc
into the source table. Processes the non-private SDES item from source ssrc
into the source table. The information was received at time receivetime
from address senderaddress
. The senderaddress
parameter must be NULL if the packet was sent by the local participant.
Definition at line 688 of file rtpsources.cpp.
References activecount, qrtplib::RTCPSDESPacket::CNAME, qrtplib::RTCPSDESPacket::EMAIL, ERR_RTP_SOURCES_ILLEGALSDESTYPE, GetRTCPSourceData(), qrtplib::RTPSourceData::IsActive(), qrtplib::RTCPSDESPacket::LOC, qrtplib::RTCPSDESPacket::NAME, qrtplib::RTCPSDESPacket::NOTE, OnCNAMECollision(), OnNewSource(), OnRTCPSDESItem(), qrtplib::RTCPSDESPacket::PHONE, qrtplib::RTPInternalSourceData::ProcessSDESItem(), RTCP_SDES_ID_CNAME, RTCP_SDES_ID_EMAIL, RTCP_SDES_ID_LOCATION, RTCP_SDES_ID_NAME, RTCP_SDES_ID_NOTE, RTCP_SDES_ID_PHONE, RTCP_SDES_ID_TOOL, and qrtplib::RTCPSDESPacket::TOOL.
Referenced by ProcessRTCPCompoundPacket().
int qrtplib::RTPSources::ProcessSDESPrivateItem | ( | uint32_t | ssrc, |
std::size_t | prefixlen, | ||
const void * | prefixdata, | ||
std::size_t | valuelen, | ||
const void * | valuedata, | ||
const RTPTime & | receivetime, | ||
const RTPAddress * | senderaddress | ||
) |
Processes the SDES private item from source ssrc
into the source table. Processes the SDES private item from source ssrc
into the source table. The information was received at time receivetime
from address senderaddress
. The senderaddress
parameter must be NULL if the packet was sent by the local participant.
Definition at line 748 of file rtpsources.cpp.
References GetRTCPSourceData(), OnNewSource(), OnRTCPSDESPrivateItem(), and qrtplib::RTPInternalSourceData::ProcessPrivateSDESItem().
Referenced by ProcessRTCPCompoundPacket().
Assuming that the current time is curtime
, remove the sender flag for senders from whom we haven't received any RTP packets during the previous time interval timeoutdelay
.
Definition at line 923 of file rtpsources.cpp.
References activecount, qrtplib::RTPInternalSourceData::ClearSenderFlag(), qrtplib::RTPSourceData::INF_GetLastRTPPacketTime(), qrtplib::RTPSourceData::IsActive(), qrtplib::RTPSourceData::IsSender(), sendercount, sourcelist, and totalcount.
void qrtplib::RTPSources::SentRTPPacket | ( | ) |
This function should be called if our own session has sent an RTP packet. This function should be called if our own session has sent an RTP packet. For our own SSRC entry, the sender flag is updated based upon outgoing packets instead of incoming packets.
Definition at line 137 of file rtpsources.cpp.
References qrtplib::RTPSourceData::IsSender(), owndata, sendercount, and qrtplib::RTPInternalSourceData::SentRTPPacket().
Referenced by qrtplib::RTPSession::SendPacket(), and qrtplib::RTPSession::SendPacketEx().
Assuming that the current time is curtime
, time out the members from whom we haven't heard during the previous time interval timeoutdelay
.
Definition at line 877 of file rtpsources.cpp.
References activecount, qrtplib::RTPSourceData::INF_GetLastMessageTime(), qrtplib::RTPSourceData::IsActive(), qrtplib::RTPSourceData::IsSender(), OnRemoveSource(), OnTimeout(), owndata, sendercount, sourcelist, and totalcount.
int qrtplib::RTPSources::UpdateReceiveTime | ( | uint32_t | ssrc, |
const RTPTime & | receivetime, | ||
const RTPAddress * | senderaddress | ||
) |
If we heard from source ssrc
, but no actual data was added to the source table (for example, if no report block was meant for us), this function can e used to indicate that something was received from this source. If we heard from source ssrc
, but no actual data was added to the source table (for example, if no report block was meant for us), this function can e used to indicate that something was received from this source. This will prevent a premature timeout for this participant. The message was received at time receivetime
from address senderaddress
. The senderaddress
parameter must be NULL if the packet was sent by the local participant.
Definition at line 855 of file rtpsources.cpp.
References GetRTCPSourceData(), OnNewSource(), and qrtplib::RTPInternalSourceData::UpdateMessageTime().
Referenced by ProcessRTCPCompoundPacket().
|
friend |
Definition at line 370 of file rtpsources.h.
Referenced by ObtainSourceDataInstance().
|
private |
Definition at line 366 of file rtpsources.h.
Referenced by BYETimeout(), ClearSourceList(), CreateOwnSSRC(), DeleteOwnSSRC(), MultipleTimeouts(), NoteTimeout(), ProcessBYE(), ProcessRTPPacket(), ProcessSDESNormalItem(), RTPSources(), SenderTimeout(), and Timeout().
|
private |
Definition at line 368 of file rtpsources.h.
Referenced by BYETimeout(), ClearSourceList(), CreateOwnSSRC(), DeleteOwnSSRC(), MultipleTimeouts(), ProcessBYE(), ProcessRTCPCompoundPacket(), RTPSources(), SentRTPPacket(), and Timeout().
|
private |
Definition at line 364 of file rtpsources.h.
Referenced by BYETimeout(), ClearSourceList(), DeleteOwnSSRC(), MultipleTimeouts(), NoteTimeout(), ProcessRTPPacket(), RTPSources(), SenderTimeout(), SentRTPPacket(), and Timeout().
|
private |
Definition at line 362 of file rtpsources.h.
Referenced by BYETimeout(), ClearSourceList(), DeleteOwnSSRC(), GetCurrentSourceInfo(), GetNextPacket(), GetSourceInfo(), GotEntry(), GotoFirstSource(), GotoFirstSourceWithData(), GotoNextSource(), GotoNextSourceWithData(), GotoPreviousSource(), GotoPreviousSourceWithData(), MultipleTimeouts(), NoteTimeout(), ObtainSourceDataInstance(), SenderTimeout(), and Timeout().
|
private |
Definition at line 365 of file rtpsources.h.
Referenced by BYETimeout(), ClearSourceList(), DeleteOwnSSRC(), MultipleTimeouts(), NoteTimeout(), ObtainSourceDataInstance(), RTPSources(), SenderTimeout(), and Timeout().