Yate
|
Full RTP session. More...
#include <yatertp.h>
Public Types | |
enum | Direction { FullStop = 0, RecvOnly = 1, SendOnly = 2, SendRecv = 3 } |
Public Member Functions | |
RTPSession () | |
virtual | ~RTPSession () |
virtual void | getStats (String &stats) const |
virtual void | rtpData (const void *data, int len) |
virtual void | rtcpData (const void *data, int len) |
virtual bool | rtpRecvData (bool marker, unsigned int timestamp, const void *data, int len) |
virtual bool | rtpRecvEvent (int event, char key, int duration, int volume, unsigned int timestamp) |
virtual void | rtpNewPayload (int payload, unsigned int timestamp) |
virtual void | rtpNewSSRC (u_int32_t newSsrc, bool marker) |
virtual RTPSender * | createSender () |
virtual RTPReceiver * | createReceiver () |
virtual Cipher * | createCipher (const String &name, Cipher::Direction dir) |
virtual bool | checkCipher (const String &name) |
bool | rtpSend (bool marker, int payload, unsigned int timestamp, const void *data, int len) |
bool | rtpSendData (bool marker, unsigned int timestamp, const void *data, int len) |
bool | rtpSendEvent (int event, int duration, int volume=0, unsigned int timestamp=0) |
bool | rtpSendKey (char key, int duration, int volume=0, unsigned int timestamp=0) |
u_int32_t | ioPacketsLost () const |
int | padding () const |
bool | padding (int chunk) |
void | setDejitter (unsigned int mindelay=20, unsigned int maxdelay=50) |
virtual void | transport (RTPTransport *trans) |
RTPSender * | sender () const |
void | sender (RTPSender *send) |
RTPReceiver * | receiver () const |
void | receiver (RTPReceiver *recv) |
Direction | direction () const |
bool | direction (Direction dir) |
bool | addDirection (Direction dir) |
bool | delDirection (Direction dir) |
bool | dataPayload (int type) |
bool | eventPayload (int type) |
bool | silencePayload (int type) |
bool | localAddr (SocketAddr &addr, bool rtcp=true) |
RTPSecure * | security () const |
void | security (RTPSecure *secure) |
void | setReports (int interval) |
virtual void | getStats (NamedList &stats) const |
virtual void | incWrongSrc () |
Protected Member Functions | |
virtual void | timerTick (const Time &when) |
void | sendRtcpReport (const Time &when) |
void | sendRtcpBye () |
Full RTP session.
An unidirectional or bidirectional RTP session
enum Direction |
Direction of the session
RTPSession | ( | ) |
Default constructor, creates a detached session
virtual ~RTPSession | ( | ) | [virtual] |
Destructor - shuts down the session and destroys the transport
bool addDirection | ( | Direction | dir | ) | [inline] |
Add a direction of this session. A transport must exist for this method to succeed.
dir | New Direction to add for this session |
virtual bool checkCipher | ( | const String & | name | ) | [virtual] |
Check if a cipher is supported for SRTP
name | Name of the cipher to check |
virtual Cipher* createCipher | ( | const String & | name, |
Cipher::Direction | dir | ||
) | [virtual] |
Create a cipher when required for SRTP
name | Name of the cipher to create |
dir | Direction the cipher must be able to handle |
virtual RTPReceiver* createReceiver | ( | ) | [virtual] |
Create a new RTP receiver for this session. Override this method to create objects derived from RTPReceiver.
virtual RTPSender* createSender | ( | ) | [virtual] |
Create a new RTP sender for this session. Override this method to create objects derived from RTPSender.
bool dataPayload | ( | int | type | ) |
Set the data payload type for both receiver and sender.
type | Payload type, -1 to disable |
bool delDirection | ( | Direction | dir | ) | [inline] |
Delete a direction of this session. A transport must exist for this method to succeed.
dir | Direction to remove for this session |
Get the direction of this session
Set the direction of this session. A transport must exist for this method to succeed.
dir | New Direction for this session |
bool eventPayload | ( | int | type | ) |
Set the event payload type for both receiver and sender.
type | Payload type, -1 to disable |
Retrieve MGCP P: style comma separated session parameters
stats | String to append parameters to |
Reimplemented from RTPProcessor.
Put the collected statistical data
stats | NamedList to populate with the data |
virtual void incWrongSrc | ( | ) | [virtual] |
Increase the counter for number of RTP packets received from a wrong source
Reimplemented from RTPProcessor.
u_int32_t ioPacketsLost | ( | ) | const [inline] |
Retrieve the number of lost packets in current received
bool localAddr | ( | SocketAddr & | addr, |
bool | rtcp = true |
||
) | [inline] |
Set the local network address of the RTP transport of this session
addr | New local RTP transport address |
rtcp | Enable RTCP in this session |
int padding | ( | ) | const [inline] |
Get the payload padding size
bool padding | ( | int | chunk | ) | [inline] |
Set the padding to a multiple of a data chunk
chunk | Size to pad the payload to a multiple of |
RTPReceiver* receiver | ( | ) | const [inline] |
Get the RTP/RTCP receiver of this session
void receiver | ( | RTPReceiver * | recv | ) |
Set the RTP/RTCP receiver of this session
recv | A pointer to the new RTPReceiver of this session or NULL |
virtual void rtcpData | ( | const void * | data, |
int | len | ||
) | [virtual] |
This method is called to process a RTCP packet.
data | Pointer to raw RTCP data |
len | Length of the data packet |
Reimplemented from RTPProcessor.
virtual void rtpData | ( | const void * | data, |
int | len | ||
) | [virtual] |
This method is called to process a RTP packet.
data | Pointer to raw RTP data |
len | Length of the data packet |
Reimplemented from RTPProcessor.
virtual void rtpNewPayload | ( | int | payload, |
unsigned int | timestamp | ||
) | [virtual] |
Method called for unknown payload types just before attempting to call rtpRecvData(). This is a good opportunity to change the payload type and continue.
payload | Payload number |
timestamp | Sampling instant of the unexpected packet data |
virtual void rtpNewSSRC | ( | u_int32_t | newSsrc, |
bool | marker | ||
) | [virtual] |
Method called when a packet with an unexpected SSRC is received just before processing further. This is a good opportunity to change the SSRC and continue
newSsrc | SSRC received in packet |
marker | True if marker bit is set in the RTP packet |
virtual bool rtpRecvData | ( | bool | marker, |
unsigned int | timestamp, | ||
const void * | data, | ||
int | len | ||
) | [virtual] |
Process one RTP data packet
marker | Set to true if the marker bit is set |
timestamp | Sampling instant of the packet data |
data | Pointer to data block to process |
len | Length of the data block in bytes |
virtual bool rtpRecvEvent | ( | int | event, |
char | key, | ||
int | duration, | ||
int | volume, | ||
unsigned int | timestamp | ||
) | [virtual] |
Process one RTP event
event | Received event code |
key | Received key (for events 0-16) or zero |
duration | Duration of the event as number of samples |
volume | Attenuation of the tone, zero for don't care |
timestamp | Sampling instant of the initial packet data |
bool rtpSend | ( | bool | marker, |
int | payload, | ||
unsigned int | timestamp, | ||
const void * | data, | ||
int | len | ||
) | [inline] |
Send one RTP payload packet
marker | Set to true if the marker bit must be set |
payload | Payload number |
timestamp | Sampling instant of the packet data |
data | Pointer to data block to send |
len | Length of the data block |
bool rtpSendData | ( | bool | marker, |
unsigned int | timestamp, | ||
const void * | data, | ||
int | len | ||
) | [inline] |
Send one RTP data packet
marker | Set to true if the marker bit must be set |
timestamp | Sampling instant of the packet data |
data | Pointer to data block to send |
len | Length of the data block |
bool rtpSendEvent | ( | int | event, |
int | duration, | ||
int | volume = 0 , |
||
unsigned int | timestamp = 0 |
||
) | [inline] |
Send one RTP event
event | Event code to send |
duration | Duration of the event as number of samples |
volume | Attenuation of the tone, zero for don't care |
timestamp | Sampling instant of the packet data, zero to use current |
bool rtpSendKey | ( | char | key, |
int | duration, | ||
int | volume = 0 , |
||
unsigned int | timestamp = 0 |
||
) | [inline] |
Send one RTP key event
key | Key to send |
duration | Duration of the event as number of samples |
volume | Attenuation of the tone, zero for don't care |
timestamp | Sampling instant of the packet data, zero to use current |
Get the stored security provider or of the sender
Store a security provider for the sender
secure | Pointer to the new RTPSecure or NULL |
Get the RTP/RTCP sender of this session
Set the RTP/RTCP sender of this session
send | A pointer to the new RTPSender of this session or NULL |
void sendRtcpBye | ( | ) | [protected] |
Send a RTCP BYE when the sender is stopped or replaced
void sendRtcpReport | ( | const Time & | when | ) | [protected] |
Send a RTCP report
when | Time to use as base for timestamps |
void setDejitter | ( | unsigned int | mindelay = 20 , |
unsigned int | maxdelay = 50 |
||
) | [inline] |
Allocate and set a new dejitter buffer for the receiver in the session
mindelay | Minimum length of the dejitter buffer in microseconds |
maxdelay | Maximum length of the dejitter buffer in microseconds |
void setReports | ( | int | interval | ) |
Set the RTCP report interval
interval | Average interval between reports in msec, zero to disable |
bool silencePayload | ( | int | type | ) |
Set the silence payload type for both receiver and sender.
type | Payload type, -1 to disable |
Method called periodically to push any asynchronous data or statistics
when | Time to use as base in all computing |
Implements RTPProcessor.
virtual void transport | ( | RTPTransport * | trans | ) | [virtual] |
Set the RTP/RTCP transport of data handled by this session
trans | A pointer to the new RTPTransport for this session |
Reimplemented from UDPSession.