OutgoingDataQueue(3) | Library Functions Manual | OutgoingDataQueue(3) |
NAME¶
OutgoingDataQueue - A generic outgoing RTP data queue supporting multiple destinations.
SYNOPSIS¶
#include <oqueue.h>
Inherits OutgoingDataQueueBase, and DestinationListHandler.
Inherited by RTPDataQueue.
Classes¶
struct OutgoingRTPPktLink
Public Member Functions¶
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. bool
removeContributor (uint32 csrc)
Remove CSRC from the list of contributors. bool isSending () const
Determine if outgoing packets are waiting to send. 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. 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. void
setPadding (uint8 paddinglen)
Set padding. void setMark (bool mark)
Set marker bit for the packet in which the next data provided will be send.
bool getMark () const
Get whether the mark bit will be set in the next packet. size_t
setPartial (uint32 timestamp, unsigned char *data, size_t offset,
size_t max)
Set partial data for an already queued packet. 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. 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.
microtimeout_t getExpireTimeout () const
uint32 getSendPacketCount () const
Get the total number of packets sent so far. uint32 getSendOctetCount
() const
Get the total number of octets (payload only) sent so far. uint16
getSequenceNumber () const
Get the sequence number of the next outgoing packet. void
setOutQueueCryptoContext (CryptoContext *cc)
Set output queue CryptoContext. void removeOutQueueCryptoContext
(CryptoContext *cc)
Remove output queue CryptoContext. CryptoContext *
getOutQueueCryptoContext (uint32 ssrc)
Get an output queue CryptoContext identified by SSRC.
Protected Member Functions¶
OutgoingDataQueue ()
virtual ~OutgoingDataQueue ()
void dispatchImmediate (OutgoingRTPPkt *packet)
This is used to write the RTP data packet to one or more destinations.
microtimeout_t getSchedulingTimeout ()
This computes the timeout period for scheduling transmission of the next
packet at the 'head' of the send buffer. size_t dispatchDataPacket ()
This function is used by the service thread to process the next outgoing
packet pending in the sending queue. 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). uint32 getCurrentSeqNum (void)
void setInitialTimestamp (uint32 ts)
uint32 getInitialTimestamp ()
void purgeOutgoingQueue ()
virtual void setControlPeer (const InetAddress &host, tpport_t
port)
Protected Attributes¶
Mutex cryptoMutex
std::list< CryptoContext * > cryptoContexts
Detailed Description¶
A generic outgoing RTP data queue supporting multiple destinations.
Author:
Constructor & Destructor Documentation¶
OutgoingDataQueue::OutgoingDataQueue () [protected]¶
virtual OutgoingDataQueue::~OutgoingDataQueue () [inline], [protected], [virtual]¶
Member Function Documentation¶
void OutgoingDataQueue::addContributor (uint32 csrc)¶
Add csrc as the CSRC identifier of a new contributor. This method adds the CSRC identifier to a list of contributors that will be inserted in every packet enqueued from now on.
bool OutgoingDataQueue::addDestination (const InetHostAddress & ia, tpport_t dataPort = DefaultRTPDataPort, tpport_t controlPort = 0)¶
bool OutgoingDataQueue::addDestination (const InetMcastAddress & ia, tpport_t dataPort = DefaultRTPDataPort, tpport_t controlPort = 0)¶
size_t OutgoingDataQueue::dispatchDataPacket () [protected]¶
This function is used by the service thread to process the next outgoing packet pending in the sending queue.
Returns:
void OutgoingDataQueue::dispatchImmediate (OutgoingRTPPkt * packet) [protected]¶
This is used to write the RTP data packet to one or more destinations. It is used by both sendImmediate and by dispatchDataPacket.
Parameters:
bool OutgoingDataQueue::forgetDestination (const InetHostAddress & ia, tpport_t dataPort = DefaultRTPDataPort, tpport_t controlPort = 0)¶
bool OutgoingDataQueue::forgetDestination (const InetMcastAddress & ia, tpport_t dataPort = DefaultRTPDataPort, tpport_t controlPort = 0)¶
uint32 OutgoingDataQueue::getCurrentSeqNum (void) [inline], [protected]¶
microtimeout_t OutgoingDataQueue::getDefaultExpireTimeout () const [inline]¶
microtimeout_t OutgoingDataQueue::getDefaultSchedulingTimeout () const [inline]¶
microtimeout_t OutgoingDataQueue::getExpireTimeout () const [inline]¶
uint32 OutgoingDataQueue::getInitialTimestamp () [inline], [protected]¶
bool OutgoingDataQueue::getMark () const [inline]¶
Get whether the mark bit will be set in the next packet.
CryptoContext* OutgoingDataQueue::getOutQueueCryptoContext (uint32 ssrc)¶
Get an output queue CryptoContext identified by SSRC.
Parameters:
Returns:
microtimeout_t OutgoingDataQueue::getSchedulingTimeout () [protected]¶
This computes the timeout period for scheduling transmission of the next packet at the 'head' of the send buffer. If no packets are waiting, a default timeout is used. This actually forms the 'isPending()' timeout of the rtp receiver in the service thread.
Returns:
uint32 OutgoingDataQueue::getSendOctetCount () const [inline]¶
Get the total number of octets (payload only) sent so far.
Returns:
uint32 OutgoingDataQueue::getSendPacketCount () const [inline]¶
Get the total number of packets sent so far.
Returns:
uint16 OutgoingDataQueue::getSequenceNumber () const [inline]¶
Get the sequence number of the next outgoing packet.
Returns:
bool OutgoingDataQueue::isSending () const¶
Determine if outgoing packets are waiting to send.
Returns:
void OutgoingDataQueue::purgeOutgoingQueue () [protected]¶
void OutgoingDataQueue::putData (uint32 stamp, const unsigned char * data = NULL, size_t len = 0)¶
This is used to create a data packet in the send queue. Sometimes a 'NULL' or empty packet will be used instead, and these are known as 'silent' packets. 'Silent' packets are used simply to 'push' the scheduler along more accurately by giving the appearance that a next packet is waiting to be sent and to provide a valid timestamp for that packet.
Parameters:
data Value or NULL if special 'silent' packet.
len May be 0 to indicate a default by payload type.
Examples:
rtpduphello.cpp.
bool OutgoingDataQueue::removeContributor (uint32 csrc)¶
Remove CSRC from the list of contributors.
void OutgoingDataQueue::removeOutQueueCryptoContext (CryptoContext * cc)¶
Remove output queue CryptoContext. The endQueue method (provided by RTPQueue) also deletes all registered CryptoContexts.
Parameters:
void OutgoingDataQueue::sendImmediate (uint32 stamp, const unsigned char * data = NULL, size_t len = 0)¶
This is used to create a data packet and send it immediately. Sometimes a 'NULL' or empty packet will be used instead, and these are known as 'silent' packets. 'Silent' packets are used simply to 'push' the scheduler along more accurately by giving the appearance that a next packet is waiting to be sent and to provide a valid timestamp for that packet.
Parameters:
data Value or NULL if special 'silent' packet.
len May be 0 to indicate a default by payload type.
virtual void OutgoingDataQueue::setControlPeer (const InetAddress & host, tpport_t port) [inline], [protected], [virtual]¶
Reimplemented in RTPDuplex.
void OutgoingDataQueue::setExpireTimeout (microtimeout_t to) [inline]¶
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.
Parameters:
Examples:
rtpduphello.cpp.
void OutgoingDataQueue::setInitialTimestamp (uint32 ts) [inline], [protected]¶
void OutgoingDataQueue::setMark (bool mark) [inline]¶
Set marker bit for the packet in which the next data provided will be send. When transmitting audio, should be set for the first packet of a talk spurt. When transmitting video, should be set for the last packet for a video frame.
Parameters:
void OutgoingDataQueue::setNextSeqNum (uint32 seqNum) [inline], [protected]¶
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).
Parameters:
void OutgoingDataQueue::setOutQueueCryptoContext (CryptoContext * cc)¶
Set output queue CryptoContext. The endQueue method (provided by RTPQueue) deletes all registered CryptoContexts.
Parameters:
void OutgoingDataQueue::setPadding (uint8 paddinglen) [inline]¶
Set padding. All outgoing packets will be transparently padded to a multiple of paddinglen.
Parameters:
size_t OutgoingDataQueue::setPartial (uint32 timestamp, unsigned char * data, size_t offset, size_t max)¶
Set partial data for an already queued packet. This is often used for multichannel data.
Parameters:
data Buffer to copy from.
offset Offset to copy from.
max Maximum data size.
Returns:
void OutgoingDataQueue::setSchedulingTimeout (microtimeout_t to) [inline]¶
Set the default scheduling timeout to use when no data packets are waiting to be sent.
Parameters:
Examples:
rtpduphello.cpp.
Member Data Documentation¶
bool OutgoingDataQueue::complete¶
std::list<CryptoContext *> OutgoingDataQueue::cryptoContexts [protected]¶
Mutex OutgoingDataQueue::cryptoMutex [mutable], [protected]¶
bool OutgoingDataQueue::marked¶
uint32 OutgoingDataQueue::octetCount¶
timeval OutgoingDataQueue::overflowTime¶
uint32 OutgoingDataQueue::packetCount¶
uint8 OutgoingDataQueue::paddinglen¶
uint16 OutgoingDataQueue::sendCC¶
uint16 OutgoingDataQueue::sendSeq¶
uint32 OutgoingDataQueue::sendSources[16]¶
Author¶
Generated automatically by Doxygen for ccRTP from the source code.
Sat Oct 27 2018 | ccRTP |