TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue > Class Template Reference
RTP sessions.

`#include <rtp.h>`

Inheritance diagram for TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >:
[legend]
Collaboration diagram for TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >:
[legend]

## Public Member Functions

| TRTPSessionBase (const InetHostAddress &ia, tpport_t dataPort, tpport_t controlPort, uint32 membersSize, RTPApplication &app)
| Builds a session waiting for packets in a host address.
| TRTPSessionBase (uint32 ssrc, const InetHostAddress &ia, tpport_t dataPort, tpport_t controlPort, uint32 membersSize, RTPApplication &app)
| Builds a session with the specified ssrc identifier for the local source.
| TRTPSessionBase (const InetMcastAddress &ia, tpport_t dataPort, tpport_t controlPort, uint32 membersSize, RTPApplication &app, uint32 iface)
| Builds a session waiting for packets in a multicast address.
| TRTPSessionBase (uint32 ssrc, const InetMcastAddress &ia, tpport_t dataPort, tpport_t controlPort, uint32 membersSize, RTPApplication &app, uint32 iface)
| Builds a session waiting for packets in a multicast address, with the specified ssrc identifier for the local source.
virtual size_t | dispatchBYE (const std::string &str)
Socket::Error | setMcastTTL (uint8 ttl)
| Set the value of the TTL field in the sent packets.
virtual | ~TRTPSessionBase ()
RTPDataChannel * | getDSO (void)
Public Member Functions inherited from AVPQueue
void | setControlBandwidth (float fraction)
| Specify the bandwith available for control (RTCP) packets.
float | getControlBandwidth () const
Public Member Functions inherited from QueueRTCPManager
RTCPSenderInfo * | getMRSenderInfo (SyncSource &src)
| Get the most recent sender report received from a synchronization source.
RTCPReceiverInfo * | getMRReceiverInfo (SyncSource &srcFrom)
| Ask for the info in the most recent receiver report about the local source received from the source given as parameter.
void | setLeavingDelay (microtimeout_t delay)
| Set how much time the stack will wait before deleting a synchronization source that has sent an RTCP BYE packet.
void | setEnd2EndDelay (microtimeout_t t)
| This method sets the maximum end to end delay allowed.
microtimeout_t | getDefaultEnd2EndDelay () const
microtimeout_t | getEnd2EndDelay () const
void | setSendersControlFraction (float fraction)
| Specify the fraction of the total control bandwith to be dedicated to senders reports.
void | setMinRTCPInterval (microtimeout_t interval)
| Manually set the minimum interval for sending RTP compound packets.
uint32 | getSendRTCPPacketCount () const
| Get the total number of RTCP packets sent until now.
void | setOutQueueCryptoContextCtrl (CryptoContextCtrl *cc)
| Set output queue CryptoContext.
void | removeOutQueueCryptoContextCtrl (CryptoContextCtrl *cc)
| Remove output queue CryptoContext.
CryptoContextCtrl * | getOutQueueCryptoContextCtrl (uint32 ssrc)
| Get an output queue CryptoContext identified by SSRC.
void | setInQueueCryptoContextCtrl (CryptoContextCtrl *cc)
| Set input queue CryptoContext.
void | removeInQueueCryptoContextCtrl (CryptoContextCtrl *cc)
| Remove input queue CryptoContext.
CryptoContextCtrl * | getInQueueCryptoContextCtrl (uint32 ssrc)
| Get an input queue CryptoContext identified by SSRC.
Public Member Functions inherited from RTPDataQueue
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.
Public Member Functions inherited from IncomingDataQueue
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.
Public Member Functions inherited from IncomingDataQueueBase
size_t | getDefaultMaxRecvPacketSize () const
size_t | getMaxRecvPacketSize () const
void | setMaxRecvPacketSize (size_t maxsize)
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).
PayloadType | getCurrentPayloadType () const
timeval | getInitialTime () const
Public Member Functions inherited from OutgoingDataQueue
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.
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 ()

## Protected Member Functions

