Fork me on GitHub
Functions
rtp.c File Reference

RTP processing. More...

#include "rtp.h"
#include "debug.h"
Include dependency graph for rtp.c:

Functions

char * janus_rtp_payload (char *buf, int len, int *plen)
 Helper to quickly access the RTP payload, skipping header and extensions. More...
 
int janus_rtp_header_extension_get_id (const char *sdp, const char *extension)
 Ugly and dirty helper to quickly get the id associated with an RTP extension (extmap) in an SDP. More...
 
const char * janus_rtp_header_extension_get_from_id (const char *sdp, int id)
 Ugly and dirty helper to quickly get the RTP extension namespace associated with an id (extmap) in an SDP. More...
 
int janus_rtp_header_extension_parse_audio_level (char *buf, int len, int id, int *level)
 Helper to parse a ssrc-audio-level RTP extension (https://tools.ietf.org/html/rfc6464) More...
 
int janus_rtp_header_extension_parse_video_orientation (char *buf, int len, int id, gboolean *c, gboolean *f, gboolean *r1, gboolean *r0)
 Helper to parse a video-orientation RTP extension (http://www.3gpp.org/ftp/Specs/html-info/26114.htm) More...
 
int janus_rtp_header_extension_parse_playout_delay (char *buf, int len, int id, uint16_t *min_delay, uint16_t *max_delay)
 Helper to parse a playout-delay RTP extension (https://webrtc.org/experiments/rtp-hdrext/playout-delay) More...
 
void janus_rtp_switching_context_reset (janus_rtp_switching_context *context)
 Set (or reset) the context fields to their default values. More...
 
void janus_rtp_header_update (rtp_header *header, janus_rtp_switching_context *context, gboolean video, int step)
 Use the context info to update the RTP header of a packet, if needed. More...
 
const char * janus_srtp_error_str (int error)
 Helper method to get a string representation of a libsrtp error code. More...
 

Detailed Description

RTP processing.

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

Implementation of the RTP header. Since the gateway does not much more than relaying frames around, the only thing we're interested in is the RTP header and how to get its payload, and parsing extensions.

Protocols

Function Documentation

◆ janus_rtp_header_extension_get_from_id()

const char* janus_rtp_header_extension_get_from_id ( const char *  sdp,
int  id 
)

Ugly and dirty helper to quickly get the RTP extension namespace associated with an id (extmap) in an SDP.

Note
This only looks for the extensions we know about, those defined in rtp.h
Parameters
sdpThe SDP to parse
idThe extension id to look for
Returns
The extension namespace, if found, NULL otherwise

◆ janus_rtp_header_extension_get_id()

int janus_rtp_header_extension_get_id ( const char *  sdp,
const char *  extension 
)

Ugly and dirty helper to quickly get the id associated with an RTP extension (extmap) in an SDP.

Parameters
sdpThe SDP to parse
extensionThe extension namespace to look for
Returns
The extension id, if found, -1 otherwise

◆ janus_rtp_header_extension_parse_audio_level()

int janus_rtp_header_extension_parse_audio_level ( char *  buf,
int  len,
int  id,
int *  level 
)

Helper to parse a ssrc-audio-level RTP extension (https://tools.ietf.org/html/rfc6464)

Parameters
[in]bufThe packet data
[in]lenThe packet data length in bytes
[in]idThe extension ID to look for
[out]levelThe level value in dBov (0=max, 127=min)
Returns
0 if found, -1 otherwise

◆ janus_rtp_header_extension_parse_playout_delay()

int janus_rtp_header_extension_parse_playout_delay ( char *  buf,
int  len,
int  id,
uint16_t *  min_delay,
uint16_t *  max_delay 
)

Helper to parse a playout-delay RTP extension (https://webrtc.org/experiments/rtp-hdrext/playout-delay)

Parameters
[in]bufThe packet data
[in]lenThe packet data length in bytes
[in]idThe extension ID to look for
[out]min_delayThe minimum delay value
[out]max_delayThe maximum delay value
Returns
0 if found, -1 otherwise

◆ janus_rtp_header_extension_parse_video_orientation()

int janus_rtp_header_extension_parse_video_orientation ( char *  buf,
int  len,
int  id,
gboolean *  c,
gboolean *  f,
gboolean *  r1,
gboolean *  r0 
)

Helper to parse a video-orientation RTP extension (http://www.3gpp.org/ftp/Specs/html-info/26114.htm)

Parameters
[in]bufThe packet data
[in]lenThe packet data length in bytes
[in]idThe extension ID to look for
[out]cThe value of the Camera (C) bit
[out]fThe value of the Flip (F) bit
[out]r1The value of the first Rotation (R1) bit
[out]r0The value of the second Rotation (R0) bit
Returns
0 if found, -1 otherwise

◆ janus_rtp_header_update()

void janus_rtp_header_update ( rtp_header header,
janus_rtp_switching_context context,
gboolean  video,
int  step 
)

Use the context info to update the RTP header of a packet, if needed.

Parameters
[in]headerThe RTP header to update
[in]contextThe context to use as a reference
[in]videoWhether this is an audio or a video packet
[in]stepThe expected timestamp step

◆ janus_rtp_payload()

char* janus_rtp_payload ( char *  buf,
int  len,
int *  plen 
)

Helper to quickly access the RTP payload, skipping header and extensions.

Parameters
[in]bufThe packet data
[in]lenThe packet data length in bytes
[out]plenThe payload data length in bytes
Returns
A pointer to where the payload data starts, or NULL otherwise; plen is also set accordingly

◆ janus_rtp_switching_context_reset()

void janus_rtp_switching_context_reset ( janus_rtp_switching_context context)

Set (or reset) the context fields to their default values.

Parameters
[in]contextThe context to (re)set

◆ janus_srtp_error_str()

const char* janus_srtp_error_str ( int  error)

Helper method to get a string representation of a libsrtp error code.

Parameters
[in]errorThe libsrtp error code
Returns
A string representation of the error code