QueueRTCPManager Class Referenceabstract
Generic RTCP control queues.

Adds generic management of RTCP functions to an RTP data queue. More...

`#include <cqueue.h>`

Inheritance diagram for QueueRTCPManager:

## Public Member Functions

RTCPSenderInfo * | getMRSenderInfo (SyncSource &src)
| Get the most recent sender report received from a synchronization source. More...
RTCPReceiverInfo * | getMRReceiverInfo (SyncSource &srcFrom)
| Ask for the info in the most recent receiver report about the local source received from the source given as parameter. More...
void | setLeavingDelay (microtimeout_t delay)
| Set how much time the stack will wait before deleting a synchronization source that has sent an RTCP BYE packet. More...
void | setEnd2EndDelay (microtimeout_t t)
| This method sets the maximum end to end delay allowed. More...
microtimeout_t | getDefaultEnd2EndDelay () const
microtimeout_t | getEnd2EndDelay () const
void | setSendersControlFraction (float fraction)
| Specify the fraction of the total control bandwith to be dedicated to senders reports. More...
void | setMinRTCPInterval (microtimeout_t interval)
| Manually set the minimum interval for sending RTP compound packets. More...
uint32 | getSendRTCPPacketCount () const
| Get the total number of RTCP packets sent until now. More...
void | setOutQueueCryptoContextCtrl (CryptoContextCtrl *cc)
| Set output queue CryptoContext. More...
void | removeOutQueueCryptoContextCtrl (CryptoContextCtrl *cc)
| Remove output queue CryptoContext. More...
CryptoContextCtrl * | getOutQueueCryptoContextCtrl (uint32 ssrc)
| Get an output queue CryptoContext identified by SSRC. More...
void | setInQueueCryptoContextCtrl (CryptoContextCtrl *cc)
| Set input queue CryptoContext. More...
void | removeInQueueCryptoContextCtrl (CryptoContextCtrl *cc)
| Remove input queue CryptoContext. More...
CryptoContextCtrl * | getInQueueCryptoContextCtrl (uint32 ssrc)
| Get an input queue CryptoContext identified by SSRC. More...
Public Member Functions inherited from RTPDataQueue
void | setTypeOfService (Tos tos)
| Specify the kind of service the application expects to use. More...
void | enableStack ()
| Enable packet queue processing in the stack. More...
void | disableStack ()
| Disable packet queue processing in the stack. More...
bool | isActive () const
| Get active connection state flag. More...
uint32 | getCurrentTimestamp () const
| Get the timestamp that should be given for a packet whose payload sampling instant corresponds to the current system time. More...
void | setSessionBandwidth (uint32 bw)
| Specify the bandwidth of the current session. More...
uint32 | getDefaultSessionBandwidth () const
uint32 | getSessionBandwidth () const
void | setTimeclock ()
| Set the packet timeclock for synchronizing timestamps. More...
timeout_t | getTimeclock () const
| Get the packet timeclock for synchronizing timestamps. More...
Public Member Functions inherited from IncomingDataQueue
SyncSourcesIterator | begin ()
SyncSourcesIterator | end ()
const AppDataUnit * | getData (uint32 stamp, const SyncSource *src=NULL)
| Retreive data from a specific timestamped packet if such a packet is currently available in the receive buffer. More...
bool | isWaiting (const SyncSource *src=NULL) const
| Determine if packets are waiting in the reception queue. More...
uint32 | getFirstTimestamp (const SyncSource *src=NULL) const
| Get timestamp of first packet waiting in the queue. More...
void | setMinValidPacketSequence (uint8 packets)
| When receiving packets from a new source, it may be convenient to reject a first few packets before we are really sure the source is valid. More...
uint8 | getDefaultMinValidPacketSequence () const
uint8 | getMinValidPacketSequence () const
| Get the minimun number of consecutive packets that must be received from a source before accepting its data packets. More...
void | setMaxPacketMisorder (uint16 packets)
uint16 | getDefaultMaxPacketMisorder () const
uint16 | getMaxPacketMisorder () const
void | setMaxPacketDropout (uint16 packets)
| It also prevents packets sent after a restart of the source being immediately accepted. More...
uint16 | getDefaultMaxPacketDropout () const
uint16 | getMaxPacketDropout () const
void | setInQueueCryptoContext (CryptoContext *cc)
| Set input queue CryptoContext. More...
void | removeInQueueCryptoContext (CryptoContext *cc)
| Remove input queue CryptoContext. More...
CryptoContext * | getInQueueCryptoContext (uint32 ssrc)
| Get an input queue CryptoContext identified by SSRC. More...
Public Member Functions inherited from IncomingDataQueueBase
size_t | getDefaultMaxRecvPacketSize () const
size_t | getMaxRecvPacketSize () const
void | setMaxRecvPacketSize (size_t maxsize)
Public Member Functions inherited from RTPQueueBase
bool | setPayloadFormat (const PayloadFormat &pf)
| Set the payload format in use, for timing and payload type identification purposes. More...
uint32 | getLocalSSRC () const
uint32 | getCurrentRTPClockRate () const
| Get the clock rate in RTP clock units (for instance, 8000 units per second for PCMU, or 90000 units per second for MP2T). More...
PayloadType | getCurrentPayloadType () const
timeval | getInitialTime () const
Public Member Functions inherited from OutgoingDataQueue
bool | addDestination (const InetHostAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)
bool | addDestination (const InetMcastAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)
bool | forgetDestination (const InetHostAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)
bool | forgetDestination (const InetMcastAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)
void | addContributor (uint32 csrc)
| Add csrc as the CSRC identifier of a new contributor. More...
bool | removeContributor (uint32 csrc)
| Remove CSRC from the list of contributors. More...
bool | isSending () const
| Determine if outgoing packets are waiting to send. More...
void | putData (uint32 stamp, const unsigned char *data=NULL, size_t len=0)
| This is used to create a data packet in the send queue. More...
void | sendImmediate (uint32 stamp, const unsigned char *data=NULL, size_t len=0)
| This is used to create a data packet and send it immediately. More...
void | setPadding (uint8 paddinglen)
| Set padding. More...
void | setMark (bool mark)
| Set marker bit for the packet in which the next data provided will be send. More...
bool | getMark () const
| Get whether the mark bit will be set in the next packet. More...
size_t | setPartial (uint32 timestamp, unsigned char *data, size_t offset, size_t max)
| Set partial data for an already queued packet. More...
microtimeout_t | getDefaultSchedulingTimeout () const
void | setSchedulingTimeout (microtimeout_t to)
| Set the default scheduling timeout to use when no data packets are waiting to be sent. More...
microtimeout_t | getDefaultExpireTimeout () const
void | setExpireTimeout (microtimeout_t to)
| Set the "expired" timer for expiring packets pending in the send queue which have gone unsent and are already "too late" to be sent now. More...
microtimeout_t | getExpireTimeout () const
uint32 | getSendPacketCount () const
| Get the total number of packets sent so far. More...
uint32 | getSendOctetCount () const
| Get the total number of octets (payload only) sent so far. More...
uint16 | getSequenceNumber () const
| Get the sequence number of the next outgoing packet. More...
void | setOutQueueCryptoContext (CryptoContext *cc)
| Set output queue CryptoContext. More...
void | removeOutQueueCryptoContext (CryptoContext *cc)
| Remove output queue CryptoContext. More...
CryptoContext * | getOutQueueCryptoContext (uint32 ssrc)
| Get an output queue CryptoContext identified by SSRC. More...
Public Member Functions inherited from OutgoingDataQueueBase
size_t | getDefaultMaxSendSegmentSize ()
void | setMaxSendSegmentSize (size_t size)
| Set maximum payload segment size before fragmenting sends. More...
size_t | getMaxSendSegmentSize ()