bool | isPendingData (microtimeout_t timeout)
InetHostAddress | getDataSender (tpport_t *port=NULL) const
size_t | getNextDataPacketSize () const
size_t | recvData (unsigned char *buffer, size_t len, InetHostAddress &na, tpport_t &tp)
| Receive data from the data channel/socket.
void | setDataPeer (const InetAddress &host, tpport_t port)
size_t | sendData (const unsigned char *const buffer, size_t len)
SOCKET | getDataRecvSocket () const
bool | isPendingControl (microtimeout_t timeout)
InetHostAddress | getControlSender (tpport_t *port=NULL) const
size_t | recvControl (unsigned char *buffer, size_t len, InetHostAddress &na, tpport_t &tp)
| Receive data from the control channel/socket.
void | setControlPeer (const InetAddress &host, tpport_t port)
size_t | sendControl (const unsigned char *const buffer, size_t len)
SOCKET | getControlRecvSocket () const
Socket::Error | joinGroup (const InetMcastAddress &ia, uint32 iface)
| Join a multicast group.
Socket::Error | leaveGroup (const InetMcastAddress &ia)
| Leave a multicast group.
void | endSocket ()
Protected Member Functions inherited from AVPQueue
| AVPQueue (uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
| AVPQueue (uint32 ssrc, uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
| Local SSRC is given instead of computed by the queue.
virtual | ~AVPQueue ()
Protected Member Functions inherited from QueueRTCPManager
| QueueRTCPManager (uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
| QueueRTCPManager (uint32 ssrc, uint32 size=RTPDataQueue::defaultMembersHashSize, RTPApplication &app=defaultApplication())
virtual | ~QueueRTCPManager ()
const RTPApplication & | getApplication ()
void | setControlBandwidth (float fraction)
float | getControlBandwidth () const
void | controlTransmissionService ()
| Build and send RTCP packets following timing rules (including the "timer reconsideration" algorithm).
void | controlReceptionService ()
| Process incoming RTCP packets pending in the control reception socket.
bool | checkSSRCInRTCPPkt (SyncSourceLink &sourceLink, bool is_new, InetAddress &na, tpport_t tp)
| Appy collision and loop detection and correction algorithm when receiving RTCP packets.
void | endQueueRTCPManager ()
virtual void | onGotSR (SyncSource &source, SendReport &SR, uint8 blocks)
| Plug-in for processing (acquire information carried in) an incoming RTCP Sender Report.
virtual void | onGotRR (SyncSource &source, RecvReport &RR, uint8 blocks)
| Plug-in for processing (acquire information carried in) an incoming RTCP Receiver Report.
bool | onGotSDES (SyncSource &source, RTCPPacket &pkt)
virtual bool | onGotSDESChunk (SyncSource &source, SDESChunk &chunk, size_t len)
| Plug-in for handling of SDES chunks.
virtual void | onGotAPP (SyncSource &, RTCPCompoundHandler::APPPacket &, size_t)
| Plug-in for handling of APP (application specific) RTCP packets.
timeval | getRTCPCheckInterval ()
uint32 | getLastSendPacketCount () const
| Get the number of data packets sent at the time the last SR was generated.
void | setPrevMembersNum (uint32 n)
uint32 | getPrevMembersCount () const
size_t | sendControlToDestinations (unsigned char *buffer, size_t len)
Protected Member Functions inherited from RTPDataQueue
| 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.
Protected Member Functions inherited from IncomingDataQueue
| 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.
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.
bool | insertRecvPacket (IncomingRTPPktLink *packetLink)
| Insert a just received packet in the queue (both general and source specific queues).
Protected Member Functions inherited from IncomingDataQueueBase
| IncomingDataQueueBase ()
virtual | ~IncomingDataQueueBase ()
Protected Member Functions inherited from RTPQueueBase
| RTPQueueBase (uint32 *ssrc=NULL)
void | setLocalSSRC (uint32 ssrc)
uint32 | getLocalSSRCNetwork () const
virtual | ~RTPQueueBase ()
Protected Member Functions inherited from MembershipBookkeeping
| 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 ()
Protected Member Functions inherited from SyncSourceHandler
| 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)
Protected Member Functions inherited from ParticipantHandler
| ParticipantHandler ()
virtual | ~ParticipantHandler ()
void | setSDESItem (Participant *part, SDESItemType item, const std::string &val)
void | setPRIVPrefix (Participant *part, const std::string val)
Protected Member Functions inherited from ApplicationHandler
| ApplicationHandler ()
virtual | ~ApplicationHandler ()
void | addParticipant (RTPApplication &app, Participant &part)
void | removeParticipant (RTPApplication &app, RTPApplication::ParticipantLink *pl)
Protected Member Functions inherited from ConflictHandler
| 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)
Protected Member Functions inherited from OutgoingDataQueue
| 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 ()
Protected Member Functions inherited from OutgoingDataQueueBase
| OutgoingDataQueueBase ()
virtual | ~OutgoingDataQueueBase ()
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
Protected Member Functions inherited from RTCPCompoundHandler
| RTCPCompoundHandler (uint16 mtu=defaultPathMTU)
| ~RTCPCompoundHandler ()
bool | checkCompoundRTCPHeader (size_t len)
| Perform RTCP compound packet header validity check as specified in draft-ietv-avt-rtp-new.
void | setPathMTU (uint16 mtu)
uint16 | getPathMTU ()

## Protected Attributes

RTPDataChannel * | dso
RTCPChannel * | cso
Protected Attributes inherited from IncomingDataQueue
ThreadLock | recvLock
IncomingRTPPktLink * | recvFirst
IncomingRTPPktLink * | recvLast
uint8 | minValidPacketSequence
uint16 | maxPacketMisorder
uint16 | maxPacketDropout
uint8 | sourceExpirationPeriod
Mutex | cryptoMutex
std::list< CryptoContext * > | cryptoContexts
Protected Attributes inherited from ConflictHandler
ConflictingTransportAddress * | firstConflict
ConflictingTransportAddress * | lastConflict
Protected Attributes inherited from OutgoingDataQueue
Mutex | cryptoMutex
std::list< CryptoContext * > | cryptoContexts
Protected Attributes inherited from DestinationListHandler
std::list< TransportAddress * > | destList
Protected Attributes inherited from RTCPCompoundHandler
unsigned char * | rtcpSendBuffer
unsigned char * | rtcpRecvBuffer

## Friends

class | RTPSessionBaseHandler

## Additional Inherited Members

Public Types inherited from RTPDataQueue
enum | Tos { tosBestEffort , tosEnhanced }
| rtp.h cc++/rtp.h More...
Static Public Member Functions inherited from IncomingDataQueue
static size_t | getDefaultMembersSize ()
Protected Types inherited from RTCPCompoundHandler
enum | { defaultPathMTU = 1500 }
Static Protected Attributes inherited from IncomingDataQueue
static const uint8 | defaultMinValidPacketSequence
static const uint16 | defaultMaxPacketMisorder
static const uint16 | defaultMaxPacketDropout
static const size_t | defaultMembersSize
Static Protected Attributes inherited from MembershipBookkeeping
static const size_t | defaultMembersHashSize
static const uint32 | SEQNUMMOD

## Constructor & Destructor Documentation

## TRTPSessionBase() [1/4]

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::TRTPSessionBase | ( | const InetHostAddress & | ia,
|  | tpport_t | dataPort,
|  | tpport_t | controlPort,
|  | uint32 | membersSize,
|  | RTPApplication & | app )

inline

Builds a session waiting for packets in a host address.

Parameters

  ia | Network address this socket is to be bound.
  dataPort | Transport port the data socket is to be bound.
  controlPort | Transport port the control socket is to be bound.
  membersSize | Initial size of the membership table.
  app | Application this session is associated to.

## TRTPSessionBase() [2/4]

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::TRTPSessionBase | ( | uint32 | ssrc,
|  | const InetHostAddress & | ia,
|  | tpport_t | dataPort,
|  | tpport_t | controlPort,
|  | uint32 | membersSize,
|  | RTPApplication & | app )

inline

Builds a session with the specified ssrc identifier for the local source.

Parameters

  ssrc | SSRC identifier for the local source.
  ia | Network address this socket is to be bound.
  dataPort | Transport port the data socket is to be bound.
  controlPort | Transport port the control socket is to be bound.
  membersSize | Initial size of the membership table.
  app | Application this session is associated to.

## TRTPSessionBase() [3/4]

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::TRTPSessionBase | ( | const InetMcastAddress & | ia,
|  | tpport_t | dataPort,
|  | tpport_t | controlPort,
|  | uint32 | membersSize,
|  | RTPApplication & | app,
|  | uint32 | iface )

inline

Builds a session waiting for packets in a multicast address.

TODO: ssrc constructor for multicast!

Parameters

  ia | Multicast address this socket is to be bound.
  dataPort | Transport port the data socket is to be bound.
  controlPort | Transport port the control socket is to be bound.
  membersSize | Initial size of the membership table.
  app | Application this session is associated to.
  iface | Index (from 0 to n) of network interface to join to multicast group.

## TRTPSessionBase() [4/4]

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::TRTPSessionBase | ( | uint32 | ssrc,
|  | const InetMcastAddress & | ia,
|  | tpport_t | dataPort,
|  | tpport_t | controlPort,
|  | uint32 | membersSize,
|  | RTPApplication & | app,
|  | uint32 | iface )

inline

Builds a session waiting for packets in a multicast address, with the specified ssrc identifier for the local source.

Parameters

  ssrc | SSRC identifier for the local source.
  ia | Multicast address this socket is to be bound.
  dataPort | Transport port the data socket is to be bound.
  controlPort | Transport port the control socket is to be bound.
  membersSize | Initial size of the membership table.
  app | Application this session is associated to.
  iface | Index (from 0 to n) of network interface to join to multicast group.

## ~TRTPSessionBase()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

virtual TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::~TRTPSessionBase | ( |  | ) |

inline virtual

## Member Function Documentation

## dispatchBYE()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

virtual size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::dispatchBYE | ( | const std::string & | str | ) |

inline virtual

Reimplemented from QueueRTCPManager.

Reimplemented in SingleThreadRTPSession< RTPDataChannel, RTCPChannel, ServiceQueue >, and SingleThreadRTPSession< SymmetricRTPChannel, SymmetricRTPChannel >.

## endSocket()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

void TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::endSocket | ( |  | ) |

inline protected

## getControlRecvSocket()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

SOCKET TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getControlRecvSocket | ( |  | ) | const

inline protected

## getControlSender()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

InetHostAddress TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getControlSender | ( | tpport_t * | port = NULL | ) | const

inline protected

## getDataRecvSocket()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

SOCKET TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getDataRecvSocket | ( |  | ) | const

inline protected

## getDataSender()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

InetHostAddress TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getDataSender | ( | tpport_t * | port = NULL | ) | const

inline protected

## getDSO()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

RTPDataChannel * TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getDSO | ( | void |  | ) |

inline

## getNextDataPacketSize()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getNextDataPacketSize | ( |  | ) | const

inline protected virtual

Implements IncomingDataQueue.

## isPendingControl()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

bool TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::isPendingControl | ( | microtimeout_t | timeout | ) |

inline protected virtual

Parameters

  timeout | maximum timeout to wait, in microseconds

Returns
  whether there are packets waiting to be picked

Implements QueueRTCPManager.

## isPendingData()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

bool TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::isPendingData | ( | microtimeout_t | timeout | ) |

inline protected virtual

Parameters

  timeout | maximum timeout to wait, in microseconds

Implements RTPDataQueue.

## joinGroup()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

Socket::Error TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::joinGroup | ( | const InetMcastAddress & | ia,
|  | uint32 | iface )

inline protected

Join a multicast group.

Parameters

  ia | address of the multicast group

Returns
  error code from the socket operation

## leaveGroup()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

Socket::Error TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::leaveGroup | ( | const InetMcastAddress & | ia | ) |

inline protected

Leave a multicast group.

Parameters

  ia | address of the multicast group

Returns
  error code from the socket operation

## recvControl()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::recvControl | ( | unsigned char * | buffer,
|  | size_t | len,
|  | InetHostAddress & | na,
|  | tpport_t & | tp )

