Loading...
Searching...
No Matches
sdp.c File Reference
Core » Protocols

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"`
Include dependency graph for sdp.c:

## 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_remote (void *ice_handle, janus_sdp *remote_sdp, gboolean rids_hml, gboolean update)
| Method to process a remote parsed session description.
int | janus_sdp_process_local (void *ice_handle, janus_sdp *remote_sdp, gboolean update)
| Method to process a local parsed session description.
int | janus_sdp_parse_candidate (void *ice_pc, const char *candidate, int trickle)
| Method to parse a single candidate.
int | janus_sdp_parse_ssrc_group (void *m, const char *group_attr, int video)
| Method to parse a SSRC group attribute.
int | janus_sdp_parse_ssrc (void *m, 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.

## Detailed Description

SDP processing.

Author
  Lorenzo Miniero loren.nosp@m.zo@m.nosp@m.eetec.nosp@m.ho.c.nosp@m.om

Copyright
  GNU General Public License v3

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.

Protocols

## Typedef Documentation

## janus_sdp_mdns_candidate

typedef struct janus_sdp_mdns_candidate janus_sdp_mdns_candidate

## Function Documentation

## janus_sdp_anonymize()

int janus_sdp_anonymize | ( | janus_sdp * | sdp | ) |

Method to strip/anonymize a session description.

Parameters

  [in,out] | sdp | The Janus SDP description object to strip/anonymize

Returns
  0 in case of success, a non-zero integer in case of an error

## janus_sdp_merge()

char * janus_sdp_merge | ( | void * | handle,
|  | janus_sdp * | sdp,
|  | gboolean | offer
| ) |  |

Method to merge a stripped session description and the right transport information.

Parameters

  [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

Returns
  A string containing the full session description in case of success, NULL if the SDP is invalid

## janus_sdp_parse_candidate()

int janus_sdp_parse_candidate | ( | void * | pc,
|  | 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

Parameters

  [in] | pc | Opaque pointer to the WebRTC PeerConnection this candidate refers to
  [in] | candidate | The remote candidate to process
  [in] | trickle | Whether this is a trickle candidate, or coming from the SDP

Returns
  0 in case of success, a non-zero integer in case of an error

## janus_sdp_parse_ssrc()

int janus_sdp_parse_ssrc | ( | void * | medium,
|  | 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

Parameters

  [in] | medium | Opaque pointer to the medium this candidate refers to
  [in] | ssrc_attr | The SSRC attribute value to parse
  [in] | video | Whether this is a video SSRC or not

Returns
  0 in case of success, a non-zero integer in case of an error

## janus_sdp_parse_ssrc_group()

int janus_sdp_parse_ssrc_group | ( | void * | medium,
|  | 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

Parameters

  [in] | medium | Opaque pointer to the medium this candidate refers to
  [in] | group_attr | The SSRC group attribute value to parse
  [in] | video | Whether this is video-related or not

Returns
  0 in case of success, a non-zero integer in case of an error

## janus_sdp_preparse()

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

Parameters

  [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

Returns
  The Janus SDP object in case of success, NULL in case the SDP is invalid

## janus_sdp_process_local()

int janus_sdp_process_local | ( | void * | handle,
|  | janus_sdp * | sdp,
|  | gboolean | update
| ) |  |

Method to process a local parsed session description.

This method will process a session description coming from a plugin, and set up the ICE candidates accordingly

Parameters

  [in] | handle | Opaque pointer to the ICE handle this session description will modify
  [in] | sdp | The Janus SDP object to process
  [in] | update | Whether this SDP is an update to an existing session or not

Returns
  0 in case of success, -1 in case of an error

## janus_sdp_process_remote()

int janus_sdp_process_remote | ( | void * | handle,
|  | janus_sdp * | sdp,
|  | gboolean | rids_hml,
|  | gboolean | update
| ) |  |

Method to process a remote parsed session description.

This method will process a session description coming from a peer, and set up the ICE candidates accordingly

Parameters

  [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

Returns
  0 in case of success, -1 in case of an error