AVPQueue Class Reference
Generic RTCP control queues.

This class, an RTP/RTCP queue, adds audio/video profile (AVP) specific methods to the generic RTCP service queue (QueueRTCPManager). More...

`#include <cqueue.h>`

Inheritance diagram for AVPQueue:

## Public Member Functions

void | setControlBandwidth (float fraction)
| Specify the bandwith available for control (RTCP) packets. More...
float | getControlBandwidth () const
Public Member Functions inherited from QueueRTCPManager
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

| AVPQueue (uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
| AVPQueue (uint32 ssrc, uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
| Local SSRC is given instead of computed by the queue. More...
virtual | ~AVPQueue ()
Protected Member Functions inherited from QueueRTCPManager
| 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

This class, an RTP/RTCP queue, adds audio/video profile (AVP) specific methods to the generic RTCP service queue (QueueRTCPManager).

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

## Constructor & Destructor Documentation

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

inline protected

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

inline protected

Local SSRC is given instead of computed by the queue.

virtual AVPQueue::~AVPQueue | ( |  | ) |

inline protected virtual

## Member Function Documentation

float AVPQueue::getControlBandwidth | ( |  | ) | const

inline

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

inline

Specify the bandwith available for control (RTCP) packets.

This method sets the global control bandwidth for both sender and receiver reports. As recommended in RFC 1890, 1/4 of the total control bandwidth is dedicated to senders, whereas 3/4 are dedicated to receivers.

Parameters

  fraction | fraction of the session bandwidth, between 0 and 1

Note
  If this method is not called, it is assumed that the control bandwidth is equal to 5% of the session bandwidth. Note also that the RFC RECOMMENDS the 5%.

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

- cqueue.h