ccRTP
|
A peer associated RTP socket pair for physically connected peer hosts. More...
#include <cc++/rtp.h>
Public Member Functions | |
RTPDuplex (const InetAddress &bind, tpport_t local, tpport_t remote) | |
virtual | ~RTPDuplex () |
UDPTransmit::Error | connect (const InetHostAddress &host, tpport_t port=0) |
![]() | |
void | setTypeOfService (Tos tos) |
Specify the kind of service the application expects to use. | |
void | enableStack () |
Enable packet queue processing in the stack. | |
void | disableStack () |
Disable packet queue processing in the stack. | |
bool | isActive () const |
Get 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 |
uint32 | getSessionBandwidth () const |
void | setTimeclock () |
Set the packet timeclock for synchronizing timestamps. | |
timeout_t | getTimeclock () const |
Get the packet timeclock for synchronizing timestamps. | |
![]() | |
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. | |
bool | isWaiting (const SyncSource *src=NULL) const |
Determine if packets are waiting in the reception queue. | |
uint32 | getFirstTimestamp (const SyncSource *src=NULL) const |
Get timestamp of 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 |
uint8 | getMinValidPacketSequence () const |
Get the minimun number of consecutive packets that must be received from a source before accepting its data packets. | |
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. | |
uint16 | getDefaultMaxPacketDropout () const |
uint16 | getMaxPacketDropout () const |
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. | |
![]() | |
size_t | getDefaultMaxRecvPacketSize () const |
size_t | getMaxRecvPacketSize () const |
void | setMaxRecvPacketSize (size_t maxsize) |
![]() | |
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). | |
PayloadType | getCurrentPayloadType () const |
timeval | getInitialTime () const |
![]() | |
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 wheter 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 ouput queue CryptoContext. | |
void | removeOutQueueCryptoContext (CryptoContext *cc) |
Remove output queue CryptoContext. | |
CryptoContext * | getOutQueueCryptoContext (uint32 ssrc) |
Get an output queue CryptoContext identified by SSRC. | |
![]() | |
size_t | getDefaultMaxSendSegmentSize () |
void | setMaxSendSegmentSize (size_t size) |
Set maximum payload segment size before fragmenting sends. | |
size_t | getMaxSendSegmentSize () |
Protected Member Functions | |
bool | isPendingData (microtimeout_t timeout) |
size_t | sendData (const unsigned char *const buffer, size_t len) |
size_t | recvData (unsigned char *buffer, size_t len, InetHostAddress &na, tpport_t &tp) |
void | setDataPeer (const InetAddress &, tpport_t) |
void | setControlPeer (const InetAddress &, tpport_t) |
size_t | getNextDataPacketSize () const |
SyncSource & | getPeer () |
![]() | |
RTPDataQueue (uint32 size=defaultMembersHashSize) | |
Constructor. | |
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. | |
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 () |
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. | |
![]() | |
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. | |
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. | |
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. | |
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. | |
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 () |
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 &) |
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 |
![]() | |
IncomingDataQueueBase () | |
virtual | ~IncomingDataQueueBase () |
![]() | |
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. | |
virtual void | renewLocalSSRC () |
![]() | |
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. | |
virtual | ~MembershipBookkeeping () |
Purges all RTPSource structures created during the session, as well as the hash table and the list of sources. | |
SyncSourceLink * | getLink (const SyncSource &source) const |
bool | isMine (const SyncSource &source) const |
Get whether a synchronization source is recorded in this membership controller. | |
bool | isRegistered (uint32 ssrc) |
Returns whether there is already a synchronizacion source with "ssrc" SSRC identifier. | |
SyncSourceLink * | getSourceBySSRC (uint32 ssrc, bool &created) |
Get the description of a source by its ssrc identifier. | |
bool | BYESource (uint32 ssrc) |
Mark the source identified by ssrc as having sent a BYE packet. | |
bool | removeSource (uint32 ssrc) |
Remove the description of the source identified by ssrc | |
SyncSourceLink * | getFirst () |
SyncSourceLink * | getLast () |
uint32 | getMembersCount () |
void | setMembersCount (uint32 n) |
uint32 | getSendersCount () |
size_t | getDefaultMembersHashSize () |
![]() | |
SyncSourceHandler () | |
virtual | ~SyncSourceHandler () |
void * | getLink (const SyncSource &source) const |
This requires SyncSource - SyncSourceHandler friendship. | |
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) |
![]() | |
ParticipantHandler () | |
virtual | ~ParticipantHandler () |
void | setSDESItem (Participant *part, SDESItemType item, const std::string &val) |
void | setPRIVPrefix (Participant *part, const std::string val) |
![]() | |
ApplicationHandler () | |
virtual | ~ApplicationHandler () |
void | addParticipant (RTPApplication &app, Participant &part) |
void | removeParticipant (RTPApplication &app, RTPApplication::ParticipantLink *pl) |
![]() | |
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) |
![]() | |
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) |
![]() | |
OutgoingDataQueueBase () | |
virtual | ~OutgoingDataQueueBase () |
![]() | |
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 |
A peer associated RTP socket pair for physically connected peer hosts.
This has no RTCP and assumes the receiver is connected to a known transmitter, hence no "foreign" packets will arrive.
RTP peer host over UDP.