43 #ifndef CCXX_RTP_CQUEUE_H_
44 #define CCXX_RTP_CQUEUE_H_
115 { leavingDelay = delay; }
133 { end2EndDelay = t; }
137 {
return defaultEnd2EndDelay; }
141 {
return end2EndDelay; }
158 { sendControlBwFract = fraction; recvControlBwFract = 1 - fraction;}
171 { rtcpMinInterval = interval; }
178 {
return ctrlSendCount; }
210 getOutQueueCryptoContextCtrl(uint32 ssrc);
245 getInQueueCryptoContextCtrl(uint32 ssrc);
260 {
return queueApplication; }
264 { controlBwFract = fraction; }
268 {
return controlBwFract; }
275 controlTransmissionService();
282 controlReceptionService();
296 bool checkSSRCInRTCPPkt(SyncSourceLink& sourceLink,
bool is_new,
297 InetAddress& na, tpport_t tp);
300 endQueueRTCPManager();
313 onGotSR(
SyncSource& source, SendReport& SR, uint8 blocks);
326 onGotRR(
SyncSource& source, RecvReport& RR, uint8 blocks);
333 onGotSDES(
SyncSource& source, RTCPPacket& pkt);
345 onGotSDESChunk(
SyncSource& source, SDESChunk& chunk,
size_t len);
363 {
return rtcpCheckInterval; }
371 {
return lastSendPacketCount; }
378 { reconsInfo.rtcpPMembers = n; }
382 {
return reconsInfo.rtcpPMembers; }
406 sendControlToDestinations(
unsigned char* buffer,
size_t len);
420 dispatchControlPacket();
434 takeInControlPacket();
450 computeRTCPInterval();
515 getBYE(RTCPPacket &pkt,
size_t &pointer,
size_t len);
521 packReportBlocks(RRBlock* blocks, uint16& len, uint16& available);
532 packSDES(uint16& len);
546 updateAvgRTCPSize(
size_t len);
554 reverseReconsideration();
557 timerReconsideration();
582 const char*
const value,
size_t len);
602 inline virtual uint16
617 inline virtual uint16
630 sendControl(
const unsigned char*
const buffer,
size_t len) = 0;
633 recvControl(
unsigned char* buffer,
size_t len,
634 InetHostAddress& na, tpport_t& tp) = 0;
756 #endif //CCXX_RTP_CQUEUE_H_
Generic RTP input/output queues.
uint32 getLastSendPacketCount() const
Get the number of data packets sent at the time the last SR was generated.
microtimeout_t getDefaultEnd2EndDelay() const
The implementation for a SRTCP cryptographic context.
virtual size_t dispatchBYE(const std::string &)
A plugin point for posting of BYE messages.
microtimeout_t getEnd2EndDelay() const
low level structs and RTCP packet parsing and building methods.
std::list< CryptoContextCtrl * > outCryptoContexts
An RTP application, holding identifying RTCP SDES item values.
float getControlBandwidth() const
Synchronization source in an RTP session.
static const SDESItemType firstSchedulable
float getControlBandwidth() const
void setPRIVPrefix(Participant *part, const std::string val)
uint32 getPrevMembersCount() const
volatile bool controlServiceActive
uint32 microtimeout_t
Time interval expressed in microseconds.
Sender block information of SR RTCP reports.
microtimeout_t end2EndDelay
Adds generic management of RTCP functions to an RTP data queue.
virtual bool end2EndDelayed(IncomingRTPPktLink &)
void setMinRTCPInterval(microtimeout_t interval)
Manually set the minimum interval for sending RTP compound packets.
timeval rtcpCheckInterval
void setLeavingDelay(microtimeout_t delay)
Set how much time the stack will wait before deleting a synchronization source that has sent an RTCP ...
AVPQueue(uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
static const microtimeout_t defaultEnd2EndDelay
maximum end to end delay: unlimited
AVPQueue(uint32 ssrc, uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
Local SSRC is given instead of computed by the queue.
virtual void onGotAPP(SyncSource &, RTCPCompoundHandler::APPPacket &, size_t)
Plug-in for handling of APP (application specific) RTCP packets.
timeval getRTCPCheckInterval()
virtual void onGotGoodbye(const SyncSource &, const std::string &)
A plugin point for goodbye message.
uint32 getSendRTCPPacketCount() const
Get the total number of RTCP packets sent until now.
static const double RECONSIDERATION_COMPENSATION
A class of objects representing remote participants (RTP applications) in a multimedia session...
RTPDataQueue & operator=(const RTPDataQueue &o)
virtual uint16 transportHeaderSize()
For certain control calculations in RTCP, the size of the underlying network and transport protocols ...
microtimeout_t rtcpMinInterval
void setSDESItem(Participant *part, SDESItemType item, const std::string &val)
static const size_t defaultMembersHashSize
void setControlBandwidth(float fraction)
Specify the bandwith available for control (RTCP) packets.
void setControlBandwidth(float fraction)
SDESItemType nextScheduledSDESItem
const RTPApplication & getApplication()
static const SDESItemType lastSchedulable
virtual uint16 networkHeaderSize()
For certain control calculations in RTCP, the size of the underlying network and transport protocols ...
void setSendersControlFraction(float fraction)
Specify the fraction of the total control bandwith to be dedicated to senders reports.
static const uint16 TIMEOUT_MULTIPLIER
Report block information of SR/RR RTCP reports.
microtimeout_t leavingDelay
std::list< CryptoContextCtrl * > inCryptoContexts
virtual void onGotRRSRExtension(unsigned char *, size_t)
Plug-in for processing of SR/RR RTCP packet profile-specific extensions (third part of SR reports or ...
Struct for APP (application specific) RTCP packets.
void setPrevMembersNum(uint32 n)
__EXPORT RTPApplication & defaultApplication()
Get the RTPApplication object for the "default" application (the only one used by common applications...
virtual void onSSRCCollision(const SyncSource &)
Plug-in for SSRC collision handling.
uint32 lastSendPacketCount
void setEnd2EndDelay(microtimeout_t t)
This method sets the maximum end to end delay allowed.
A packet queue handler for building different kinds of RTP protocol systems.
SDESItemType
SDES items that may be carried in a Source DEScription RTCP packet.
RTPApplication & queueApplication
This class, an RTP/RTCP queue, adds audio/video profile (AVP) specific methods to the generic RTCP se...