RTPDataQueue(3)
๐ RTPDataQueue(3) ๐
okay bestie, welcome to the manual page for RTPDataQueue from the Library Functions Manual. This is the packet queue handler for building different kinds of RTP protocol systems, and it's giving serious networking main character energy, fr fr. โจ
โจ NAME โจ
RTPDataQueue โ a packet queue handler for building different kinds of RTP protocol systems.
โจ SYNOPSIS โจ
#include <ioqueue.h>
Inherits IncomingDataQueue, and OutgoingDataQueue.
Inherited by QueueRTCPManager, and RTPDuplex.
๐ Public Types ๐
enum Tos { tosBestEffort, tosEnhanced }โ the type-of-service enum, fromrtp.h cc++/rtp.h. ๐
๐ธ Public Member Functions ๐ธ
void setTypeOfService (Tos tos)โ tell the stack what kind of service your app expects to use. โจvoid enableStack ()โ turn on packet queue processing in the stack. ๐ฅvoid disableStack ()โ turn off packet queue processing in the stack. ๐bool isActive () constโ get the active connection state flag. ๐uint32 getCurrentTimestamp () constโ get the timestamp that should be given for a packet whose payload sampling instant corresponds to the current system time. โฐvoid setSessionBandwidth (uint32 bw)โ specify the bandwidth of the current session. ๐uint32 getDefaultSessionBandwidth () constโ signature only, no description in the original. ๐uint32 getSessionBandwidth () constโ signature only, no description in the original. ๐void setTimeclock ()โ set the packet timeclock for synchronizing timestamps. ๐ฐ๏ธtimeout_t getTimeclock () constโ get the packet timeclock for synchronizing timestamps. ๐ฐ๏ธ
๐ซ Public Member Functions inherited from IncomingDataQueue ๐ซ
SyncSourcesIterator begin ()โ signature only, no description in the original. ๐ฆSyncSourcesIterator end ()โ signature only, no description in the original. ๐ฆconst AppDataUnit * getData (uint32 stamp, const SyncSource *src=NULL)โ grab data from a specific timestamped packet if such a packet is currently available in the receive buffer. ๐ฆbool isWaiting (const SyncSource *src=NULL) constโ figure out if packets are waiting in the reception queue. ๐uint32 getFirstTimestamp (const SyncSource *src=NULL) constโ get the timestamp of the first packet waiting in the queue. โณ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. ๐ซuint8 getDefaultMinValidPacketSequence () constโ signature only, no description in the original. ๐uint8 getMinValidPacketSequence () constโ get the minimum number of consecutive packets that must be received from a source before accepting its data packets. โvoid setMaxPacketMisorder (uint16 packets)โ signature only, no description in the original. ๐uint16 getDefaultMaxPacketMisorder () constโ signature only, no description in the original. ๐uint16 getMaxPacketMisorder () constโ signature only, no description in the original. ๐void setMaxPacketDropout (uint16 packets)โ it also prevents packets sent after a restart of the source being immediately accepted. ๐uint16 getDefaultMaxPacketDropout () constโ signature only, no description in the original. ๐uint16 getMaxPacketDropout () constโ signature only, no description in the original. ๐void setInQueueCryptoContext (CryptoContext *cc)โ set input queue CryptoContext. ๐void removeInQueueCryptoContext (CryptoContext *cc)โ remove input queue CryptoContext. ๐๏ธCryptoContext * getInQueueCryptoContext (uint32 ssrc)โ get an input queue CryptoContext identified by SSRC. ๐
๐ Public Member Functions inherited from IncomingDataQueueBase ๐
size_t getDefaultMaxRecvPacketSize () constโ signature only, no description in the original. ๐size_t getMaxRecvPacketSize () constโ signature only, no description in the original. ๐void setMaxRecvPacketSize (size_t maxsize)โ signature only, no description in the original. ๐
๐ 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โ signature only, no description in the original. ๐uint32 getCurrentRTPClockRate () constโ get the clock rate in RTP clock units (for instance,8000units per second for PCMU, or90000units per second for MP2T). โฑ๏ธPayloadType getCurrentPayloadType () constโ signature only, no description in the original. ๐timeval getInitialTime () constโ signature only, no description in the original. ๐
๐ฆ Public Member Functions inherited from OutgoingDataQueue ๐ฆ
bool addDestination (const InetHostAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)โ signature only, no description in the original. ๐bool addDestination (const InetMcastAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)โ signature only, no description in the original. ๐bool forgetDestination (const InetHostAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)โ signature only, no description in the original. ๐bool forgetDestination (const InetMcastAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)โ signature only, no description in the original. ๐void addContributor (uint32 csrc)โ addcsrcas 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)โ used to create a data packet in the send queue. ๐ฆvoid sendImmediate (uint32 stamp, const unsigned char *data=NULL, size_t len=0)โ used to create a data packet and send it immediately. ๐void setPadding (uint8 paddinglen)โ set padding. ๐งธvoid setMark (bool mark)โ set the marker bit for the packet in which the next data provided will be sent. ๐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โ signature only, no description in the original. ๐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โ signature only, no description in the original. ๐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โ signature only, no description in the original. ๐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 ()โ signature only, no description in the original. ๐void setMaxSendSegmentSize (size_t size)โ set maximum payload segment size before fragmenting sends. ๐งตsize_t getMaxSendSegmentSize ()โ signature only, no description in the original. ๐
๐ฅ Protected Member Functions ๐ฅ
RTPDataQueue (uint32 size=defaultMembersHashSize)โ constructor. ๐๏ธRTPDataQueue (uint32 *ssrc, uint32 size=defaultMembersHashSize)โ using this constructor you can start a session with the givenssrc, instead of the usual randomly generated one. ๐ฒvirtual ~RTPDataQueue ()โ the queue destructor flushes the queue and stops all services. ๐ฅvirtual void timerTick ()โ a plugin point for timer tick driven events. โฒ๏ธvoid renewLocalSSRC ()โ signature only, no description in the original. ๐void endQueue ()โ this method ends the queue. ๐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. ๐ก
๐ Protected Member Functions inherited from IncomingDataQueue ๐
IncomingDataQueue (uint32 size)โ signature only, no description in the original. ๐virtual ~IncomingDataQueue ()โ signature only, no description in the original. ๐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. ๐void setSourceExpirationPeriod (uint8 intervals)โ set the number of RTCP intervals that the stack will wait to change the state of a source fromstateActivetostateInactive, or to delete the source after being instateInactive. โณ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. ๐ฅ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. โฐbool recordReception (SyncSourceLink &srcLink, const IncomingRTPPkt &pkt, const timeval recvtime)โ log reception of a new RTP packet from this source. ๐void recordExtraction (const IncomingRTPPkt &pkt)โ log extraction of a packet from this source from the scheduled reception queue. ๐void purgeIncomingQueue ()โ signature only, no description in the original. ๐virtual void onNewSyncSource (const SyncSource &)โ virtual called when a new synchronization source has joined the session. ๐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. ๐ชvirtual void onExpireRecv (IncomingRTPPkt &)โ a hook to filter packets in the receive queue that are being expired. ๐ณ๏ธvirtual bool onSRTPPacketError (IncomingRTPPkt &pkt, int32 errorCode)โ a hook that gets called if the decoding of an incoming SRTP was erroneous. ๐จvirtual bool end2EndDelayed (IncomingRTPPktLink &)โ signature only, no description in the original. ๐bool insertRecvPacket (IncomingRTPPktLink *packetLink)โ insert a just received packet in the queue (both general and source specific queues). ๐ฅ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. ๐พvirtual size_t getNextDataPacketSize () const =0โ signature only, no description in the original. ๐
๐ซถ Protected Member Functions inherited from IncomingDataQueueBase ๐ซถ
IncomingDataQueueBase ()โ signature only, no description in the original. ๐virtual ~IncomingDataQueueBase ()โ signature only, no description in the original. ๐
๐ Protected Member Functions inherited from RTPQueueBase ๐
RTPQueueBase (uint32 *ssrc=NULL)โ signature only, no description in the original. ๐void setLocalSSRC (uint32 ssrc)โ signature only, no description in the original. ๐uint32 getLocalSSRCNetwork () constโ signature only, no description in the original. ๐virtual ~RTPQueueBase ()โ signature only, no description in the original. ๐virtual size_t dispatchBYE (const std::string &)โ a plugin point for posting of BYE messages. ๐
๐ซถ Protected Member Functions inherited from MembershipBookkeeping ๐ซถ
bestie these are the lil helper functions your class just inherits, no extra work required, we love a hand-me-down ๐
MembershipBookkeeping(uint32 initialSize=defaultMembersHashSize)โ the initial size is basically a hint โจ it tells the object how much room to set aside so it can keep track of everybody's identifiers and the info attached to them.virtual ~MembershipBookkeeping()โ the destructor goes full Marie Kondo and purges all theRTPSourcestructures made during the session, plus the hash table and the list of sources. everything gone. clean slate. ๐งนSyncSourceLink * getLink(const SyncSource &source) constโ no description on this one, it's just there doing its thing ๐ฆbool isMine(const SyncSource &source) constโ tells you whether a synchronization source is actually recorded in this membership controller. is it ours? ๐bool isRegistered(uint32 ssrc)โ returns whether there's already a synchronization source chilling there with that'ssrc'SSRC identifier.SyncSourceLink * getSourceBySSRC(uint32 ssrc, bool &created)โ grab the description of a source by itsssrcidentifier.bool BYESource(uint32 ssrc)โ marks the source identified byssrcas having sent a BYE packet. bye bestie ๐bool removeSource(uint32 ssrc)โ removes the description of the source identified byssrc.SyncSourceLink * getFirst()โ no description, just vibes โจSyncSourceLink * getLast()โ same energy, no description ๐ธuint32 getMembersCount()โ also undescribed, we move ๐void setMembersCount(uint32 n)โ yeah, no description here either ๐uint32 getSendersCount()โ and none here ๐size_t getDefaultMembersHashSize()โ nope, nothing, it's iconic in silence ๐
๐ Protected Member Functions inherited from SyncSourceHandler ๐
SyncSourceHandler()โ the constructor, living its best life ๐ฆvirtual ~SyncSourceHandler()โ the destructor, also just existing โจvoid * getLink(const SyncSource &source) constโ heads up, this one requiresSyncSource-SyncSourceHandlerfriendship ๐ค like, they have to be besties for this to work.void setLink(SyncSource &source, void *link)โ no description ๐void setParticipant(SyncSource &source, Participant &p)โ no description ๐void setState(SyncSource &source, SyncSource::State ns)โ no description ๐void setSender(SyncSource &source, bool active)โ no description ๐void setDataTransportPort(SyncSource &source, tpport_t p)โ no description ๐void setControlTransportPort(SyncSource &source, tpport_t p)โ no description ๐void setNetworkAddress(SyncSource &source, InetAddress addr)โ no description ๐
๐ธ Protected Member Functions inherited from ParticipantHandler ๐ธ
ParticipantHandler()โ constructor, slaying quietly ๐virtual ~ParticipantHandler()โ destructor, also quiet ๐void setSDESItem(Participant *part, SDESItemType item, const std::string &val)โ no description, it just is ๐งvoid setPRIVPrefix(Participant *part, const std::string val)โ no description either ๐ง
โจ Protected Member Functions inherited from ApplicationHandler โจ
ApplicationHandler()โ constructor, being adorable ๐virtual ~ApplicationHandler()โ destructor, also adorable ๐void addParticipant(RTPApplication &app, Participant &part)โ no description ๐void removeParticipant(RTPApplication &app, RTPApplication::ParticipantLink *pl)โ no description ๐
๐ฅ Protected Member Functions inherited from ConflictHandler ๐ฅ
ConflictHandler()โ constructor, staying out of drama ๐virtual ~ConflictHandler()โ destructor, also staying out of drama ๐ConflictingTransportAddress * searchDataConflict(InetAddress na, tpport_t dtp)โ no description ๐ซถConflictingTransportAddress * searchControlConflict(InetAddress na, tpport_t ctp)โ no description ๐ซถvoid updateConflict(ConflictingTransportAddress &ca)โ no description ๐ซถvoid addConflict(const InetAddress &na, tpport_t dtp, tpport_t ctp)โ no description ๐ซถ
๐ Protected Member Functions inherited from OutgoingDataQueue ๐
OutgoingDataQueue()โ constructor, main character energy โจvirtual ~OutgoingDataQueue()โ destructor, also main character energy โจvoid dispatchImmediate(OutgoingRTPPkt *packet)โ this is the one that actually writes the RTP data packet out to one or more destinations ๐ฌmicrotimeout_t getSchedulingTimeout()โ this computes the timeout period for scheduling the transmission of the next packet sitting at the'head'of the send buffer โฐsize_t dispatchDataPacket()โ this function is used by the service thread to process the next outgoing packet that's pending in the sending queue.void setNextSeqNum(uint32 seqNum)โ for those cases where your app needs a way to set the sequence number for the outgoing stream, like when you're implementing the RTSP PLAY command ๐ฌuint32 getCurrentSeqNum(void)โ no description ๐void setInitialTimestamp(uint32 ts)โ no description ๐uint32 getInitialTimestamp()โ no description ๐void purgeOutgoingQueue()โ no description ๐virtual void setControlPeer(const InetAddress &host, tpport_t port)โ no description ๐
๐ฆ Protected Member Functions inherited from OutgoingDataQueueBase ๐ฆ
OutgoingDataQueueBase()โ constructor, no notes ๐virtual ~OutgoingDataQueueBase()โ destructor, no notes ๐
๐ Protected Member Functions inherited from DestinationListHandler ๐
void writeLockDestinationList() constโ no description ๐ธ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()โ no description ๐ธ~DestinationListHandler()โ no description ๐ธbool isSingleDestination() constโ tells you whether there's only one destination in the list.TransportAddress * getFirstDestination() constโ no description ๐ธvoid lockDestinationList() constโ no description ๐ธvoid unlockDestinationList() constโ no description ๐ธ
๐ Additional Inherited Members ๐
โญ Static Public Member Functions inherited from IncomingDataQueue โญ
static size_t getDefaultMembersSize()โ no description, it just exists ๐
๐ง Protected Attributes inherited from IncomingDataQueue ๐ง
ThreadLock recvLockIncomingRTPPktLink * recvFirstIncomingRTPPktLink * recvLastuint8 minValidPacketSequenceuint16 maxPacketMisorderuint16 maxPacketDropoutuint8 sourceExpirationPeriodMutex cryptoMutexstd::list< CryptoContext * > cryptoContexts
๐ Protected Attributes inherited from ConflictHandler ๐
ConflictingTransportAddress * firstConflictConflictingTransportAddress * lastConflict
๐ฅ Protected Attributes inherited from OutgoingDataQueue ๐ฅ
Mutex cryptoMutexstd::list< CryptoContext * > cryptoContexts
๐ Protected Attributes inherited from DestinationListHandler ๐
std::list< TransportAddress * > destList
๐ Static Protected Attributes inherited from IncomingDataQueue ๐
static const uint8 defaultMinValidPacketSequencestatic const uint16 defaultMaxPacketMisorderstatic const uint16 defaultMaxPacketDropoutstatic const size_t defaultMembersSize
โจ Static Protected Attributes inherited from MembershipBookkeeping โจ
static const size_t defaultMembersHashSizestatic const uint32 SEQNUMMOD
๐ฆ Detailed Description ๐ฆ
a packet queue handler for building all different kinds of RTP protocol systems, no cap ๐
the queue handles both the incoming and the outgoing RTP packets, plus the synchronization and the transmission/reception timers. and the way it makes the queue handler its own separate base class? that's what lets you define RTP classes for RTP profiles and sessions of totally different types. obsessed honestly โจ
outgoing packets get sent via the OutgoingDataQueue::putData method ๐ค
incoming packets can be retrieved via the IncomingDataQueue::getData method ๐ฅ
Author
David Sugar dyfet@ostel.com
RTP data queue handler.
๐ Member Enumeration Documentation ๐
enum RTPDataQueue::Tos
rtp.h cc++/rtp.h โ the type of network service the application uses.
so here's the tea: if the application uses enhanced network service โ think Integrated Services or Differentiated Services โ it does not have to ensure fair competition with TCP, as long as the requested service is actually being delivered. but whenever the application uses best-effort service, or the enhanced service it asked for isn't actually being delivered, then it does have to ensure fair competition with TCP. and by default? best-effort is what's assumed. periodt.
Note โ although it's not required, RTP packets are always sent on top of UDP segments. no other underlying transport protocol is supported at present ๐ซถ
Enumerator
tosBestEffortโ best-effort network service.tosEnhancedโ enhanced network service.
๐ Constructor & Destructor Documentation ๐
RTPDataQueue::RTPDataQueue(uint32 size = defaultMembersHashSize) [protected]
the constructor โจ this one generates a random application SSRC identifier for you, like a lil surprise gift ๐
Parameters
sizeโ an estimation of the number of participants in the session.
RTPDataQueue::RTPDataQueue(uint32 * ssrc, uint32 size = defaultMembersHashSize) [protected]
with this constructor you get to start a session with the ssrc you provide, instead of the usual randomly generated one. this is necessary when you need to kick off several sessions that all have the same SSRC identifier โ for instance, to implement layered encoding, where each layer is managed through a different session but all the sessions share the same SSRC identifier. team effort fr fr ๐ค
Warning โ this doesn't seem to be a good solution ๐
Parameters
ssrcโ synchronization SouRCe identifier for this session.sizeโ an estimation of the number of participants in the session.
virtual RTPDataQueue::~RTPDataQueue() [inline], [protected], [virtual]
the queue destructor flushes the queue and stops all services. everything wraps up, curtains closed, iconic exit ๐ฌโจ
โจ Member Function Documentation โจ
void RTPDataQueue::disableStack (void) [inline]
void RTPDataQueue::disableStack (void) [inline]
Okay so bestie, this one just turns OFF packet queue processing in the stack. That's the entire job. It's giving "lights off, nobody's home" energy. ๐
void RTPDataQueue::enableStack (void) [inline]
void RTPDataQueue::enableStack (void) [inline]
And this icon turns packet queue processing in the stack back ON. โจ
Heads up: this method will not any thread of execution. That's literally what the docs say, word for word โ I am not editing the ancestors. Make of it what you will, bestie. ๐ซถ
void RTPDataQueue::endQueue () [protected]
void RTPDataQueue::endQueue () [protected]
This method ends the queue. That's it. Queue over, pack it up, go home. ๐
(It's protected, so it's living its life behind the velvet rope.)
uint32 RTPDataQueue::getCurrentTimestamp () const
uint32 RTPDataQueue::getCurrentTimestamp () const
Get the timestamp that should be given for a packet whose payload sampling instant corresponds to the current system time. ๐
The timestamp applications should provide for each packet represents the sampling instant of its payload and should not be a reading of the system clock. Nevertheless, the internal operation of the RTP stack relies on the accuracy of the provided timestamp, since several computations assume that there is a certain degree of correspondence between the timestamp and the system clock. So like... it's not the clock, but it does need to be clock-adjacent. The way that nuance lives in this function. ๐ญ
It is recommended that applications use this method in order to periodically adjust the RTP timestamp.
In particular, it is advisable getting the timestamp corresponding to the first sampling instant or any instant after a period of inactivity through a call to this method.
Applications should use the nominal sampling or any other value provided by the coder in order to compute the next timestamps with minimum computational requirement.
For instance, an application using an RTP profile that specifies a fixed sampling rate of 8 Khz with eight bits per sample, continuously transmitting audio blocks 80 octets long, would transmit 100 packets every second. Every packet would carry a timestamp 80 units greater than the previous one. So, the first timestamp would be obtained from this method, whereas the following ones would be computed adding 80 every time. Also the timestamp should be increased for every block whether it is put in the queue or dropped. ๐
The aforementioned increment can be obtained from the RTPDataQueue::getTimestampIncrement() method rather than computing it by hand in the application. Please don't do math by hand, bestie, we have functions for that. ๐งฎ
Note ๐ Frame based applications must follow a specific timestamping method, probably specified in a profile. You should take into account that by default ccRTP assumes that the application begins sampling at the queue creation time. Moreover, the first sampling instant is assigned a 'user visible' timestamp of0, although the RTP stack will then add internally a random offset unknown to the application. That is to say, the application may count samples from0in order to get the timestamp for the next packet, provided that the first sampling instant is the same as the queue creation time. Nevertheless, this simpler way of starting will not be as accurate as it would be if the application got at least the first timestamp throughgetCurrentTimestamp. We provide this option since ccRTP interface is evolving, but we admit that it is ugly, we could remove this option or even replaceuint32timestamps with a restrictively regulated object; suggestions are gladly welcomed. ๐ (the devs literally said "it's ugly" in the docs, no cap โ they're so real for that)
Examples
rtphello.cpp
uint32 RTPDataQueue::getDefaultSessionBandwidth () const [inline]
uint32 RTPDataQueue::getDefaultSessionBandwidth () const [inline]
The docs give us literally zero description here. Just the signature, standing there, mysterious, serving main character energy with no lines. ๐
uint32 RTPDataQueue::getSessionBandwidth () const [inline]
uint32 RTPDataQueue::getSessionBandwidth () const [inline]
Same situation, bestie โ signature only, no prose. The silence is deafening. ๐
timeout_t RTPDataQueue::getTimeclock () const [inline]
timeout_t RTPDataQueue::getTimeclock () const [inline]
Get the packet timeclock for synchronizing timestamps. โฑ๏ธ
Returns
- runtime in milliseconds since last set.
bool RTPDataQueue::isActive () const [inline]
bool RTPDataQueue::isActive () const [inline]
Get active connection state flag. Vibe check, but for connections. ๐ฆ
Returns
trueif connection 'active'.
Examples
audiorx.cppaudiotx.cpprtphello.cpp
virtual bool RTPDataQueue::isPendingData (microtimeout_t timeout) [protected], [pure virtual]
virtual bool RTPDataQueue::isPendingData (microtimeout_t timeout) [protected], [pure virtual]
This function is used to check for and schedule against arriving packets based on the derived connection type. ๐ It's pure virtual, so the derived connection type is the one who actually has to show up and do the work. Periodt.
Returns
trueif packet waiting for processing.
Parameters
- number of microseconds to wait.
Implemented in
RTPDuplexTRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >TRTPSessionBase< DualRTPUDPIPv4Channel, DualRTPUDPIPv4Channel, AVPQueue >SingleThreadRTPSession< RTPDataChannel, RTCPChannel, ServiceQueue >
void RTPDataQueue::renewLocalSSRC () [inline], [protected], [virtual]
void RTPDataQueue::renewLocalSSRC () [inline], [protected], [virtual]
Reimplemented from IncomingDataQueue. No extra notes, no side quests โ just a glow-up of the SSRC with the receipts to prove where it came from. ๐
void RTPDataQueue::setSessionBandwidth (uint32 bw) [inline]
void RTPDataQueue::setSessionBandwidth (uint32 bw) [inline]
Specify the bandwidth of the current session. ๐ถ
Parameters
bwโ bandwidth of the current session, in bits/s.
See also
AVPQueue::setControlBandwidth()
void RTPDataQueue::setTimeclock () [inline]
void RTPDataQueue::setTimeclock () [inline]
Set the packet timeclock for synchronizing timestamps. That's the whole note, bestie. Short, sweet, and it matches getTimeclock() like a matching set. ๐
void RTPDataQueue::setTypeOfService (Tos tos) [inline]
void RTPDataQueue::setTypeOfService (Tos tos) [inline]
Specify the kind of service the application expects to use. ๐
Parameters
tosโ type of service the application expects to use.
Note โ ๏ธ If enhanced service is specified but packet loss is high (the requested service does not appear to actually be delivered) ccRTP defaults to best-effort suitable behaviour: guarantee fair competition with TCP. So like, if you ask for the fancy treatment and the network is not delivering, ccRTP stops pretending and plays nice with TCP instead. Not me being humbled by the network layer. ๐ญ
virtual void RTPDataQueue::timerTick (void) [inline], [protected], [virtual]
virtual void RTPDataQueue::timerTick (void) [inline], [protected], [virtual]
A plugin point for timer tick driven events. ๐ฏ Like a little hook where timer tick stuff can do its thing.
Reimplemented in
SingleThreadRTPSession< RTPDataChannel, RTCPChannel, ServiceQueue >
Author โ๏ธ
Generated automatically by Doxygen for ccRTP from the source code. So nobody hand-wrote this one, it just โจmanifestedโจ.
And that's the whole page, bestie โ that footer at the bottom is your source and version tag, ccRTP, living on manual page RTPDataQueue(3), dated like a little timestamp on the whole thing. ๐ Go build something cute with it. ๐ฆ๐ธ
๐ฆ where this page comes from
- debian trixie: libccrtp-doc 2.0.9-4.1 ยท GPL-2.0-or-later WITH MIF exception
- ubuntu noble: libccrtp-doc 2.0.9-2.5build1
- ubuntu questing: libccrtp-doc 2.0.9-4.1build1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms