|
|
This class holds RTP/SDP data for multiple media types NOTE: The SDPParser pointer held by this class is assumed to be non NULL
enum { MediaMissing, MediaStarted, MediaMuted } |
RTP media status enumeration
SDPSession (SDPParser* parser)
| SDPSession |
Constructor
Parameters:
parser | The SDP parser whose data this object will use |
SDPSession (SDPParser* parser, NamedList& params)
| SDPSession |
Constructor
Parameters:
parser | The SDP parser whose data this object will use |
params | SDP session parameters |
~SDPSession ()
| ~SDPSession |
[virtual]
Destructor. Reset the object
inline const String& getHost ()
| getHost |
[const]
Get RTP local host
Returns: RTP local host
inline const String& getRtpAddr ()
| getRtpAddr |
[const]
Get local RTP address
Returns: Local RTP address (external or local)
bool setMedia (ObjList* media)
| setMedia |
Set a new media list
Parameters:
media | New media list |
Returns: True if media changed
void putMedia (NamedList& msg, ObjList* media, bool putPort = true)
| putMedia |
[static]
Put specified media parameters into a list of parameters
Parameters:
msg | Destination list |
media | List of SDP media information |
putPort | True to add the media port |
inline void putMedia (NamedList& msg, bool putPort = true)
| putMedia |
Put session media parameters into a list of parameters
Parameters:
msg | Destination list |
putPort | True to add the media port |
bool dispatchRtp (SDPMedia* media, const char* addr, bool start, bool pick, RefObject* context = 0)
| dispatchRtp |
Build and dispatch a chan.rtp message for a given media. Update media on success
Parameters:
media | The media to use |
addr | Remote RTP address |
start | True to request RTP start |
pick | True to update local parameters (other then media) from returned message |
context | Pointer to user provided context, optional |
Returns: True if the message was succesfully handled
bool dispatchRtp (const char* addr, bool start, RefObject* context = 0)
| dispatchRtp |
Calls dispatchRtp() for each media in the list Update it on success. Remove it on failure
Parameters:
addr | Remote RTP address |
start | True to request RTP start |
context | Pointer to user provided context, optional |
Returns: True if the message was succesfully handled for at least one media
bool startRtp (RefObject* context = 0)
| startRtp |
Try to start RTP (calls dispatchRtp()) for each media in the list
Parameters:
context | Pointer to user provided context, optional |
Returns: True if at least one media was started
bool updateSDP (const NamedList& params)
| updateSDP |
Update from parameters. Build a default SDP from parser formats if no media is found in params
Parameters:
params | List of parameters to update from |
Returns: True if media changed
bool updateRtpSDP (const NamedList& params)
| updateRtpSDP |
Update RTP/SDP data from parameters
Parameters:
params | List of parameters to update from |
Returns: True if media or local address changed
MimeSdpBody* createSDP (const char* addr, ObjList* mediaList = 0)
| createSDP |
Creates a SDP body from transport address and list of media descriptors
Parameters:
addr | The address to set. Use own host if empty |
mediaList | Optional media list. Use own list if the given one is 0 |
Returns: MimeSdpBody pointer or 0 if there is no media to set
MimeSdpBody* createSDP ()
| createSDP |
Creates a SDP body for current media status
Returns: MimeSdpBody pointer or 0 if media is missing
MimeSdpBody* createPasstroughSDP (NamedList& msg, bool update = true)
| createPasstroughSDP |
Creates a SDP from RTP address data present in message. Use the raw SDP if present.
Parameters:
msg | The list of parameters |
update | True to update RTP/SDP data if raw SDP is not found in the list |
Returns: MimeSdpBody pointer or 0
inline MimeSdpBody* createRtpSDP (const char* addr, const NamedList& msg)
| createRtpSDP |
Creates a set of unstarted external RTP channels from remote addr and builds SDP from them
Parameters:
addr | Remote RTP address used when dispatching the chan.rtp message |
msg | List of parameters used to update data |
Returns: MimeSdpBody pointer or 0
inline MimeSdpBody* createRtpSDP (const char* addr, bool start)
| createRtpSDP |
Creates a set of RTP channels from address and media info and builds SDP from them
Parameters:
addr | Remote RTP address used when dispatching the chan.rtp message |
start | True to create a started RTP |
Returns: MimeSdpBody pointer or 0
inline MimeSdpBody* createRtpSDP (bool start)
| createRtpSDP |
Creates a set of started external RTP channels from remote addr and builds SDP from them
Parameters:
start | True to create a started RTP |
Returns: MimeSdpBody pointer or 0
void updateFormats (const NamedList& msg, bool changeMedia = false)
| updateFormats |
Update media format lists from parameters
Parameters:
msg | Parameter list |
changeMedia | True to update media list if required |
bool addSdpParams (NamedList& msg, const MimeBody* body)
| addSdpParams |
Add raw SDP forwarding parameter from body if SDP forward is enabled
Parameters:
msg | Destination list |
body | Mime body to process |
Returns: True if the parameter was added
bool addSdpParams (NamedList& msg, const String& rawSdp)
| addSdpParams |
Add raw SDP forwarding parameter if SDP forward is enabled
Parameters:
msg | Destination list |
rawSdp | The raw sdp content |
Returns: True if the parameter was added
bool addRtpParams (NamedList& msg, const String& natAddr = String::empty(),
const MimeBody* body = 0, bool force = false)
| addRtpParams |
Add RTP forwarding parameters to a message (media and address)
Parameters:
msg | Destination list |
natAddr | Optional NAT address if detected |
body | Pointer to the body to extract raw SDP from |
force | True to override RTP forward flag |
Returns: True if RTP data was added. Media is always added if present and remote address is not empty
void resetSdp ()
| resetSdp |
[virtual]
Reset this object to default values
Message* buildChanRtp (SDPMedia* media, const char* addr, bool start, RefObject* context)
| buildChanRtp |
[virtual]
Build a chan.rtp message and populate with media information
Parameters:
media | The media list |
addr | Remote RTP address |
start | True to request RTP start |
context | Pointer to reference counted user provided context |
Returns: The message with media information, NULL if media or addr are missing
Message* buildChanRtp (RefObject* context)
| buildChanRtp |
[pure virtual]
Build a chan.rtp message without media information
Parameters:
context | Pointer to reference counted user provided context |
Returns: The message with user data set but no media information
bool localRtpChanged ()
| localRtpChanged |
[const]
Check if local RTP data changed for at least one media
Returns: True if local RTP data changed for at least one media
void setLocalRtpChanged (bool chg = false)
| setLocalRtpChanged |
Set or reset the local RTP data changed flag for all media
Parameters:
chg | The new value for local RTP data changed flag of all media |
ObjList* updateRtpSDP (const NamedList& params, String& rtpAddr,
ObjList* oldList = 0)
| updateRtpSDP |
[static]
Update RTP/SDP data from parameters
Parameters:
params | Parameter list |
rtpAddr | String to be filled with rtp address from the list |
oldList | Optional existing media list (found media will be removed from it and added to the returned list |
Returns: List of media or 0 if not found or rtpAddr is empty
SDPParser* m_parser | m_parser |
int m_mediaStatus | m_mediaStatus |
bool m_rtpForward | m_rtpForward |
bool m_sdpForward | m_sdpForward |
String m_externalAddr | m_externalAddr |
String m_rtpAddr | m_rtpAddr |
String m_rtpLocalAddr | m_rtpLocalAddr |
ObjList* m_rtpMedia | m_rtpMedia |
int m_sdpSession | m_sdpSession |
int m_sdpVersion | m_sdpVersion |
String m_host | m_host |
bool m_secure | m_secure |
bool m_rfc2833 | m_rfc2833 |
void mediaChanged (const SDPMedia& media)
| mediaChanged |
[protected virtual]
Media changed notification. This method is called when setting new media and an old one changed
Parameters:
media | Old media that changed |
Generated by: paulc on bussard on Wed Oct 21 01:57:30 2009, using kdoc 2.0a54. |