RTP processing (headers)
More...
#include <arpa/inet.h>
#include <endian.h>
#include <inttypes.h>
#include <string.h>
#include <glib.h>
Go to the source code of this file.
|
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...
|
|
int | janus_rtp_header_extension_parse_rtp_stream_id (char *buf, int len, int id, char *sdes_item, int sdes_len) |
| Helper to parse a rtp-stream-id RTP extension (https://tools.ietf.org/html/draft-ietf-avtext-rid-09) 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 (janus_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...
|
|
RTP processing (headers)
- 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 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
◆ JANUS_RTP_EXTMAP_ABS_SEND_TIME
#define JANUS_RTP_EXTMAP_ABS_SEND_TIME "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time" |
◆ JANUS_RTP_EXTMAP_AUDIO_LEVEL
#define JANUS_RTP_EXTMAP_AUDIO_LEVEL "urn:ietf:params:rtp-hdrext:ssrc-audio-level" |
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
◆ JANUS_RTP_EXTMAP_CC_EXTENSIONS
#define JANUS_RTP_EXTMAP_CC_EXTENSIONS "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01" |
◆ JANUS_RTP_EXTMAP_PLAYOUT_DELAY
#define JANUS_RTP_EXTMAP_PLAYOUT_DELAY "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay" |
◆ JANUS_RTP_EXTMAP_RTP_STREAM_ID
#define JANUS_RTP_EXTMAP_RTP_STREAM_ID "urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id" |
a=extmap:3/sendonly urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
◆ JANUS_RTP_EXTMAP_TOFFSET
#define JANUS_RTP_EXTMAP_TOFFSET "urn:ietf:params:rtp-hdrext:toffset" |
a=extmap:2 urn:ietf:params:rtp-hdrext:toffset
◆ JANUS_RTP_EXTMAP_VIDEO_ORIENTATION
#define JANUS_RTP_EXTMAP_VIDEO_ORIENTATION "urn:3gpp:video-orientation" |
a=extmap:4 urn:3gpp:video-orientation
◆ RTP_HEADER_SIZE
#define RTP_HEADER_SIZE 12 |
◆ janus_rtp_header
◆ janus_rtp_header_extension
◆ janus_rtp_packet
◆ janus_rtp_switching_context
RTP context, in order to make sure SSRC changes result in coherent seq/ts increases.
◆ rtp_header
◆ 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
-
sdp | The SDP to parse |
id | The 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
-
sdp | The SDP to parse |
extension | The 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] | buf | The packet data |
[in] | len | The packet data length in bytes |
[in] | id | The extension ID to look for |
[out] | level | The 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] | buf | The packet data |
[in] | len | The packet data length in bytes |
[in] | id | The extension ID to look for |
[out] | min_delay | The minimum delay value |
[out] | max_delay | The maximum delay value |
- Returns
- 0 if found, -1 otherwise
◆ janus_rtp_header_extension_parse_rtp_stream_id()
int janus_rtp_header_extension_parse_rtp_stream_id |
( |
char * |
buf, |
|
|
int |
len, |
|
|
int |
id, |
|
|
char * |
sdes_item, |
|
|
int |
sdes_len |
|
) |
| |
Helper to parse a rtp-stream-id RTP extension (https://tools.ietf.org/html/draft-ietf-avtext-rid-09)
- Parameters
-
[in] | buf | The packet data |
[in] | len | The packet data length in bytes |
[in] | id | The extension ID to look for |
[out] | sdes_item | Buffer where the RTP stream ID will be written |
[in] | sdes_len | Size of the input/output buffer |
- 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] | buf | The packet data |
[in] | len | The packet data length in bytes |
[in] | id | The extension ID to look for |
[out] | c | The value of the Camera (C) bit |
[out] | f | The value of the Flip (F) bit |
[out] | r1 | The value of the first Rotation (R1) bit |
[out] | r0 | The value of the second Rotation (R0) bit |
- Returns
- 0 if found, -1 otherwise
◆ janus_rtp_header_update()
Use the context info to update the RTP header of a packet, if needed.
- Parameters
-
[in] | header | The RTP header to update |
[in] | context | The context to use as a reference |
[in] | video | Whether this is an audio or a video packet |
[in] | step | deprecated The 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] | buf | The packet data |
[in] | len | The packet data length in bytes |
[out] | plen | The 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()
Set (or reset) the context fields to their default values.
- Parameters
-
[in] | context | The context to (re)set |