44 #ifndef CCXX_RTP_CQUEUE_H_
45 #define CCXX_RTP_CQUEUE_H_
116 { leavingDelay = delay; }
134 { end2EndDelay = t; }
138 {
return defaultEnd2EndDelay; }
142 {
return end2EndDelay; }
159 { sendControlBwFract = fraction; recvControlBwFract = 1 - fraction;}
172 { rtcpMinInterval = interval; }
179 {
return ctrlSendCount; }
211 getOutQueueCryptoContextCtrl(uint32 ssrc);
246 getInQueueCryptoContextCtrl(uint32 ssrc);
261 {
return queueApplication; }
265 { controlBwFract = fraction; }
269 {
return controlBwFract; }
276 controlTransmissionService();
283 controlReceptionService();
297 bool checkSSRCInRTCPPkt(SyncSourceLink& sourceLink,
bool is_new,
298 InetAddress& na, tpport_t tp);
301 endQueueRTCPManager();
314 onGotSR(
SyncSource& source, SendReport& SR, uint8 blocks);
327 onGotRR(
SyncSource& source, RecvReport& RR, uint8 blocks);
334 onGotSDES(
SyncSource& source, RTCPPacket& pkt);
346 onGotSDESChunk(
SyncSource& source, SDESChunk& chunk,
size_t len);
364 {
return rtcpCheckInterval; }
372 {
return lastSendPacketCount; }
379 { reconsInfo.rtcpPMembers = n; }
383 {
return reconsInfo.rtcpPMembers; }
407 sendControlToDestinations(
unsigned char* buffer,
size_t len);
421 dispatchControlPacket();
435 takeInControlPacket();
451 computeRTCPInterval();
487 onGotRRSRExtension(
unsigned char*,
size_t)
500 onGotGoodbye(
const SyncSource&,
const std::string&)
516 getBYE(RTCPPacket &pkt,
size_t &pointer,
size_t len);
522 packReportBlocks(RRBlock* blocks, uint16& len, uint16& available);
533 packSDES(uint16& len);
547 updateAvgRTCPSize(
size_t len);
555 reverseReconsideration();
558 timerReconsideration();
583 const char*
const value,
size_t len);
603 inline virtual uint16
618 inline virtual uint16
619 transportHeaderSize()
631 sendControl(
const unsigned char*
const buffer,
size_t len) = 0;
634 recvControl(
unsigned char* buffer,
size_t len,
635 InetHostAddress& na, tpport_t& tp) = 0;
641 volatile bool controlServiceActive;
642 float controlBwFract, sendControlBwFract, recvControlBwFract;
644 uint32 ctrlSendCount;
648 uint16 lowerHeadersSize;
666 timeval rtcpLastCheck;
668 timeval rtcpCheckInterval;
670 timeval rtcpNextCheck;
674 uint32 lastSendPacketCount;
690 static const uint16 TIMEOUT_MULTIPLIER;
691 static const double RECONSIDERATION_COMPENSATION;
693 mutable Mutex outCryptoMutex;
694 std::list<CryptoContextCtrl *> outCryptoContexts;
697 mutable Mutex inCryptoMutex;
698 std::list<CryptoContextCtrl *> inCryptoContexts;
757 #endif //CCXX_RTP_CQUEUE_H_
Generic RTP input/output queues.
uint32 rtcpPMembers
Definition: cqueue.h:660
void setControlBandwidth(float fraction)
Specify the bandwith available for control (RTCP) packets.
Definition: cqueue.h:728
const RTPApplication & getApplication()
Definition: cqueue.h:260
timeval getRTCPCheckInterval()
Definition: cqueue.h:363
uint32 microtimeout_t
Time interval expressed in microseconds.
Definition: base.h:68
void setPRIVPrefix(Participant *part, const std::string val)
Definition: iqueue.h:189
virtual bool end2EndDelayed(IncomingRTPPktLink &)
Definition: iqueue.h:1239
uint32 getLastSendPacketCount() const
Get the number of data packets sent at the time the last SR was generated.
Definition: cqueue.h:371
Report block information of SR/RR RTCP reports.
Definition: rtcppkt.h:374
AVPQueue(uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
Definition: cqueue.h:736
microtimeout_t getDefaultEnd2EndDelay() const
Definition: cqueue.h:137
virtual size_t dispatchBYE(const std::string &)
A plugin point for posting of BYE messages.
Definition: queuebase.h:229
uint32 getSendRTCPPacketCount() const
Get the total number of RTCP packets sent until now.
Definition: cqueue.h:178
Synchronization source in an RTP session.
Definition: sources.h:194
The implementation for a SRTCP cryptographic context.
Definition: CryptoContextCtrl.h:62
This class, an RTP/RTCP queue, adds audio/video profile (AVP) specific methods to the generic RTCP se...
Definition: cqueue.h:709
void setMinRTCPInterval(microtimeout_t interval)
Manually set the minimum interval for sending RTP compound packets.
Definition: cqueue.h:171
virtual void onGotAPP(SyncSource &, RTCPCompoundHandler::APPPacket &, size_t)
Plug-in for handling of APP (application specific) RTCP packets.
Definition: cqueue.h:358
void setPrevMembersNum(uint32 n)
Definition: cqueue.h:378
void setSendersControlFraction(float fraction)
Specify the fraction of the total control bandwith to be dedicated to senders reports.
Definition: cqueue.h:158
void setLeavingDelay(microtimeout_t delay)
Set how much time the stack will wait before deleting a synchronization source that has sent an RTCP ...
Definition: cqueue.h:115
virtual ~AVPQueue()
Definition: cqueue.h:749
low level structs and RTCP packet parsing and building methods.
Definition: rtcppkt.h:90
Sender block information of SR RTCP reports.
Definition: rtcppkt.h:454
An RTP application, holding identifying RTCP SDES item values.
Definition: sources.h:366
float getControlBandwidth() const
Definition: cqueue.h:268
uint32 getPrevMembersCount() const
Definition: cqueue.h:382
static const size_t defaultMembersHashSize
Definition: iqueue.h:855
Struct for APP (application specific) RTCP packets.
Definition: rtcppkt.h:213
void setControlBandwidth(float fraction)
Definition: cqueue.h:264
void setEnd2EndDelay(microtimeout_t t)
This method sets the maximum end to end delay allowed.
Definition: cqueue.h:133
AVPQueue(uint32 ssrc, uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
Local SSRC is given instead of computed by the queue.
Definition: cqueue.h:744
Adds generic management of RTCP functions to an RTP data queue.
Definition: cqueue.h:80
void setSDESItem(Participant *part, SDESItemType item, const std::string &val)
Definition: iqueue.h:184
A packet queue handler for building different kinds of RTP protocol systems.
Definition: ioqueue.h:75
microtimeout_t getEnd2EndDelay() const
Definition: cqueue.h:141
__EXPORT RTPApplication & defaultApplication()
Get the RTPApplication object for the "default" application (the only one used by common applications...
timeval rtcpTp
Definition: cqueue.h:659
A class of objects representing remote participants (RTP applications) in a multimedia session...
Definition: sources.h:126
SDESItemType
SDES items that may be carried in a Source DEScription RTCP packet.
Definition: rtcppkt.h:65
float getControlBandwidth() const
Definition: cqueue.h:732