inline protected virtual

Receive data from the control channel/socket.

Parameters

  buffer | Buffer where to get data.
  len | Maximum number of octets to get.
  na | Source network address.
  tp | Source transport port.

Returns
  Number of octets actually read.

Implements QueueRTCPManager.

## recvData()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::recvData | ( | unsigned char * | buffer,
|  | size_t | len,
|  | InetHostAddress & | na,
|  | tpport_t & | tp )

inline protected virtual

Receive data from the data channel/socket.

Parameters

  buffer | Memory region to read to.
  len | Maximum number of octets to get.
  na | Source network address.
  tp | Source transport port.

Returns
  Number of octets actually read.

Implements IncomingDataQueue.

## sendControl()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::sendControl | ( | const unsigned char *const | buffer,
|  | size_t | len )

inline protected virtual

Returns
  number of octets actually written

Parameters

  buffer |
  len |

Implements QueueRTCPManager.

## sendData()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::sendData | ( | const unsigned char *const | buffer,
|  | size_t | len )

inline protected virtual

Parameters

  buffer | memory region to write from
  len | number of octets to write

Reimplemented from OutgoingDataQueue.

## setControlPeer()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

void TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::setControlPeer | ( | const InetAddress & | host,
|  | tpport_t | port )

inline protected virtual

Reimplemented from OutgoingDataQueue.

## setDataPeer()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

void TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::setDataPeer | ( | const InetAddress & | host,
|  | tpport_t | port )

inline protected virtual

Reimplemented from OutgoingDataQueue.

## setMcastTTL()

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

Socket::Error TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::setMcastTTL | ( | uint8 | ttl | ) |

inline

Set the value of the TTL field in the sent packets.

Parameters

  ttl | Time To Live

Returns
  error code from the socket operation

## Friends And Related Symbol Documentation

## RTPSessionBaseHandler

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

friend class RTPSessionBaseHandler

friend

## Member Data Documentation

## cso

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

RTCPChannel* TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::cso

protected

## dso

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

RTPDataChannel* TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::dso

protected

The documentation for this class was generated from the following file:

- rtp.h