44 #ifndef CCXX_RTP_CQUEUE_H_
45 #define CCXX_RTP_CQUEUE_H_
49 #ifdef CCXX_NAMESPACES
116 { leavingDelay = delay; }
134 { end2EndDelay = t; }
138 {
return defaultEnd2EndDelay; }
142 {
return end2EndDelay; }
159 { sendControlBwFract = fraction; recvControlBwFract = 1 - fraction;}
172 { rtcpMinInterval = interval; }
179 {
return ctrlSendCount; }
194 {
return queueApplication; }
198 { controlBwFract = fraction; }
202 {
return controlBwFract; }
209 controlTransmissionService();
216 controlReceptionService();
230 bool checkSSRCInRTCPPkt(SyncSourceLink& sourceLink,
bool is_new,
234 endQueueRTCPManager();
247 onGotSR(
SyncSource& source, SendReport& SR, uint8 blocks);
260 onGotRR(
SyncSource& source, RecvReport& RR, uint8 blocks);
267 onGotSDES(
SyncSource& source, RTCPPacket& pkt);
279 onGotSDESChunk(
SyncSource& source, SDESChunk& chunk,
size_t len);
297 {
return rtcpCheckInterval; }
305 {
return lastSendPacketCount; }
312 { reconsInfo.rtcpPMembers = n; }
316 {
return reconsInfo.rtcpPMembers; }
337 dispatchBYE(
const std::string& reason);
340 sendControlToDestinations(
unsigned char* buffer,
size_t len);
354 dispatchControlPacket();
368 takeInControlPacket();
384 computeRTCPInterval();
409 end2EndDelayed(IncomingRTPPktLink& p);
449 getBYE(RTCPPacket &pkt,
size_t &pointer,
size_t len);
455 packReportBlocks(RRBlock* blocks, uint16& len, uint16& available);
466 packSDES(uint16& len);
480 updateAvgRTCPSize(
size_t len);
488 reverseReconsideration();
491 timerReconsideration();
516 const char*
const value,
size_t len);
523 setPRIVPrefix(
Participant* part,
const char*
const value,
size_t len);
536 inline virtual uint16
551 inline virtual uint16
559 sendControl(
const unsigned char*
const buffer,
size_t len) = 0;
562 recvControl(
unsigned char* buffer,
size_t len,
675 #ifdef CCXX_NAMESPACES
679 #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
microtimeout_t getEnd2EndDelay() const
low level structs and RTCP packet parsing and building methods.
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
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.
unsigned short tpport_t
Transport Protocol Ports.
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
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...
virtual uint16 transportHeaderSize()
For certain control calculations in RTCP, the size of the underlying network and transport protocols ...
microtimeout_t rtcpMinInterval
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
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...