SDP processing. More...
#include <netdb.h>
#include <gio/gio.h>
#include "janus.h"
#include "ice.h"
#include "sdp.h"
#include "utils.h"
#include "ip-utils.h"
#include "debug.h"
#include "events.h"
Data Structures | |
struct | janus_sdp_mdns_candidate |
Typedefs | |
typedef struct janus_sdp_mdns_candidate | janus_sdp_mdns_candidate |
Functions | |
janus_sdp * | janus_sdp_preparse (void *ice_handle, const char *jsep_sdp, char *error_str, size_t errlen, janus_dtls_role *dtls_role, int *audio, int *video, int *data) |
Method to pre-parse a session description. | |
int | janus_sdp_process (void *ice_handle, janus_sdp *remote_sdp, gboolean rids_hml, gboolean update) |
Method to process a parsed session description. | |
int | janus_sdp_parse_candidate (void *ice_stream, const char *candidate, int trickle) |
Method to parse a single candidate. | |
int | janus_sdp_parse_ssrc_group (void *ice_stream, const char *group_attr, int video) |
Method to parse a SSRC group attribute. | |
int | janus_sdp_parse_ssrc (void *ice_stream, const char *ssrc_attr, int video) |
Method to parse a SSRC attribute. | |
int | janus_sdp_anonymize (janus_sdp *anon) |
Method to strip/anonymize a session description. | |
char * | janus_sdp_merge (void *ice_handle, janus_sdp *anon, gboolean offer) |
Method to merge a stripped session description and the right transport information. | |
SDP processing.
Implementation of an SDP parser/merger/generator in the server. Each SDP coming from peers is stripped/anonymized before it is passed to the plugins: all DTLS/ICE/transport related information is removed, only leaving the relevant information in place. SDP coming from plugins is stripped/anonymized as well, and merged with the proper DTLS/ICE/transport information before it is sent to the peers. The actual SDP processing (parsing SDP strings, representation of SDP as an internal format, and so on) is done via the tools provided in sdp-utils.h.
typedef struct janus_sdp_mdns_candidate janus_sdp_mdns_candidate |
int janus_sdp_anonymize | ( | janus_sdp * | sdp | ) |
Method to strip/anonymize a session description.
[in,out] | sdp | The Janus SDP description object to strip/anonymize |
char * janus_sdp_merge | ( | void * | handle, |
janus_sdp * | sdp, | ||
gboolean | offer ) |
Method to merge a stripped session description and the right transport information.
[in] | handle | Opaque pointer to the ICE handle this session description is related to |
[in] | sdp | The Janus SDP description object to merge/enrich |
[in] | offer | Whether the SDP is an offer or an answer |
int janus_sdp_parse_candidate | ( | void * | stream, |
const char * | candidate, | ||
int | trickle ) |
Method to parse a single candidate.
This method will parse a single remote candidate provided by a peer, whether it is trickling or not
[in] | stream | Opaque pointer to the ICE stream this candidate refers to |
[in] | candidate | The remote candidate to process |
[in] | trickle | Whether this is a trickle candidate, or coming from the SDP |
int janus_sdp_parse_ssrc | ( | void * | stream, |
const char * | ssrc_attr, | ||
int | video ) |
Method to parse a SSRC attribute.
This method will parse a SSRC attribute, and set it for the peer
[in] | stream | Opaque pointer to the ICE stream this candidate refers to |
[in] | ssrc_attr | The SSRC attribute value to parse |
[in] | video | Whether this is a video SSRC or not |
int janus_sdp_parse_ssrc_group | ( | void * | stream, |
const char * | group_attr, | ||
int | video ) |
Method to parse a SSRC group attribute.
This method will parse a SSRC group attribute, and set the parsed values for the peer
[in] | stream | Opaque pointer to the ICE stream this candidate refers to |
[in] | group_attr | The SSRC group attribute value to parse |
[in] | video | Whether this is video-related or not |
janus_sdp * janus_sdp_preparse | ( | void * | handle, |
const char * | jsep_sdp, | ||
char * | error_str, | ||
size_t | errlen, | ||
janus_dtls_role * | dtls_role, | ||
int * | audio, | ||
int * | video, | ||
int * | data ) |
Method to pre-parse a session description.
This method is only used to quickly check how many audio and video lines are in an SDP, and to generate a Janus SDP instance
[in] | handle | Opaque pointer to the ICE handle this session description will modify |
[in] | jsep_sdp | The SDP that the browser peer originated |
[in,out] | error_str | Buffer to receive a reason for an error, if any |
[in] | errlen | The length of the error buffer |
[out] | dtls_role | The advertised DTLS role |
[out] | audio | The number of audio m-lines |
[out] | video | The number of video m-lines |
[out] | data | The number of SCTP m-lines |
int janus_sdp_process | ( | void * | handle, |
janus_sdp * | sdp, | ||
gboolean | rids_hml, | ||
gboolean | update ) |
Method to process a parsed session description.
This method will process a session description coming from a peer, and set up the ICE candidates accordingly
[in] | handle | Opaque pointer to the ICE handle this session description will modify |
[in] | sdp | The Janus SDP object to process |
[in] | rids_hml | Whether the order of rids in the SDP, if present, will be h-m-l (TRUE) or l-m-h (FALSE) |
[in] | update | Whether this SDP is an update to an existing session or not |