RTP processing. More...

Macros | |
| #define | OPUS_PT 111 |
| #define | MULTIOPUS_PT OPUS_PT |
| #define | ISAC32_PT 104 |
| #define | ISAC16_PT 103 |
| #define | PCMU_PT 0 |
| #define | PCMA_PT 8 |
| #define | G722_PT 9 |
| #define | VP8_PT 96 |
| #define | VP9_PT 101 |
| #define | H264_PT 107 |
| #define | AV1_PT 98 |
| #define | H265_PT 100 |
Functions | |
| gboolean | janus_is_rtp (char *buf, guint len) |
| Helper method to demultiplex RTP from other protocols. More... | |
| 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, gboolean *vad, 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_mid (char *buf, int len, int id, char *sdes_item, int sdes_len) |
| Helper to parse a sdes-mid RTP extension (https://tools.ietf.org/html/draft-ietf-mmusic-sdp-bundle-negotiation-54) More... | |
| int | janus_rtp_header_extension_parse_rid (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... | |
| int | janus_rtp_header_extension_parse_framemarking (char *buf, int len, int id, janus_videocodec codec, uint8_t *tid) |
| Helper to parse a frame-marking RTP extension (http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07) More... | |
| int | janus_rtp_header_extension_parse_transport_wide_cc (char *buf, int len, int id, uint16_t *transSeqNum) |
| Helper to parse a transport wide sequence number (https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01) More... | |
| int | janus_rtp_header_extension_set_transport_wide_cc (char *buf, int len, int id, uint16_t transSeqNum) |
| Helper to set a transport wide sequence number (https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01) More... | |
| int | janus_rtp_header_extension_replace_id (char *buf, int len, int id, int new_id) |
| Helper to replace the ID of an RTP extension with a different one (e.g., to turn a repaired-rtp-stream-id into a rtp-stream-id after a successful rtx) More... | |
| void | janus_rtp_switching_context_reset (janus_rtp_switching_context *context) |
| Set (or reset) the context fields to their default values. More... | |
| int | janus_rtp_skew_compensate_audio (janus_rtp_header *header, janus_rtp_switching_context *context, gint64 now) |
| Use the context info to compensate for audio source skew, if needed. More... | |
| int | janus_rtp_skew_compensate_video (janus_rtp_header *header, janus_rtp_switching_context *context, gint64 now) |
| Use the context info to compensate for video source skew, if needed. 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... | |
| const char * | janus_srtp_error_str (int error) |
| Helper method to get a string representation of a libsrtp error code. More... | |
| const char * | janus_audiocodec_name (janus_audiocodec acodec) |
| janus_audiocodec | janus_audiocodec_from_name (const char *name) |
| int | janus_audiocodec_pt (janus_audiocodec acodec) |
| const char * | janus_videocodec_name (janus_videocodec vcodec) |
| janus_videocodec | janus_videocodec_from_name (const char *name) |
| int | janus_videocodec_pt (janus_videocodec vcodec) |
| void | janus_rtp_simulcasting_context_reset (janus_rtp_simulcasting_context *context) |
| Set (or reset) the context fields to their default values. More... | |
| void | janus_rtp_simulcasting_prepare (json_t *simulcast, int *rid_ext_id, int *framemarking_ext_id, uint32_t *ssrcs, char **rids) |
| Helper method to prepare the simulcasting info (rids and/or SSRCs) from the simulcast object the core passes to plugins for new PeerConnections. More... | |
| gboolean | janus_rtp_simulcasting_context_process_rtp (janus_rtp_simulcasting_context *context, char *buf, int len, uint32_t *ssrcs, char **rids, janus_videocodec vcodec, janus_rtp_switching_context *sc) |
| Process an RTP packet, and decide whether this should be relayed or not, updating the context accordingly. More... | |
RTP processing.
| #define AV1_PT 98 |
| #define G722_PT 9 |
| #define H264_PT 107 |
| #define H265_PT 100 |
| #define ISAC16_PT 103 |
| #define ISAC32_PT 104 |
| #define MULTIOPUS_PT OPUS_PT |
| #define OPUS_PT 111 |
| #define PCMA_PT 8 |
| #define PCMU_PT 0 |
| #define VP8_PT 96 |
| #define VP9_PT 101 |
| janus_audiocodec janus_audiocodec_from_name | ( | const char * | name | ) |
| const char* janus_audiocodec_name | ( | janus_audiocodec | acodec | ) |
| int janus_audiocodec_pt | ( | janus_audiocodec | acodec | ) |
| gboolean janus_is_rtp | ( | char * | buf, |
| guint | len | ||
| ) |
Helper method to demultiplex RTP from other protocols.
| [in] | buf | Buffer to inspect |
| [in] | len | Length of the buffer to inspect |
| 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.
| sdp | The SDP to parse |
| id | The extension id to look for |
| 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.
| sdp | The SDP to parse |
| extension | The extension namespace to look for |
| int janus_rtp_header_extension_parse_audio_level | ( | char * | buf, |
| int | len, | ||
| int | id, | ||
| gboolean * | vad, | ||
| int * | level | ||
| ) |
Helper to parse a ssrc-audio-level RTP extension (https://tools.ietf.org/html/rfc6464)
| [in] | buf | The packet data |
| [in] | len | The packet data length in bytes |
| [in] | id | The extension ID to look for |
| [out] | vad | Whether the encoder thinks there's voice activity |
| [out] | level | The level value in dBov (0=max, 127=min) |
| int janus_rtp_header_extension_parse_framemarking | ( | char * | buf, |
| int | len, | ||
| int | id, | ||
| janus_videocodec | codec, | ||
| uint8_t * | tid | ||
| ) |
Helper to parse a frame-marking RTP extension (http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07)
| [in] | buf | The packet data |
| [in] | len | The packet data length in bytes |
| [in] | id | The extension ID to look for |
| [in] | codec | The video codec (as a janus_videocodec instance) the extension refers to |
| [out] | tid | Temporal layer ID of the frame |
| int janus_rtp_header_extension_parse_mid | ( | char * | buf, |
| int | len, | ||
| int | id, | ||
| char * | sdes_item, | ||
| int | sdes_len | ||
| ) |
Helper to parse a sdes-mid RTP extension (https://tools.ietf.org/html/draft-ietf-mmusic-sdp-bundle-negotiation-54)
| [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 |
| 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)
| [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 |
| int janus_rtp_header_extension_parse_rid | ( | 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)
| [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 |
| int janus_rtp_header_extension_parse_transport_wide_cc | ( | char * | buf, |
| int | len, | ||
| int | id, | ||
| uint16_t * | transSeqNum | ||
| ) |
Helper to parse a transport wide sequence number (https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01)
| [in] | buf | The packet data |
| [in] | len | The packet data length in bytes |
| [in] | id | The extension ID to look for |
| [out] | transSeqNum | Variable to read the transport wide sequence number in |
| 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)
| [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 |
| int janus_rtp_header_extension_replace_id | ( | char * | buf, |
| int | len, | ||
| int | id, | ||
| int | new_id | ||
| ) |
Helper to replace the ID of an RTP extension with a different one (e.g., to turn a repaired-rtp-stream-id into a rtp-stream-id after a successful rtx)
| [in] | buf | The packet data |
| [in] | len | The packet data length in bytes |
| [in] | id | The extension ID to look for and replace |
| [in] | new_id | The new value for the extension ID |
| int janus_rtp_header_extension_set_transport_wide_cc | ( | char * | buf, |
| int | len, | ||
| int | id, | ||
| uint16_t | transSeqNum | ||
| ) |
Helper to set a transport wide sequence number (https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01)
| [in] | buf | The packet data |
| [in] | len | The packet data length in bytes |
| [in] | id | The extension ID to look for |
| [out] | transSeqNum | Transport wide sequence number to set |
| 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.
| [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 |
| char* janus_rtp_payload | ( | char * | buf, |
| int | len, | ||
| int * | plen | ||
| ) |
Helper to quickly access the RTP payload, skipping header and extensions.
| [in] | buf | The packet data |
| [in] | len | The packet data length in bytes |
| [out] | plen | The payload data length in bytes |
| gboolean janus_rtp_simulcasting_context_process_rtp | ( | janus_rtp_simulcasting_context * | context, |
| char * | buf, | ||
| int | len, | ||
| uint32_t * | ssrcs, | ||
| char ** | rids, | ||
| janus_videocodec | vcodec, | ||
| janus_rtp_switching_context * | sc | ||
| ) |
Process an RTP packet, and decide whether this should be relayed or not, updating the context accordingly.
changed_substream , changed_temporal and need_pli properties, and updates them according to the decisions made after processinf the packet | [in] | context | The simulcasting context to use |
| [in] | buf | The RTP packet to process |
| [in] | len | The length of the RTP packet (header, extension and payload) |
| [in] | ssrcs | The simulcast SSRCs to refer to (may be updated if rids are involved) |
| [in] | rids | The simulcast rids to refer to, if any |
| [in] | vcodec | Video codec of the RTP payload |
| [in] | sc | RTP switching context to refer to, if any (only needed for VP8 and dropping temporal layers) |
| void janus_rtp_simulcasting_context_reset | ( | janus_rtp_simulcasting_context * | context | ) |
Set (or reset) the context fields to their default values.
| [in] | context | The context to (re)set |
| void janus_rtp_simulcasting_prepare | ( | json_t * | simulcast, |
| int * | rid_ext_id, | ||
| int * | framemarking_ext_id, | ||
| uint32_t * | ssrcs, | ||
| char ** | rids | ||
| ) |
Helper method to prepare the simulcasting info (rids and/or SSRCs) from the simulcast object the core passes to plugins for new PeerConnections.
| [in] | simulcast | JSON object containing SSRCs and rids |
| [in] | rid_ext_id | The rid RTP extension ID to set, if any |
| [in] | framemarking_ext_id | The frame marking RTP extension ID to set, if any |
| [in] | ssrcs | The list of simulcast SSRCs to update, if any |
| [in] | rids | The list of rids to update, if any (items will be allocated) |
| int janus_rtp_skew_compensate_audio | ( | janus_rtp_header * | header, |
| janus_rtp_switching_context * | context, | ||
| gint64 | now | ||
| ) |
Use the context info to compensate for audio source skew, if needed.
| [in] | header | The RTP header to update |
| [in] | context | The context to use as a reference |
| [in] | now | The packet arrival monotonic time |
| int janus_rtp_skew_compensate_video | ( | janus_rtp_header * | header, |
| janus_rtp_switching_context * | context, | ||
| gint64 | now | ||
| ) |
Use the context info to compensate for video source skew, if needed.
| [in] | header | The RTP header to update |
| [in] | context | The context to use as a reference |
| [in] | now | The packet arrival monotonic time |
| void janus_rtp_switching_context_reset | ( | janus_rtp_switching_context * | context | ) |
Set (or reset) the context fields to their default values.
| [in] | context | The context to (re)set |
| const char* janus_srtp_error_str | ( | int | error | ) |
Helper method to get a string representation of a libsrtp error code.
| [in] | error | The libsrtp error code |
| janus_videocodec janus_videocodec_from_name | ( | const char * | name | ) |
| const char* janus_videocodec_name | ( | janus_videocodec | vcodec | ) |
| int janus_videocodec_pt | ( | janus_videocodec | vcodec | ) |