37 #ifndef RTPSOURCEDATA_H
39 #define RTPSOURCEDATA_H
41 #include "rtpconfig.h"
52 class RTCPSenderReportInfo
55 RTCPSenderReportInfo():ntptimestamp(0,0),receivetime(0,0) { hasinfo =
false; rtptimestamp = 0; packetcount = 0; bytecount = 0; }
56 void Set(
const RTPNTPTime &ntptime,uint32_t rtptime,uint32_t pcount,
57 uint32_t bcount,
const RTPTime &rcvtime) { ntptimestamp = ntptime; rtptimestamp = rtptime; packetcount = pcount; bytecount = bcount; receivetime = rcvtime; hasinfo =
true; }
59 bool HasInfo()
const {
return hasinfo; }
60 RTPNTPTime GetNTPTimestamp()
const {
return ntptimestamp; }
61 uint32_t GetRTPTimestamp()
const {
return rtptimestamp; }
62 uint32_t GetPacketCount()
const {
return packetcount; }
63 uint32_t GetByteCount()
const {
return bytecount; }
64 RTPTime GetReceiveTime()
const {
return receivetime; }
68 uint32_t rtptimestamp;
74 class RTCPReceiverReportInfo
77 RTCPReceiverReportInfo():receivetime(0,0) { hasinfo =
false; fractionlost = 0; packetslost = 0; exthighseqnr = 0; jitter = 0; lsr = 0; dlsr = 0; }
78 void Set(uint8_t fraclost,int32_t plost,uint32_t exthigh,
79 uint32_t jit,uint32_t l,uint32_t dl,
const RTPTime &rcvtime) { fractionlost = ((double)fraclost)/256.0; packetslost = plost; exthighseqnr = exthigh; jitter = jit; lsr = l; dlsr = dl; receivetime = rcvtime; hasinfo =
true; }
81 bool HasInfo()
const {
return hasinfo; }
82 double GetFractionLost()
const {
return fractionlost; }
83 int32_t GetPacketsLost()
const {
return packetslost; }
84 uint32_t GetExtendedHighestSequenceNumber()
const {
return exthighseqnr; }
85 uint32_t GetJitter()
const {
return jitter; }
86 uint32_t GetLastSRTimestamp()
const {
return lsr; }
87 uint32_t GetDelaySinceLastSR()
const {
return dlsr; }
88 RTPTime GetReceiveTime()
const {
return receivetime; }
93 uint32_t exthighseqnr;
104 void ProcessPacket(
RTPPacket *pack,
const RTPTime &receivetime,
double tsunit,
bool ownpacket,
bool *accept,
bool applyprobation,
bool *onprobation);
106 bool HasSentData()
const {
return sentdata; }
107 uint32_t GetNumPacketsReceived()
const {
return packetsreceived; }
108 uint32_t GetBaseSequenceNumber()
const {
return baseseqnr; }
109 uint32_t GetExtendedHighestSequenceNumber()
const {
return exthighseqnr; }
110 uint32_t GetJitter()
const {
return jitter; }
112 int32_t GetNumPacketsReceivedInInterval()
const {
return numnewpackets; }
113 uint32_t GetSavedExtendedSequenceNumber()
const {
return savedextseqnr; }
114 void StartNewInterval() { numnewpackets = 0; savedextseqnr = exthighseqnr; }
116 void SetLastMessageTime(
const RTPTime &t) { lastmsgtime = t; }
117 RTPTime GetLastMessageTime()
const {
return lastmsgtime; }
118 void SetLastRTPPacketTime(
const RTPTime &t) { lastrtptime = t; }
119 RTPTime GetLastRTPPacketTime()
const {
return lastrtptime; }
121 void SetLastNoteTime(
const RTPTime &t) { lastnotetime = t; }
122 RTPTime GetLastNoteTime()
const {
return lastnotetime; }
125 uint32_t packetsreceived;
128 uint32_t exthighseqnr,prevexthighseqnr;
129 uint32_t jitter,prevtimestamp;
135 uint32_t numnewpackets;
136 uint32_t savedextseqnr;
137 #ifdef RTP_SUPPORT_PROBATION
141 #endif // RTP_SUPPORT_PROBATION
144 inline RTPSourceStats::RTPSourceStats():prevpacktime(0,0),lastmsgtime(0,0),lastrtptime(0,0),lastnotetime(0,0)
150 prevexthighseqnr = 0;
157 #ifdef RTP_SUPPORT_PROBATION
160 #endif // RTP_SUPPORT_PROBATION
177 bool HasData()
const {
if (!validated)
return false;
return packetlist.empty()?
false:
true; }
200 bool IsActive()
const {
if (!validated)
return false;
if (receivedbye)
return false;
return true; }
243 uint8_t *
GetBYEReason(
size_t *len)
const { *len = byereasonlen;
return byereason; }
407 #ifdef RTP_SUPPORT_SDESPRIV
421 #endif // RTP_SUPPORT_SDESPRIV
427 std::list<RTPPacket *> packetlist;
432 double timestampunit;
435 bool processedinrtcp;
438 RTCPSenderReportInfo SRinf,SRprevinf;
439 RTCPReceiverReportInfo RRinf,RRprevinf;
440 RTPSourceStats stats;
443 bool isrtpaddrset,isrtcpaddrset;
458 if (packetlist.empty())
460 p = *(packetlist.begin());
461 packetlist.pop_front();
467 std::list<RTPPacket *>::const_iterator it;
469 for (it = packetlist.begin() ; it != packetlist.end() ; ++it)
470 RTPDelete(*it,GetMemoryManager());
473 #endif // RTPSOURCEDATA_H