|
ccRTP
|
A generic outgoing RTP data queue supporting multiple destinations. More...
#include <oqueue.h>
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. 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 wheter 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 ouput 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 () |
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 |
Protected Member Functions | |
| 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 RTPQueueBase | |
| RTPQueueBase (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. More... | |
| 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. 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 Attributes | |
| Mutex | cryptoMutex |
| std::list< CryptoContext * > | cryptoContexts |
Protected Attributes inherited from DestinationListHandler | |
| std::list< TransportAddress * > | destList |
A generic outgoing RTP data queue supporting multiple destinations.
|
protected |
|
inlineprotectedvirtual |
| 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 |
||
| ) |
|
protected |
This function is used by the service thread to process the next outgoing packet pending in the sending queue.
|
protected |
This is used to write the RTP data packet to one or more destinations.
It is used by both sendImmediate and by dispatchDataPacket.
| RTP | packet to send. |
| 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 |
||
| ) |
|
inlineprotected |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inline |
Get wheter the mark bit will be set in the next packet.
| CryptoContext* OutgoingDataQueue::getOutQueueCryptoContext | ( | uint32 | ssrc | ) |
Get an output queue CryptoContext identified by SSRC.
| ssrc | Request CryptoContext for this incoming SSRC |
|
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.
|
inline |
Get the total number of octets (payload only) sent so far.
|
inline |
Get the total number of packets sent so far.
|
inline |
Get the sequence number of the next outgoing packet.
| bool OutgoingDataQueue::isSending | ( | ) | const |
Determine if outgoing packets are waiting to send.
|
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 appearence that a next packet is waiting to be sent and to provide a valid timestamp for that packet.
| stamp | 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. |
| 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.
| cc | Pointer to initialized CryptoContext to remove. |
| 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 appearence that a next packet is waiting to be sent and to provide a valid timestamp for that packet.
| stamp | 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. |
|
inlineprotectedvirtual |
Reimplemented in RTPDuplex.
|
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.
| to | timeout to expire unsent packets in milliseconds. |
|
inlineprotected |
|
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.
| mark | Marker bit value for next packet. |
|
inlineprotected |
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).
| seqNum | next sequence number to be used for outgoing packets. |
| void OutgoingDataQueue::setOutQueueCryptoContext | ( | CryptoContext * | cc | ) |
Set ouput queue CryptoContext.
The endQueue method (provided by RTPQueue) deletes all registered CryptoContexts.
| cc | Pointer to initialized CryptoContext. |
|
inline |
Set padding.
All outgoing packets will be transparently padded to a multiple of paddinglen.
| paddinglen | pad packets to a length multiple of paddinglen. |
| 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.
| timestamp | Timestamp of packet. |
| data | Buffer to copy from. |
| offset | Offset to copy from. |
| max | Maximum data size. |
|
inline |
Set the default scheduling timeout to use when no data packets are waiting to be sent.
| to | timeout in milliseconds. |
| bool OutgoingDataQueue::complete |
|
protected |
|
mutableprotected |
| 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] |
1.8.14