44 #ifndef CCXX_RTP_IQUEUE_H_
45 #define CCXX_RTP_IQUEUE_H_
52 #ifdef CCXX_NAMESPACES
74 setMembersCount(uint32 n)
78 increaseMembersCount()
82 decreaseMembersCount()
86 getMembersCount()
const
90 setSendersCount(uint32 n)
91 { activeSenders = n; }
94 increaseSendersCount()
98 decreaseSendersCount()
102 getSendersCount()
const
103 {
return activeSenders; }
118 uint32 activeSenders;
138 {
return source.getLink(); }
142 { source.setLink(link); }
146 { source.setParticipant(p); }
150 { source.setState(ns); }
154 { source.setSender(active); }
158 { source.setDataTransportPort(p); }
162 { source.setControlTransportPort(p); }
166 { source.setNetworkAddress(addr); }
187 const std::string& val)
188 { part->setSDESItem(item,val); }
192 { part->setPRIVPrefix(val); }
213 { app.addParticipant(part); }
217 RTPApplication::ParticipantLink* pl)
218 { app.removeParticipant(pl); }
241 tpport_t dtp, tpport_t ctp);
246 inline const InetAddress& getNetworkAddress( )
const
247 {
return networkAddress; }
249 inline tpport_t getDataTransportPort()
const
250 {
return dataTransportPort; }
252 inline tpport_t getControlTransportPort()
const
253 {
return controlTransportPort; }
279 void addConflict(
const InetAddress& na, tpport_t dtp, tpport_t ctp);
283 { firstConflict = lastConflict = NULL; }
309 inline size_t getDefaultMembersHashSize()
310 {
return defaultMembersHashSize; }
337 struct SyncSourceLink;
357 struct timeval& recv_ts,
366 srcPrev(sp), srcNext(sn),
367 receptionTime(recv_ts),
368 shiftedTimestamp(shifted_ts)
375 {
return sourceLink; }
378 { sourceLink = src; }
417 inline void setRecvTime(
const timeval &t)
418 { receptionTime = t; }
423 inline timeval getRecvTime()
const
424 {
return receptionTime; }
434 inline uint32 getTimestamp()
const
435 {
return shiftedTimestamp; }
437 inline void setTimestamp(uint32 ts)
438 { shiftedTimestamp = ts;}
449 struct timeval receptionTime;
484 membership(m), source(s), first(fp), last(lp),
485 prev(ps), next(ns), nextCollis(ncollis),
497 {
return membership; }
550 {
return nextCollis; }
555 inline ConflictingTransportAddress* getPrevConflict()
const
556 {
return prevConflict; }
561 void setPrevConflict(InetAddress& addr, tpport_t dataPort,
562 tpport_t controlPort);
564 unsigned char* getSenderInfo()
565 {
return senderInfo; }
567 void setSenderInfo(
unsigned char* si);
569 unsigned char* getReceiverInfo()
570 {
return receiverInfo; }
572 void setReceiverInfo(
unsigned char* ri);
574 inline timeval getLastPacketTime()
const
575 {
return lastPacketTime; }
577 inline timeval getLastRTCPPacketTime()
const
578 {
return lastRTCPPacketTime; }
580 inline timeval getLastRTCPSRTime()
const
581 {
return lastRTCPSRTime; }
587 inline uint32 getObservedPacketCount()
const
588 {
return obsPacketCount; }
590 inline void incObservedPacketCount()
591 { obsPacketCount++; }
597 inline uint32 getObservedOctetCount()
const
598 {
return obsOctetCount; }
600 inline void incObservedOctetCount(uint32 n)
601 { obsOctetCount += n; }
608 {
return maxSeqNum; }
615 setMaxSeqNum(uint16 max)
619 getExtendedMaxSeqNum()
const
620 {
return extendedMaxSeqNum; }
623 setExtendedMaxSeqNum(uint32 seq)
624 { extendedMaxSeqNum = seq; }
626 inline uint32 getCumulativePacketLost()
const
627 {
return cumulativePacketLost; }
629 inline void setCumulativePacketLost(uint32 pl)
630 { cumulativePacketLost = pl; }
632 inline uint8 getFractionLost()
const
633 {
return fractionLost; }
635 inline void setFractionLost(uint8 fl)
636 { fractionLost = fl; }
638 inline uint32 getLastPacketTransitTime()
639 {
return lastPacketTransitTime; }
641 inline void setLastPacketTransitTime(uint32 time)
642 { lastPacketTransitTime = time; }
644 inline float getJitter()
const
647 inline void setJitter(
float j)
650 inline uint32 getInitialDataTimestamp()
const
651 {
return initialDataTimestamp; }
653 inline void setInitialDataTimestamp(uint32 ts)
654 { initialDataTimestamp = ts; }
656 inline timeval getInitialDataTime()
const
657 {
return initialDataTime; }
659 inline void setInitialDataTime(timeval it)
660 { initialDataTime = it; }
690 inline uint32 getBadSeqNum()
const
691 {
return badSeqNum; }
693 inline void setBadSeqNum(uint32 seq)
696 uint8 getProbation()
const
697 {
return probation; }
699 inline void setProbation(uint8 p)
702 inline void decProbation()
706 {
return 0 == probation; }
708 inline uint16 getBaseSeqNum()
const
709 {
return baseSeqNum; }
711 inline uint32 getSeqNumAccum()
const
712 {
return seqNumAccum; }
714 inline void incSeqNumAccum()
715 { seqNumAccum += SEQNUMMOD; }
720 inline void initSequence(uint16 seqnum)
721 { maxSeqNum = seqNumAccum = seqnum; }
800 isRegistered(uint32 ssrc);
811 getSourceBySSRC(uint32 ssrc,
bool& created);
824 BYESource(uint32 ssrc);
834 removeSource(uint32 ssrc);
847 setMembersCount(uint32 n)
871 uint32 sourceBucketsNum;
910 {
return *(link->getSource()); }
913 {
return link->getSource(); }
916 link = link->getNext();
928 {
return l.link == r.link; }
932 {
return l.link != r.link; }
954 getData(uint32 stamp,
const SyncSource* src = NULL);
964 isWaiting(
const SyncSource* src = NULL)
const;
973 getFirstTimestamp(
const SyncSource* src = NULL)
const;
998 setMinValidPacketSequence(uint8 packets)
999 { minValidPacketSequence = packets; }
1002 getDefaultMinValidPacketSequence()
const
1003 {
return defaultMinValidPacketSequence; }
1010 getMinValidPacketSequence()
const
1011 {
return minValidPacketSequence; }
1014 setMaxPacketMisorder(uint16 packets)
1015 { maxPacketMisorder = packets; }
1018 getDefaultMaxPacketMisorder()
const
1019 {
return defaultMaxPacketMisorder; }
1022 getMaxPacketMisorder()
const
1023 {
return maxPacketMisorder; }
1031 setMaxPacketDropout(uint16 packets)
1032 { maxPacketDropout = packets; }
1035 getDefaultMaxPacketDropout()
const
1036 {
return defaultMaxPacketDropout; }
1039 getMaxPacketDropout()
const
1040 {
return maxPacketDropout; }
1044 inline static size_t
1045 getDefaultMembersSize()
1046 {
return defaultMembersSize; }
1080 getInQueueCryptoContext(uint32 ssrc);
1103 bool checkSSRCInIncomingRTPPkt(SyncSourceLink& sourceLink,
1104 bool is_new, InetAddress& na,
1122 void setSourceExpirationPeriod(uint8 intervals)
1123 { sourceExpirationPeriod = intervals; }
1134 void renewLocalSSRC();
1146 getWaiting(uint32 timestamp,
const SyncSource *src = NULL);
1164 recordReception(SyncSourceLink& srcLink,
const IncomingRTPPkt& pkt,
1165 const timeval recvtime);
1176 void purgeIncomingQueue();
1257 insertRecvPacket(IncomingRTPPktLink* packetLink);
1271 recvData(
unsigned char* buffer,
size_t length,
1272 InetHostAddress& host, tpport_t& port) = 0;
1275 getNextDataPacketSize()
const = 0;
1295 #ifdef CCXX_NAMESPACES
1299 #endif //CCXX_RTP_IQUEUE_H_