logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

OutgoingDataQueue - A generic outgoing RTP data queue supporting multiple destinations.

Author

       Generated automatically by Doxygen for ccRTP from the source code.

                                                      ccRTP                                 OutgoingDataQueue(3)

Constructor & Destructor Documentation

OutgoingDataQueue::OutgoingDataQueue()[protected]virtualOutgoingDataQueue::~OutgoingDataQueue()[inline],[protected],[virtual]

Detailed Description

       A generic outgoing RTP data queue supporting multiple destinations.

       Author
           Federico Montesino Pouzols fedemp@altern.org

Member Data Documentation

boolOutgoingDataQueue::completestd::list<CryptoContext*>OutgoingDataQueue::cryptoContexts[protected]MutexOutgoingDataQueue::cryptoMutex[mutable],[protected]boolOutgoingDataQueue::markeduint32OutgoingDataQueue::octetCounttimevalOutgoingDataQueue::overflowTimeuint32OutgoingDataQueue::packetCountuint8OutgoingDataQueue::paddinglenuint16OutgoingDataQueue::sendCCuint16OutgoingDataQueue::sendSequint32OutgoingDataQueue::sendSources[16]

Member Function Documentation

voidOutgoingDataQueue::addContributor(uint32csrc)
       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.

   boolOutgoingDataQueue::addDestination(constInetHostAddress&ia,tpport_tdataPort=DefaultRTPDataPort,tpport_tcontrolPort=0)Examplesaudiorx.cpp, audiotx.cpp, rtphello.cpp, and rtpsend.cpp.

   boolOutgoingDataQueue::addDestination(constInetMcastAddress&ia,tpport_tdataPort=DefaultRTPDataPort,tpport_tcontrolPort=0)size_tOutgoingDataQueue::dispatchDataPacket()[protected]
       This function is used by the service thread to process the next outgoing packet pending in the sending
       queue.

       Returns
           number of bytes sent. 0 if silent, <0 if error.

   voidOutgoingDataQueue::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.

       ParametersRTP packet to send.

   boolOutgoingDataQueue::forgetDestination(constInetHostAddress&ia,tpport_tdataPort=DefaultRTPDataPort,tpport_tcontrolPort=0)boolOutgoingDataQueue::forgetDestination(constInetMcastAddress&ia,tpport_tdataPort=DefaultRTPDataPort,tpport_tcontrolPort=0)uint32OutgoingDataQueue::getCurrentSeqNum(void)[inline],[protected]microtimeout_tOutgoingDataQueue::getDefaultExpireTimeout()const[inline]microtimeout_tOutgoingDataQueue::getDefaultSchedulingTimeout()const[inline]microtimeout_tOutgoingDataQueue::getExpireTimeout()const[inline]uint32OutgoingDataQueue::getInitialTimestamp()[inline],[protected]boolOutgoingDataQueue::getMark()const[inline]
       Get whether the mark bit will be set in the next packet.

   CryptoContext*OutgoingDataQueue::getOutQueueCryptoContext(uint32ssrc)
       Get an output queue CryptoContext identified by SSRC.

       Parametersssrc Request CryptoContext for this incoming SSRC

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

   microtimeout_tOutgoingDataQueue::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
           timeout until next packet is scheduled to send.

   uint32OutgoingDataQueue::getSendOctetCount()const[inline]
       Get the total number of octets (payload only) sent so far.

       Returns
           total number of payload octets sent in RTP packets.

   uint32OutgoingDataQueue::getSendPacketCount()const[inline]
       Get the total number of packets sent so far.

       Returns
           total number of packets sent

   uint16OutgoingDataQueue::getSequenceNumber()const[inline]
       Get the sequence number of the next outgoing packet.

       Returns
           the 16 bit sequence number.

   boolOutgoingDataQueue::isSending()const
       Determine if outgoing packets are waiting to send.

       Returns
           true if there are packets waiting to be send.

   voidOutgoingDataQueue::purgeOutgoingQueue()[protected]voidOutgoingDataQueue::putData(uint32stamp,constunsignedchar*data=NULL,size_tlen=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.

       Parametersstamp Timestamp for expected send time of packet.
           data Value or NULL if special 'silent' packet.
           len May be 0 to indicate a default by payload type.

       Examplesaudiotx.cpp, ccrtptest.cpp, rtpduphello.cpp, rtphello.cpp, and rtpsend.cpp.

   boolOutgoingDataQueue::removeContributor(uint32csrc)
       Remove CSRC from the list of contributors.

   voidOutgoingDataQueue::removeOutQueueCryptoContext(CryptoContext*cc)
       Remove output queue CryptoContext. The endQueue method (provided by RTPQueue) also deletes all registered
       CryptoContexts.

       Parameterscc Pointer to initialized CryptoContext to remove.

   voidOutgoingDataQueue::sendImmediate(uint32stamp,constunsignedchar*data=NULL,size_tlen=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.

       Parametersstamp Timestamp immediate send time of packet.
           data Value or NULL if special 'silent' packet.
           len May be 0 to indicate a default by payload type.

   virtualvoidOutgoingDataQueue::setControlPeer(constInetAddress&host,tpport_tport)[inline],[protected],[virtual]
       Reimplemented in RTPDuplex, TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>, and
       TRTPSessionBase<DualRTPUDPIPv4Channel,DualRTPUDPIPv4Channel,AVPQueue>.

   voidOutgoingDataQueue::setExpireTimeout(microtimeout_tto)[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.

       Parametersto timeout to expire unsent packets in milliseconds.

       Examplesccrtptest.cpp, rtpduphello.cpp, rtphello.cpp, rtplisten.cpp, and rtpsend.cpp.

   voidOutgoingDataQueue::setInitialTimestamp(uint32ts)[inline],[protected]voidOutgoingDataQueue::setMark(boolmark)[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.

       Parametersmark Marker bit value for next packet.

   voidOutgoingDataQueue::setNextSeqNum(uint32seqNum)[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).

       ParametersseqNum next sequence number to be used for outgoing packets.

   voidOutgoingDataQueue::setOutQueueCryptoContext(CryptoContext*cc)
       Set output queue CryptoContext. The endQueue method (provided by RTPQueue) deletes all registered
       CryptoContexts.

       Parameterscc Pointer to initialized CryptoContext.

   voidOutgoingDataQueue::setPadding(uint8paddinglen)[inline]
       Set padding. All outgoing packets will be transparently padded to a multiple of paddinglen.

       Parameterspaddinglen pad packets to a length multiple of paddinglen.

   size_tOutgoingDataQueue::setPartial(uint32timestamp,unsignedchar*data,size_toffset,size_tmax)
       Set partial data for an already queued packet. This is often used for multichannel data.

       Parameterstimestamp Timestamp of packet.
           data Buffer to copy from.
           offset Offset to copy from.
           max Maximum data size.

       Returns
           Number of packet data bytes set.

   voidOutgoingDataQueue::setSchedulingTimeout(microtimeout_tto)[inline]
       Set the default scheduling timeout to use when no data packets are waiting to be sent.

       Parametersto timeout in milliseconds.

       Examplesaudiorx.cpp, audiotx.cpp, ccrtptest.cpp, rtpduphello.cpp, rtphello.cpp, and rtpsend.cpp.

Name

       OutgoingDataQueue - A generic outgoing RTP data queue supporting multiple destinations.

Synopsis

       #include <oqueue.h>

       Inherits OutgoingDataQueueBase, and DestinationListHandler.

       Inherited by RTPDataQueue.

   Classes
       struct OutgoingRTPPktLinkPublicMemberFunctions
       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_tgetDefaultSchedulingTimeout () const
       void setSchedulingTimeout (microtimeout_t to)
           Set the default scheduling timeout to use when no data packets are waiting to be sent.
       microtimeout_tgetDefaultExpireTimeout () 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_tgetExpireTimeout () 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.

       Public Member Functions inherited from OutgoingDataQueueBase
       size_t getDefaultMaxSendSegmentSize ()
       void setMaxSendSegmentSize (size_t size)
           Set maximum payload segment size before fragmenting sends.
       size_t getMaxSendSegmentSize ()

       Public Member Functions inherited from RTPQueueBase
       bool setPayloadFormat (const PayloadFormat &pf)
           Set the payload format in use, for timing and payload type identification purposes.
       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).
       PayloadTypegetCurrentPayloadType () const
       timeval getInitialTime () const

   ProtectedMemberFunctionsOutgoingDataQueue ()
       virtual ~OutgoingDataQueue ()
       void dispatchImmediate (OutgoingRTPPkt *packet)
           This is used to write the RTP data packet to one or more destinations.
       microtimeout_tgetSchedulingTimeout ()
           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 Member Functions inherited from OutgoingDataQueueBaseOutgoingDataQueueBase ()
       virtual ~OutgoingDataQueueBase ()

       Protected Member Functions inherited from RTPQueueBaseRTPQueueBase (uint32 *ssrc=NULL)
       void setLocalSSRC (uint32 ssrc)
       uint32 getLocalSSRCNetwork () const
       virtual ~RTPQueueBase ()
       virtual size_t dispatchBYE (const std::string &)
           A plugin point for posting of BYE messages.
       virtual void renewLocalSSRC ()

       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.
       bool removeDestinationFromList (const InetAddress &ia, tpport_t dataPort, tpport_t controlPort)
           Locks the object before modifying it.
       DestinationListHandler ()
       ~DestinationListHandler ()
       bool isSingleDestination () const
           Get whether there is only a destination in the list.
       TransportAddress * getFirstDestination () const
       void lockDestinationList () const
       void unlockDestinationList () const

   ProtectedAttributes
       Mutex cryptoMutex
       std::list< CryptoContext * > cryptoContexts

       Protected Attributes inherited from DestinationListHandler
       std::list< TransportAddress * > destList

See Also