## Protected Member Functions

| QueueRTCPManager (uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
| QueueRTCPManager (uint32 ssrc, uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
virtual | ~QueueRTCPManager ()
const RTPApplication & | getApplication ()
void | setControlBandwidth (float fraction)
float | getControlBandwidth () const
void | controlTransmissionService ()
| Build and send RTCP packets following timing rules (including the "timer reconsideration" algorithm). More...
void | controlReceptionService ()
| Process incoming RTCP packets pending in the control reception socket. More...
bool | checkSSRCInRTCPPkt (SyncSourceLink &sourceLink, bool is_new, InetAddress &na, tpport_t tp)
| Appy collision and loop detection and correction algorithm when receiving RTCP packets. More...
void | endQueueRTCPManager ()
virtual void | onGotSR (SyncSource &source, SendReport &SR, uint8 blocks)
| Plug-in for processing (acquire information carried in) an incoming RTCP Sender Report. More...
virtual void | onGotRR (SyncSource &source, RecvReport &RR, uint8 blocks)
| Plug-in for processing (acquire information carried in) an incoming RTCP Receiver Report. More...
bool | onGotSDES (SyncSource &source, RTCPPacket &pkt)
virtual bool | onGotSDESChunk (SyncSource &source, SDESChunk &chunk, size_t len)
| Plug-in for handling of SDES chunks. More...
virtual void | onGotAPP (SyncSource &, RTCPCompoundHandler::APPPacket &, size_t)
| Plug-in for handling of APP (application specific) RTCP packets. More...
timeval | getRTCPCheckInterval ()
uint32 | getLastSendPacketCount () const
| Get the number of data packets sent at the time the last SR was generated. More...
void | setPrevMembersNum (uint32 n)
uint32 | getPrevMembersCount () const
size_t | dispatchBYE (const std::string &reason)
| This method is used to send an RTCP BYE packet. More...
size_t | sendControlToDestinations (unsigned char *buffer, size_t len)
Protected Member Functions inherited from RTPDataQueue
| RTPDataQueue (uint32 size=defaultMembersHashSize)
| Constructor. More...
| RTPDataQueue (uint32 *ssrc, uint32 size=defaultMembersHashSize)
| Using this constructor you can start a session with the given ssrc, instead of the usual randomly generated one. More...
virtual | ~RTPDataQueue ()
| The queue destructor flushes the queue and stops all services. More...
virtual void | timerTick ()
| A plugin point for timer tick driven events. More...
void | renewLocalSSRC ()
void | endQueue ()
| This method ends the queue. More...
virtual bool | isPendingData (microtimeout_t timeout)=0
| This function is used to check for and schedule against arriving packets based on the derived connection type. More...
Protected Member Functions inherited from IncomingDataQueue
| IncomingDataQueue (uint32 size)
virtual | ~IncomingDataQueue ()
bool | checkSSRCInIncomingRTPPkt (SyncSourceLink &sourceLink, bool is_new, InetAddress &na, tpport_t tp)
| Apply collision and loop detection and correction algorithm when receiving RTP data packets. More...
void | setSourceExpirationPeriod (uint8 intervals)
| Set the number of RTCP intervals that the stack will wait to change the state of a source from stateActive to stateInactive, or to delete the source after being in stateInactive. More...
virtual size_t | takeInDataPacket ()
| This function is used by the service thread to process the next incoming packet and place it in the receive list. More...
void | renewLocalSSRC ()
IncomingDataQueue::IncomingRTPPktLink * | getWaiting (uint32 timestamp, const SyncSource *src=NULL)
| This is used to fetch a packet in the receive queue and to expire packets older than the current timestamp. More...
bool | recordReception (SyncSourceLink &srcLink, const IncomingRTPPkt &pkt, const timeval recvtime)
| Log reception of a new RTP packet from this source. More...
void | recordExtraction (const IncomingRTPPkt &pkt)
| Log extraction of a packet from this source from the scheduled reception queue. More...
void | purgeIncomingQueue ()
virtual void | onNewSyncSource (const SyncSource &)
| Virtual called when a new synchronization source has joined the session. More...
virtual bool | onRTPPacketRecv (IncomingRTPPkt &)
| A virtual function to support parsing of arriving packets to determine if they should be kept in the queue and to dispatch events. More...
virtual void | onExpireRecv (IncomingRTPPkt &)
| A hook to filter packets in the receive queue that are being expired. More...
virtual bool | onSRTPPacketError (IncomingRTPPkt &pkt, int32 errorCode)
| A hook that gets called if the decoding of an incoming SRTP was erroneous. More...
virtual bool | end2EndDelayed (IncomingRTPPktLink &)
bool | insertRecvPacket (IncomingRTPPktLink *packetLink)
| Insert a just received packet in the queue (both general and source specific queues). More...
virtual size_t | recvData (unsigned char *buffer, size_t length, InetHostAddress &host, tpport_t &port)=0
| This function performs the physical I/O for reading a packet from the source. More...
virtual size_t | getNextDataPacketSize () const =0
Protected Member Functions inherited from IncomingDataQueueBase
| IncomingDataQueueBase ()
virtual | ~IncomingDataQueueBase ()
Protected Member Functions inherited from RTPQueueBase
| RTPQueueBase (uint32 *ssrc=NULL)
void | setLocalSSRC (uint32 ssrc)
uint32 | getLocalSSRCNetwork () const
virtual | ~RTPQueueBase ()
Protected Member Functions inherited from MembershipBookkeeping
| MembershipBookkeeping (uint32 initialSize=defaultMembersHashSize)
| The initial size is a hint to allocate the resources needed in order to keep the members' identifiers and associated information. More...
virtual | ~MembershipBookkeeping ()
| Purges all RTPSource structures created during the session, as well as the hash table and the list of sources. More...
SyncSourceLink * | getLink (const SyncSource &source) const
bool | isMine (const SyncSource &source) const
| Get whether a synchronization source is recorded in this membership controller. More...
bool | isRegistered (uint32 ssrc)
| Returns whether there is already a synchronizacion source with "ssrc" SSRC identifier. More...
SyncSourceLink * | getSourceBySSRC (uint32 ssrc, bool &created)
| Get the description of a source by its `ssrc` identifier. More...
bool | BYESource (uint32 ssrc)
| Mark the source identified by `ssrc` as having sent a BYE packet. More...
bool | removeSource (uint32 ssrc)
| Remove the description of the source identified by `ssrc` More...
SyncSourceLink * | getFirst ()
SyncSourceLink * | getLast ()
uint32 | getMembersCount ()
void | setMembersCount (uint32 n)
uint32 | getSendersCount ()
size_t | getDefaultMembersHashSize ()
Protected Member Functions inherited from SyncSourceHandler
| SyncSourceHandler ()
virtual | ~SyncSourceHandler ()
void * | getLink (const SyncSource &source) const
| This requires SyncSource - SyncSourceHandler friendship. More...
void | setLink (SyncSource &source, void *link)
void | setParticipant (SyncSource &source, Participant &p)
void | setState (SyncSource &source, SyncSource::State ns)
void | setSender (SyncSource &source, bool active)
void | setDataTransportPort (SyncSource &source, tpport_t p)
void | setControlTransportPort (SyncSource &source, tpport_t p)
void | setNetworkAddress (SyncSource &source, InetAddress addr)
Protected Member Functions inherited from ParticipantHandler
| ParticipantHandler ()
virtual | ~ParticipantHandler ()
void | setSDESItem (Participant *part, SDESItemType item, const std::string &val)
void | setPRIVPrefix (Participant *part, const std::string val)
Protected Member Functions inherited from ApplicationHandler
| ApplicationHandler ()
virtual | ~ApplicationHandler ()
void | addParticipant (RTPApplication &app, Participant &part)
void | removeParticipant (RTPApplication &app, RTPApplication::ParticipantLink *pl)
Protected Member Functions inherited from ConflictHandler
| ConflictHandler ()
virtual | ~ConflictHandler ()
ConflictingTransportAddress * | searchDataConflict (InetAddress na, tpport_t dtp)
ConflictingTransportAddress * | searchControlConflict (InetAddress na, tpport_t ctp)
void | updateConflict (ConflictingTransportAddress &ca)
void | addConflict (const InetAddress &na, tpport_t dtp, tpport_t ctp)
Protected Member Functions inherited from OutgoingDataQueue
| OutgoingDataQueue ()
virtual | ~OutgoingDataQueue ()
void | dispatchImmediate (OutgoingRTPPkt *packet)
| This is used to write the RTP data packet to one or more destinations. More...
microtimeout_t | getSchedulingTimeout ()
| This computes the timeout period for scheduling transmission of the next packet at the "head" of the send buffer. More...
size_t | dispatchDataPacket ()
| This function is used by the service thread to process the next outgoing packet pending in the sending queue. More...
void | setNextSeqNum (uint32 seqNum)
| For thoses cases in which the application requires a method to set the sequence number for the outgoing stream (such as for implementing the RTSP PLAY command). More...
uint32 | getCurrentSeqNum (void)
void | setInitialTimestamp (uint32 ts)
uint32 | getInitialTimestamp ()
void | purgeOutgoingQueue ()
virtual void | setControlPeer (const InetAddress &host, tpport_t port)
Protected Member Functions inherited from OutgoingDataQueueBase
| OutgoingDataQueueBase ()
virtual | ~OutgoingDataQueueBase ()
Protected Member Functions inherited from DestinationListHandler
void | writeLockDestinationList () const
bool | addDestinationToList (const InetAddress &ia, tpport_t data, tpport_t control)
| Locks the object before modifying it. More...
bool | removeDestinationFromList (const InetAddress &ia, tpport_t dataPort, tpport_t controlPort)
| Locks the object before modifying it. More...
| DestinationListHandler ()
| ~DestinationListHandler ()
bool | isSingleDestination () const
| Get whether there is only a destination in the list. More...
TransportAddress * | getFirstDestination () const
void | lockDestinationList () const
void | unlockDestinationList () const
Protected Member Functions inherited from RTCPCompoundHandler
| RTCPCompoundHandler (uint16 mtu=defaultPathMTU)
| ~RTCPCompoundHandler ()
bool | checkCompoundRTCPHeader (size_t len)
| Perform RTCP compound packet header validity check as specified in draft-ietv-avt-rtp-new. More...
void | setPathMTU (uint16 mtu)
uint16 | getPathMTU ()

## Additional Inherited Members

Public Types inherited from RTPDataQueue
enum | Tos { tosBestEffort, tosEnhanced }
| rtp.h cc++/rtp.h More...
Static Public Member Functions inherited from IncomingDataQueue
static size_t | getDefaultMembersSize ()
Protected Types inherited from RTCPCompoundHandler
enum | { defaultPathMTU = 1500 }
Protected Attributes inherited from IncomingDataQueue
ThreadLock | recvLock
IncomingRTPPktLink * | recvFirst
IncomingRTPPktLink * | recvLast
uint8 | minValidPacketSequence
uint16 | maxPacketMisorder
uint16 | maxPacketDropout
uint8 | sourceExpirationPeriod
Mutex | cryptoMutex
std::list< CryptoContext * > | cryptoContexts
Protected Attributes inherited from ConflictHandler
ConflictingTransportAddress * | firstConflict
ConflictingTransportAddress * | lastConflict
Protected Attributes inherited from OutgoingDataQueue
Mutex | cryptoMutex
std::list< CryptoContext * > | cryptoContexts
Protected Attributes inherited from DestinationListHandler
std::list< TransportAddress * > | destList
Protected Attributes inherited from RTCPCompoundHandler
unsigned char * | rtcpSendBuffer
unsigned char * | rtcpRecvBuffer
Static Protected Attributes inherited from IncomingDataQueue
static const uint8 | defaultMinValidPacketSequence
static const uint16 | defaultMaxPacketMisorder
static const uint16 | defaultMaxPacketDropout
static const size_t | defaultMembersSize
Static Protected Attributes inherited from MembershipBookkeeping
static const size_t | defaultMembersHashSize
static const uint32 | SEQNUMMOD

## Detailed Description

Adds generic management of RTCP functions to an RTP data queue.

Extends an RTP data i/o queue adding management of RTCP functions:

Provide feedback on the quality of the data distribution.

Convey the CNAME (persistent transport-level identifier) for every RTP source.

Control the sending rate of RTCP packets

Convey minimal control information about the participants

This class implements generic RTCP behaviour (as specified in RFC 1889/draft-ietf-avt-rtp-new) and may be specialized for specific profiles (see AVPQueue) or particular RTCP extensions.

Author
  Federico Montesino Pouzols fedem.nosp@m.p@al.nosp@m.tern..nosp@m.org

## Constructor & Destructor Documentation

QueueRTCPManager::QueueRTCPManager | ( | uint32 | size = `RTPDataQueue::defaultMembersHashSize`,
|  | RTPApplication & | app = `defaultApplication()`
| ) |  |

protected

QueueRTCPManager::QueueRTCPManager | ( | uint32 | ssrc,
|  | uint32 | size = `RTPDataQueue::defaultMembersHashSize`,
|  | RTPApplication & | app = `defaultApplication()`
| ) |  |

protected

virtual QueueRTCPManager::~QueueRTCPManager | ( |  | ) |

protected virtual

## Member Function Documentation

bool QueueRTCPManager::checkSSRCInRTCPPkt | ( | SyncSourceLink & | sourceLink,
|  | bool | is_new,
|  | InetAddress & | na,
|  | tpport_t | tp
| ) |  |

protected

Appy collision and loop detection and correction algorithm when receiving RTCP packets.

Follows section 8.2 in draft-ietf-avp-rtp-new.

Parameters

  sourceLink | link to the source object.
  is_new | whether the source has been just recorded.
  na | RTCP packet network address.
  tp | RTCP packet source transport port.

Returns
  whether the packet must not be discarded.

void QueueRTCPManager::controlReceptionService | ( |  | ) |

protected

Process incoming RTCP packets pending in the control reception socket.

void QueueRTCPManager::controlTransmissionService | ( |  | ) |

protected

Build and send RTCP packets following timing rules (including the "timer reconsideration" algorithm).

size_t QueueRTCPManager::dispatchBYE | ( | const std::string & | reason | ) |

protected virtual

This method is used to send an RTCP BYE packet.

An RTCP BYE packet is sent when one of the the following circumstances occur:

- when leaving the session
- when we have detected that another synchronization source in the same session is using the same SSRC identifier as us.

Try to post a BYE message. It will send a BYE packet as long as at least one RTP or RTCP packet has been sent before. If the number of members in the session is more than 50, the algorithm described in section 6.3.7 of RFC 3550 is applied in order to avoid a flood of BYE messages.

Parameters

  reason | reason to specify in the BYE packet.

Reimplemented from RTPQueueBase.

void QueueRTCPManager::endQueueRTCPManager | ( |  | ) |

protected

const RTPApplication& QueueRTCPManager::getApplication | ( |  | ) |

inline protected

float QueueRTCPManager::getControlBandwidth | ( |  | ) | const

inline protected

microtimeout_t QueueRTCPManager::getDefaultEnd2EndDelay | ( |  | ) | const

inline

microtimeout_t QueueRTCPManager::getEnd2EndDelay | ( |  | ) | const

inline

CryptoContextCtrl* QueueRTCPManager::getInQueueCryptoContextCtrl | ( | uint32 | ssrc | ) |

Get an input queue CryptoContext identified by SSRC.

Parameters

  ssrc | Request CryptoContext for this incoming SSRC

Returns
  Pointer to CryptoContext of the SSRC of NULL if no context available for this SSRC.

uint32 QueueRTCPManager::getLastSendPacketCount | ( |  | ) | const

inline protected

Get the number of data packets sent at the time the last SR was generated.

RTCPReceiverInfo* QueueRTCPManager::getMRReceiverInfo | ( | SyncSource & | srcFrom | ) |

Ask for the info in the most recent receiver report about the local source received from the source given as parameter.

Parameters

  srcFrom | Source of the receiver info.

Returns
  most recent receiver info received from src.

Return values

  NULL | when no receiver report has been received from the specified source.

RTCPSenderInfo* QueueRTCPManager::getMRSenderInfo | ( | SyncSource & | src | ) |

Get the most recent sender report received from a synchronization source.

Parameters

  src | Synchronization source of the sender info.

Returns
  Most recent sender info received from src.

Return values

  NULL | when no sender report has been received from the specified source.

CryptoContextCtrl* QueueRTCPManager::getOutQueueCryptoContextCtrl | ( | uint32 | ssrc | ) |

Get an output queue CryptoContext identified by SSRC.

Parameters

  ssrc | Request CryptoContext for this incoming SSRC

Returns
  Pointer to CryptoContext of the SSRC of NULL if no context available for this SSRC.

uint32 QueueRTCPManager::getPrevMembersCount | ( |  | ) | const

inline protected

timeval QueueRTCPManager::getRTCPCheckInterval | ( |  | ) |

inline protected

uint32 QueueRTCPManager::getSendRTCPPacketCount | ( |  | ) | const

inline

Get the total number of RTCP packets sent until now.

virtual void QueueRTCPManager::onGotAPP | ( | SyncSource & | ,
|  | RTCPCompoundHandler::APPPacket & | ,
|  | size_t |
| ) |  |

inline protected virtual

Plug-in for handling of APP (application specific) RTCP packets.

Parameters

  - | Synchronization source of this packet.
  - | RTCP APP packet struct.
  - | Length of the app data packet, including ssrc. name and app. specific data.

virtual void QueueRTCPManager::onGotRR | ( | SyncSource & | source,
|  | RecvReport & | RR,
|  | uint8 | blocks
| ) |  |

protected virtual

Plug-in for processing (acquire information carried in) an incoming RTCP Receiver Report.

The default implementation in this class only processes the receiver report blocks about the local source.

Parameters

  source | Synchronization source this report comes from.
  RR | Receiver report structure
  blocks | Number of report blocks in the packet

bool QueueRTCPManager::onGotSDES | ( | SyncSource & | source,
|  | RTCPPacket & | pkt
| ) |  |

protected

Parameters

  source | Synchronization source of SDES RTCP packet.
  pkt | SDES RTCP packet received.

virtual bool QueueRTCPManager::onGotSDESChunk | ( | SyncSource & | source,
|  | SDESChunk & | chunk,
|  | size_t | len
| ) |  |

protected virtual

Plug-in for handling of SDES chunks.

Parameters

  source | Synchronization source of SDES chunk.
  chunk | SDES chunk structure.
  len | Length of chunk, in octets.

Returns
  whether there was a CNAME.

virtual void QueueRTCPManager::onGotSR | ( | SyncSource & | source,
|  | SendReport & | SR,
|  | uint8 | blocks
| ) |  |

protected virtual

Plug-in for processing (acquire information carried in) an incoming RTCP Sender Report.

The default implementation in this class only processes the sender information and the receiver report blocks about the local source.

Parameters

  source | Synchronization source this report comes from.
  SR | Sender report structure.
  blocks | Number of report blocks in the packet.

void QueueRTCPManager::removeInQueueCryptoContextCtrl | ( | CryptoContextCtrl * | cc | ) |

Remove input queue CryptoContext.

The endQueue method (provided by RTPQueue) also deletes all registered CryptoContexts.

Parameters

  cc | Pointer to initialized CryptoContext to remove. If pointer if `NULL` then delete the whole queue

void QueueRTCPManager::removeOutQueueCryptoContextCtrl | ( | CryptoContextCtrl * | cc | ) |

Remove output queue CryptoContext.

The endQueue method (provided by RTPQueue) also deletes all registered CryptoContexts.

Parameters

  cc | Pointer to initialized CryptoContext to remove.

size_t QueueRTCPManager::sendControlToDestinations | ( | unsigned char * | buffer,
|  | size_t | len
| ) |  |

protected

void QueueRTCPManager::setControlBandwidth | ( | float | fraction | ) |

inline protected

void QueueRTCPManager::setEnd2EndDelay | ( | microtimeout_t | t | ) |

inline

This method sets the maximum end to end delay allowed.

If the processing delay plus the trip time for a packet is greater than the end to end delay, the packet is discarded, and the application cannot get it.

This is a way of setting an upper bound to the end to end delay, computed as the elapsed time between the packet timestamping at the sender side, and the picking of the packet at the receiver side.

Parameters

  t | maximum end to end delay allowed. A value of 0 implies there is no limit and is the default

void QueueRTCPManager::setInQueueCryptoContextCtrl | ( | CryptoContextCtrl * | cc | ) |

Set input queue CryptoContext.

The endQueue method (provided by RTPQueue) deletes all registered CryptoContexts.

Parameters

  cc | Pointer to initialized CryptoContext.

void QueueRTCPManager::setLeavingDelay | ( | microtimeout_t | delay | ) |

inline

Set how much time the stack will wait before deleting a synchronization source that has sent an RTCP BYE packet.

Parameters

  delay | delay in microseconds.

Note
  The default delay is 1000000 microseconds

void QueueRTCPManager::setMinRTCPInterval | ( | microtimeout_t | interval | ) |

inline

Manually set the minimum interval for sending RTP compound packets.

Parameters

  interval | minimum interval between RTCP packets, in microseconds.

See Also
  computeRTCPInterval()

void QueueRTCPManager::setOutQueueCryptoContextCtrl | ( | CryptoContextCtrl * | cc | ) |

Set output queue CryptoContext.

The endQueue method (provided by RTPQueue) deletes all registered CryptoContexts.

Parameters

  cc | Pointer to initialized CryptoContext.

void QueueRTCPManager::setPrevMembersNum | ( | uint32 | n | ) |

inline protected

Parameters

  n | Number of members.

void QueueRTCPManager::setSendersControlFraction | ( | float | fraction | ) |

inline

Specify the fraction of the total control bandwith to be dedicated to senders reports.

Parameters

  fraction | fraction of bandwidth, must be between 0 an 1.

This method sets the fraction of the global control bandwidth that will be dedicated to senders reports. Of course, `1 - fraction` will be dedicated to receivers reports.

See Also
  setControlBandwidth

## Member Data Documentation

uint32 QueueRTCPManager::rtcpPMembers

timeval QueueRTCPManager::rtcpTc

timeval QueueRTCPManager::rtcpTn

timeval QueueRTCPManager::rtcpTp

The documentation for this class was generated from the following file:

- cqueue.h