44 #ifndef CCXX_RTP_IQUEUE_H_
45 #define CCXX_RTP_IQUEUE_H_
72 setMembersCount(uint32 n)
76 increaseMembersCount()
80 decreaseMembersCount()
84 getMembersCount()
const
88 setSendersCount(uint32 n)
89 { activeSenders = n; }
92 increaseSendersCount()
96 decreaseSendersCount()
100 getSendersCount()
const
101 {
return activeSenders; }
116 uint32 activeSenders;
136 {
return source.getLink(); }
140 { source.setLink(link); }
144 { source.setParticipant(p); }
148 { source.setState(ns); }
152 { source.setSender(active); }
156 { source.setDataTransportPort(p); }
160 { source.setControlTransportPort(p); }
164 { source.setNetworkAddress(addr); }
185 const std::string& val)
186 { part->setSDESItem(item,val); }
190 { part->setPRIVPrefix(val); }
211 { app.addParticipant(part); }
215 RTPApplication::ParticipantLink* pl)
216 { app.removeParticipant(pl); }
239 tpport_t dtp, tpport_t ctp);
244 inline const InetAddress& getNetworkAddress( )
const
245 {
return networkAddress; }
247 inline tpport_t getDataTransportPort()
const
248 {
return dataTransportPort; }
250 inline tpport_t getControlTransportPort()
const
251 {
return controlTransportPort; }
277 void addConflict(
const InetAddress& na, tpport_t dtp, tpport_t ctp);
281 { firstConflict = lastConflict = NULL; }
307 inline size_t getDefaultMembersHashSize()
308 {
return defaultMembersHashSize; }
335 struct SyncSourceLink;
344 {
return getLink(source)->getMembership() ==
this; }
355 struct timeval& recv_ts,
364 srcPrev(sp), srcNext(sn),
365 receptionTime(recv_ts),
366 shiftedTimestamp(shifted_ts)
373 {
return sourceLink; }
376 { sourceLink = src; }
415 inline void setRecvTime(
const timeval &t)
416 { receptionTime = t; }
421 inline timeval getRecvTime()
const
422 {
return receptionTime; }
432 inline uint32 getTimestamp()
const
433 {
return shiftedTimestamp; }
435 inline void setTimestamp(uint32 ts)
436 { shiftedTimestamp = ts;}
447 struct timeval receptionTime;
482 membership(m), source(s), first(fp), last(lp),
483 prev(ps), next(ns), nextCollis(ncollis),
495 {
return membership; }
548 {
return nextCollis; }
553 inline ConflictingTransportAddress* getPrevConflict()
const
554 {
return prevConflict; }
559 void setPrevConflict(InetAddress& addr, tpport_t dataPort,
560 tpport_t controlPort);
562 unsigned char* getSenderInfo()
563 {
return senderInfo; }
565 void setSenderInfo(
unsigned char* si);
567 unsigned char* getReceiverInfo()
568 {
return receiverInfo; }
570 void setReceiverInfo(
unsigned char* ri);
572 inline timeval getLastPacketTime()
const
573 {
return lastPacketTime; }
575 inline timeval getLastRTCPPacketTime()
const
576 {
return lastRTCPPacketTime; }
578 inline timeval getLastRTCPSRTime()
const
579 {
return lastRTCPSRTime; }
585 inline uint32 getObservedPacketCount()
const
586 {
return obsPacketCount; }
588 inline void incObservedPacketCount()
589 { obsPacketCount++; }
595 inline uint32 getObservedOctetCount()
const
596 {
return obsOctetCount; }
598 inline void incObservedOctetCount(uint32 n)
599 { obsOctetCount += n; }
606 {
return maxSeqNum; }
613 setMaxSeqNum(uint16 max)
617 getExtendedMaxSeqNum()
const
618 {
return extendedMaxSeqNum; }
621 setExtendedMaxSeqNum(uint32 seq)
622 { extendedMaxSeqNum = seq; }
624 inline uint32 getCumulativePacketLost()
const
625 {
return cumulativePacketLost; }
627 inline void setCumulativePacketLost(uint32 pl)
628 { cumulativePacketLost = pl; }
630 inline uint8 getFractionLost()
const
631 {
return fractionLost; }
633 inline void setFractionLost(uint8 fl)
634 { fractionLost = fl; }
636 inline uint32 getLastPacketTransitTime()
637 {
return lastPacketTransitTime; }
639 inline void setLastPacketTransitTime(uint32 time)
640 { lastPacketTransitTime = time; }
642 inline float getJitter()
const
645 inline void setJitter(
float j)
648 inline uint32 getInitialDataTimestamp()
const
649 {
return initialDataTimestamp; }
651 inline void setInitialDataTimestamp(uint32 ts)
652 { initialDataTimestamp = ts; }
654 inline timeval getInitialDataTime()
const
655 {
return initialDataTime; }
657 inline void setInitialDataTime(timeval it)
658 { initialDataTime = it; }
688 inline uint32 getBadSeqNum()
const
689 {
return badSeqNum; }
691 inline void setBadSeqNum(uint32 seq)
694 uint8 getProbation()
const
695 {
return probation; }
697 inline void setProbation(uint8 p)
700 inline void decProbation()
704 {
return 0 == probation; }
706 inline uint16 getBaseSeqNum()
const
707 {
return baseSeqNum; }
709 inline uint32 getSeqNumAccum()
const
710 {
return seqNumAccum; }
712 inline void incSeqNumAccum()
713 { seqNumAccum += SEQNUMMOD; }
718 inline void initSequence(uint16 seqnum)
719 { maxSeqNum = seqNumAccum = seqnum; }
798 isRegistered(uint32 ssrc);
809 getSourceBySSRC(uint32 ssrc,
bool& created);
822 BYESource(uint32 ssrc);
832 removeSource(uint32 ssrc);
869 uint32 sourceBucketsNum;
908 {
return *(link->getSource()); }
911 {
return link->getSource(); }
914 link = link->getNext();
926 {
return l.link == r.link; }
930 {
return l.link != r.link; }
952 getData(uint32 stamp,
const SyncSource* src = NULL);
962 isWaiting(
const SyncSource* src = NULL)
const;
971 getFirstTimestamp(
const SyncSource* src = NULL)
const;
996 setMinValidPacketSequence(uint8 packets)
997 { minValidPacketSequence = packets; }
1000 getDefaultMinValidPacketSequence()
const
1001 {
return defaultMinValidPacketSequence; }
1008 getMinValidPacketSequence()
const
1009 {
return minValidPacketSequence; }
1012 setMaxPacketMisorder(uint16 packets)
1013 { maxPacketMisorder = packets; }
1016 getDefaultMaxPacketMisorder()
const
1017 {
return defaultMaxPacketMisorder; }
1020 getMaxPacketMisorder()
const
1021 {
return maxPacketMisorder; }
1029 setMaxPacketDropout(uint16 packets)
1030 { maxPacketDropout = packets; }
1033 getDefaultMaxPacketDropout()
const
1034 {
return defaultMaxPacketDropout; }
1037 getMaxPacketDropout()
const
1038 {
return maxPacketDropout; }
1042 inline static size_t
1043 getDefaultMembersSize()
1044 {
return defaultMembersSize; }
1078 getInQueueCryptoContext(uint32 ssrc);
1101 bool checkSSRCInIncomingRTPPkt(SyncSourceLink& sourceLink,
1102 bool is_new, InetAddress& na,
1120 void setSourceExpirationPeriod(uint8 intervals)
1121 { sourceExpirationPeriod = intervals; }
1144 getWaiting(uint32 timestamp,
const SyncSource *src = NULL);
1162 recordReception(SyncSourceLink& srcLink,
const IncomingRTPPkt& pkt,
1163 const timeval recvtime);
1174 void purgeIncomingQueue();
1236 end2EndDelayed(IncomingRTPPktLink&)
1255 insertRecvPacket(IncomingRTPPktLink* packetLink);
1269 recvData(
unsigned char* buffer,
size_t length,
1270 InetHostAddress& host, tpport_t& port) = 0;
1273 getNextDataPacketSize()
const = 0;
1295 #endif //CCXX_RTP_IQUEUE_H_