Loading...
Searching...
No Matches
rtcp.h
Go to the documentation of this file.
#ifndef JANUS_RTCP_H
#define JANUS_RTCP_H
#include <arpa/inet.h>
#ifdef __MACH__
#include <machine/endian.h>
#elif defined(__FreeBSD__)
#include <sys/endian.h>
#else
#include <endian.h>
#endif
#include <inttypes.h>
#include <string.h>
typedef enum {
RTCP_FIR = 192,
RTCP_SR = 200,
RTCP_RR = 201,
RTCP_SDES = 202,
RTCP_BYE = 203,
RTCP_APP = 204,
RTCP_RTPFB = 205,
RTCP_PSFB = 206,
RTCP_XR = 207,
} rtcp_type;
typedef rtcp_type janus_rtcp_type;
typedef struct rtcp_header
{
#if __BYTE_ORDER == __BIG_ENDIAN
uint16_t version:2;
uint16_t padding:1;
uint16_t rc:5;
uint16_t type:8;
#elif __BYTE_ORDER == __LITTLE_ENDIAN
uint16_t rc:5;
uint16_t padding:1;
uint16_t version:2;
uint16_t type:8;
#endif
uint16_t length:16;
} rtcp_header;
typedef rtcp_header janus_rtcp_header;
typedef struct sender_info
{
uint32_t ntp_ts_msw;
uint32_t ntp_ts_lsw;
uint32_t rtp_ts;
uint32_t s_packets;
uint32_t s_octets;
} sender_info;
typedef sender_info janus_sender_info;
typedef struct report_block
{
uint32_t ssrc;
uint32_t flcnpl;
uint32_t ehsnr;
uint32_t jitter;
uint32_t lsr;
uint32_t delay;
} report_block;
typedef report_block janus_report_block;
typedef struct rtcp_sr
{
rtcp_header header;
uint32_t ssrc;
sender_info si;
report_block rb[1];
} rtcp_sr;
typedef rtcp_sr janus_rtcp_sr;
typedef struct rtcp_rr
{
rtcp_header header;
uint32_t ssrc;
report_block rb[1];
} rtcp_rr;
typedef rtcp_rr janus_rtcp_rr;
typedef struct rtcp_sdes_chunk
{
uint32_t ssrc;
} rtcp_sdes_chunk;
typedef rtcp_sdes_chunk janus_rtcp_sdes_chunk;
typedef struct rtcp_sdes_item
{
uint8_t type;
uint8_t len;
char content[1];
} rtcp_sdes_item;
typedef rtcp_sdes_item janus_rtcp_sdes_item;
typedef struct rtcp_sdes
{
rtcp_header header;
rtcp_sdes_chunk chunk;
rtcp_sdes_item item;
} rtcp_sdes;
typedef rtcp_sdes janus_rtcp_sdes;
typedef struct rtcp_bye
{
rtcp_header header;
uint32_t ssrc[1];
} rtcp_bye;
typedef rtcp_bye janus_rtcp_bye;
typedef struct rtcp_app
{
rtcp_header header;
uint32_t ssrc;
char name[4];
} rtcp_app;
typedef rtcp_app janus_rtcp_app;
typedef struct rtcp_nack
{
uint16_t pid;
uint16_t blp;
} rtcp_nack;
typedef rtcp_nack janus_rtcp_nack;
typedef struct janus_nack {
uint16_t seq_no;
struct janus_nack *next;
} janus_nack;
typedef struct rtcp_remb
{
char id[4];
uint32_t bitrate;
uint32_t ssrc[3];
} rtcp_remb;
typedef rtcp_remb janus_rtcp_fb_remb;
typedef struct rtcp_fir
{
uint32_t ssrc;
uint32_t seqnr;
} rtcp_fir;
typedef rtcp_fir janus_rtcp_fb_fir;
typedef struct rtcp_fb
{
rtcp_header header;
uint32_t ssrc;
uint32_t media;
char fci[1];
} rtcp_fb;
typedef rtcp_fb janus_rtcp_fb;
typedef struct extended_report_block
{
uint8_t blocktype;
uint8_t typesp;
uint16_t length;
char content[1];
} extended_report_block;
typedef extended_report_block janus_extended_report_block;
typedef struct rtcp_xr
{
rtcp_header header;
uint32_t ssrc;
extended_report_block erb[1];
} rtcp_xr;
typedef rtcp_xr janus_rtcp_xr;
typedef struct rtcp_context
{
/* Whether we received any RTP packet at all (don't send RR otherwise) */
uint8_t rtp_recvd:1;
uint32_t rtp_last_inorder_ts;
int64_t rtp_last_inorder_time;
uint16_t max_seq_nr;
uint16_t seq_cycle;
uint16_t base_seq;
/* Payload type */
uint16_t pt;
/* RFC 3550 A.8 Interarrival Jitter */
int64_t transit;
double jitter, jitter_remote;
/* Timestamp base (e.g., 48000 for opus audio, or 90000 for video) */
uint32_t tb;
/* Last SR received */
uint32_t lsr;
/* Monotonic time of last SR received */
int64_t lsr_ts;
/* Last RR/SR we sent */
int64_t last_sent;
/* Estimated round-trip time */
uint32_t rtt;
/* RFC 3550 A.3 */
uint32_t received;
uint32_t received_prior;
uint32_t expected;
uint32_t expected_prior;
uint32_t lost, lost_remote;
uint32_t retransmitted;
uint32_t retransmitted_prior;
/* Inbound RR process */
int64_t rr_last_ts;
uint32_t rr_last_ehsnr;
uint32_t rr_last_lost;
uint32_t rr_last_nack_count;
gint sent_packets_since_last_rr;
gint nack_count;
/* Link quality estimations */
double in_link_quality;
double in_media_link_quality;
double out_link_quality;
double out_media_link_quality;
/* TODO Incoming transport-wide CC feedback*/
} rtcp_context;
typedef rtcp_context janus_rtcp_context;
typedef struct rtcp_transport_wide_cc_stats
{
guint32 transport_seq_num;
guint64 timestamp;
} rtcp_transport_wide_cc_stats;
typedef rtcp_transport_wide_cc_stats janus_rtcp_transport_wide_cc_stats;
uint32_t janus_rtcp_context_get_rtt(janus_rtcp_context *ctx);
uint32_t janus_rtcp_context_get_lost_all(janus_rtcp_context *ctx, gboolean remote);
uint32_t janus_rtcp_context_get_jitter(janus_rtcp_context *ctx, gboolean remote);
uint32_t janus_rtcp_context_get_in_link_quality(janus_rtcp_context *ctx);
uint32_t janus_rtcp_context_get_in_media_link_quality(janus_rtcp_context *ctx);
uint32_t janus_rtcp_context_get_out_link_quality(janus_rtcp_context *ctx);
uint32_t janus_rtcp_context_get_out_media_link_quality(janus_rtcp_context *ctx);
void janus_rtcp_swap_report_blocks(char *packet, int len, uint32_t rtx_ssrc);
guint32 janus_rtcp_get_sender_ssrc(char *packet, int len);
guint32 janus_rtcp_get_receiver_ssrc(char *packet, int len);
gboolean janus_rtcp_check_len(janus_rtcp_header *rtcp, int len);
gboolean janus_rtcp_check_rr(janus_rtcp_header *rtcp, int len);
gboolean janus_rtcp_check_sr(janus_rtcp_header *rtcp, int len);
gboolean janus_rtcp_check_fci(janus_rtcp_header *rtcp, int len, int sizeof_fci);
gboolean janus_rtcp_check_remb(janus_rtcp_header *rtcp, int len);
gboolean janus_is_rtcp(char *buf, guint len);
int janus_rtcp_parse(janus_rtcp_context *ctx, char *packet, int len);
int janus_rtcp_fix_report_data(char *packet, int len, uint32_t base_ts, uint32_t base_ts_prev, uint32_t ssrc_peer, uint32_t ssrc_local, uint32_t ssrc_expected, gboolean video);
int janus_rtcp_fix_ssrc(janus_rtcp_context *ctx, char *packet, int len, int fixssrc, uint32_t newssrcl, uint32_t newssrcr);
char *janus_rtcp_filter(char *packet, int len, int *newlen);
int janus_rtcp_process_incoming_rtp(janus_rtcp_context *ctx, char *packet, int len,
gboolean rfc4588_pkt, gboolean rfc4588_enabled, gboolean retransmissions_disabled,
GHashTable *clock_rates);
int janus_rtcp_report_block(janus_rtcp_context *ctx, janus_report_block *rb);
gboolean janus_rtcp_has_bye(char *packet, int len);
gboolean janus_rtcp_has_fir(char *packet, int len);
gboolean janus_rtcp_has_pli(char *packet, int len);
GSList *janus_rtcp_get_nacks(char *packet, int len);
int janus_rtcp_remove_nacks(char *packet, int len);
uint32_t janus_rtcp_get_remb(char *packet, int len);
int janus_rtcp_cap_remb(char *packet, int len, uint32_t bitrate);
int janus_rtcp_sdes_cname(char *packet, int len, const char *cname, int cnamelen);
int janus_rtcp_remb(char *packet, int len, uint32_t bitrate);
int janus_rtcp_remb_ssrcs(char *packet, int len, uint32_t bitrate, uint8_t numssrc);
int janus_rtcp_fir(char *packet, int len, int *seqnr);
int janus_rtcp_fir_legacy(char *packet, int len, int *seqnr);
int janus_rtcp_pli(char *packet, int len);
int janus_rtcp_nacks(char *packet, int len, GSList *nacks);
int janus_rtcp_transport_wide_cc_feedback(char *packet, size_t len, guint32 ssrc, guint32 media, guint8 feedback_packet_count, GQueue *transport_wide_cc_stats);
#endif
janus_rtcp_type
rtcp_type janus_rtcp_type
Definition rtcp.h:42
janus_rtcp_sr
rtcp_sr janus_rtcp_sr
Definition rtcp.h:94
janus_rtcp_swap_report_blocks
void janus_rtcp_swap_report_blocks(char *packet, int len, uint32_t rtx_ssrc)
Method to swap Report Blocks and move media RB in first position in case rtx SSRC comes first.
Definition rtcp.c:164
janus_rtcp_fir
int janus_rtcp_fir(char *packet, int len, int *seqnr)
Method to generate a new RTCP FIR message to request a key frame.
Definition rtcp.c:1489
janus_rtcp_fb
rtcp_fb janus_rtcp_fb
Definition rtcp.h:200
janus_rtcp_header
rtcp_header janus_rtcp_header
Definition rtcp.h:61
janus_rtcp_process_incoming_rtp
int janus_rtcp_process_incoming_rtp(janus_rtcp_context *ctx, char *packet, int len, gboolean rfc4588_pkt, gboolean rfc4588_enabled, gboolean retransmissions_disabled, GHashTable *clock_rates)
Method to quickly process the header of an incoming RTP packet to update the associated RTCP context.
Definition rtcp.c:823
janus_rtcp_check_remb
gboolean janus_rtcp_check_remb(janus_rtcp_header *rtcp, int len)
Method to check if a RTCP packet could contain an AFB REMB Message.
Definition rtcp.c:488
janus_rtcp_has_fir
gboolean janus_rtcp_has_fir(char *packet, int len)
Method to check whether an RTCP message contains a FIR request.
Definition rtcp.c:1120
janus_rtcp_has_bye
gboolean janus_rtcp_has_bye(char *packet, int len)
Method to check whether an RTCP message contains a BYE message.
Definition rtcp.c:1092
janus_rtcp_get_nacks
GSList * janus_rtcp_get_nacks(char *packet, int len)
Method to parse an RTCP NACK message.
Definition rtcp.c:1180
janus_rtcp_remb_ssrcs
int janus_rtcp_remb_ssrcs(char *packet, int len, uint32_t bitrate, uint8_t numssrc)
Method to generate a new RTCP REMB message to cap the reported bitrate, but for more SSRCs.
Definition rtcp.c:1444
janus_rtcp_parse
int janus_rtcp_parse(janus_rtcp_context *ctx, char *packet, int len)
Method to parse/validate an RTCP message.
Definition rtcp.c:52
janus_rtcp_app
rtcp_app janus_rtcp_app
Definition rtcp.h:143
janus_extended_report_block
extended_report_block janus_extended_report_block
Definition rtcp.h:215
janus_rtcp_sdes
rtcp_sdes janus_rtcp_sdes
Definition rtcp.h:126
janus_rtcp_remb
int janus_rtcp_remb(char *packet, int len, uint32_t bitrate)
Method to generate a new RTCP REMB message to cap the reported bitrate.
Definition rtcp.c:1439
rtcp_type
rtcp_type
RTCP Packet Types (http://www.networksorcery.com/enp/protocol/rtcp.htm).
Definition rtcp.h:31
RTCP_APP
@ RTCP_APP
Definition rtcp.h:37
RTCP_RTPFB
@ RTCP_RTPFB
Definition rtcp.h:38
RTCP_RR
@ RTCP_RR
Definition rtcp.h:34
RTCP_SR
@ RTCP_SR
Definition rtcp.h:33
RTCP_XR
@ RTCP_XR
Definition rtcp.h:40
RTCP_PSFB
@ RTCP_PSFB
Definition rtcp.h:39
RTCP_SDES
@ RTCP_SDES
Definition rtcp.h:35
RTCP_FIR
@ RTCP_FIR
Definition rtcp.h:32
RTCP_BYE
@ RTCP_BYE
Definition rtcp.h:36
janus_rtcp_check_sr
gboolean janus_rtcp_check_sr(janus_rtcp_header *rtcp, int len)
Method to check if a RTCP packet could contain a Sender Report.
Definition rtcp.c:431
janus_rtcp_context_get_jitter
uint32_t janus_rtcp_context_get_jitter(janus_rtcp_context *ctx, gboolean remote)
Method to retrieve the jitter from an existing RTCP context.
Definition rtcp.c:960
janus_rtcp_remove_nacks
int janus_rtcp_remove_nacks(char *packet, int len)
Method to remove an RTCP NACK message.
Definition rtcp.c:1248
janus_sender_info
sender_info janus_sender_info
Definition rtcp.h:72
janus_rtcp_fb_remb
rtcp_remb janus_rtcp_fb_remb
Definition rtcp.h:174
janus_rtcp_context_get_rtt
uint32_t janus_rtcp_context_get_rtt(janus_rtcp_context *ctx)
Method to retrieve the estimated round-trip time from an existing RTCP context.
Definition rtcp.c:908
janus_rtcp_report_block
int janus_rtcp_report_block(janus_rtcp_context *ctx, janus_report_block *rb)
Method to fill in a Report Block in a Receiver Report.
Definition rtcp.c:990
janus_rtcp_sdes_chunk
rtcp_sdes_chunk janus_rtcp_sdes_chunk
Definition rtcp.h:110
janus_rtcp_context_get_out_link_quality
uint32_t janus_rtcp_context_get_out_link_quality(janus_rtcp_context *ctx)
Method to retrieve outbound link quality from an existing RTCP context.
Definition rtcp.c:920
janus_rtcp_get_receiver_ssrc
guint32 janus_rtcp_get_receiver_ssrc(char *packet, int len)
Method to quickly retrieve the received SSRC (needed for demuxing RTCP in BUNDLE).
Definition rtcp.c:109
janus_rtcp_sdes_cname
int janus_rtcp_sdes_cname(char *packet, int len, const char *cname, int cnamelen)
Method to generate a new RTCP SDES message.
Definition rtcp.c:1412
janus_rtcp_fir_legacy
int janus_rtcp_fir_legacy(char *packet, int len, int *seqnr)
Method to generate a new legacy RTCP FIR (RFC2032) message to request a key frame.
janus_rtcp_context
rtcp_context janus_rtcp_context
Definition rtcp.h:285
janus_rtcp_nacks
int janus_rtcp_nacks(char *packet, int len, GSList *nacks)
Method to generate a new RTCP NACK message to report lost packets.
Definition rtcp.c:1525
janus_rtcp_transport_wide_cc_feedback
int janus_rtcp_transport_wide_cc_feedback(char *packet, size_t len, guint32 ssrc, guint32 media, guint8 feedback_packet_count, GQueue *transport_wide_cc_stats)
Method to generate a new RTCP transport wide message to report reception stats.
Definition rtcp.c:1569
janus_rtcp_transport_wide_cc_stats
rtcp_transport_wide_cc_stats janus_rtcp_transport_wide_cc_stats
Definition rtcp.h:295
janus_rtcp_sdes_item
rtcp_sdes_item janus_rtcp_sdes_item
Definition rtcp.h:118
janus_rtcp_xr
rtcp_xr janus_rtcp_xr
Definition rtcp.h:224
janus_report_block
report_block janus_report_block
Definition rtcp.h:84
janus_rtcp_fix_report_data
int janus_rtcp_fix_report_data(char *packet, int len, uint32_t base_ts, uint32_t base_ts_prev, uint32_t ssrc_peer, uint32_t ssrc_local, uint32_t ssrc_expected, gboolean video)
Method to fix incoming RTCP SR and RR data.
Definition rtcp.c:1021
janus_rtcp_check_fci
gboolean janus_rtcp_check_fci(janus_rtcp_header *rtcp, int len, int sizeof_fci)
Method to check if a RTCP packet could contain a Feedback Message with a defined FCI size.
Definition rtcp.c:455
janus_is_rtcp
gboolean janus_is_rtcp(char *buf, guint len)
Helper method to demultiplex RTCP from other protocols.
Definition rtcp.c:45
janus_rtcp_rr
rtcp_rr janus_rtcp_rr
Definition rtcp.h:103
janus_rtcp_context_get_out_media_link_quality
uint32_t janus_rtcp_context_get_out_media_link_quality(janus_rtcp_context *ctx)
Method to retrieve outbound media link quality from an existing RTCP context.
Definition rtcp.c:924
janus_rtcp_get_sender_ssrc
guint32 janus_rtcp_get_sender_ssrc(char *packet, int len)
Method to quickly retrieve the sender SSRC (needed for demuxing RTCP in BUNDLE).
Definition rtcp.c:56
janus_rtcp_get_remb
uint32_t janus_rtcp_get_remb(char *packet, int len)
Inspect an existing RTCP REMB message to retrieve the reported bitrate.
Definition rtcp.c:1303
janus_rtcp_has_pli
gboolean janus_rtcp_has_pli(char *packet, int len)
Method to check whether an RTCP message contains a PLI request.
Definition rtcp.c:1148
janus_rtcp_context_get_in_media_link_quality
uint32_t janus_rtcp_context_get_in_media_link_quality(janus_rtcp_context *ctx)
Method to retrieve inbound media link quality from an existing RTCP context.
Definition rtcp.c:916
janus_rtcp_check_rr
gboolean janus_rtcp_check_rr(janus_rtcp_header *rtcp, int len)
Method to check if a RTCP packet could contain a Receiver Report.
Definition rtcp.c:445
janus_rtcp_filter
char * janus_rtcp_filter(char *packet, int len, int *newlen)
Method to filter an outgoing RTCP message (http://tools.ietf.org/html/draft-ietf-straw-b2bua-rtcp-00)...
Definition rtcp.c:745
janus_rtcp_bye
rtcp_bye janus_rtcp_bye
Definition rtcp.h:134
janus_rtcp_context_get_lost_all
uint32_t janus_rtcp_context_get_lost_all(janus_rtcp_context *ctx, gboolean remote)
Method to retrieve the total number of lost packets from an existing RTCP context.
Definition rtcp.c:928
janus_rtcp_cap_remb
int janus_rtcp_cap_remb(char *packet, int len, uint32_t bitrate)
Method to modify an existing RTCP REMB message to cap the reported bitrate.
Definition rtcp.c:1347
janus_rtcp_check_len
gboolean janus_rtcp_check_len(janus_rtcp_header *rtcp, int len)
Method to check that a RTCP packet size is at least the minimum necessary (8 bytes) and to validate t...
Definition rtcp.c:418
janus_rtcp_nack
rtcp_nack janus_rtcp_nack
Definition rtcp.h:153
janus_rtcp_fb_fir
rtcp_fir janus_rtcp_fb_fir
Definition rtcp.h:185
janus_rtcp_context_get_in_link_quality
uint32_t janus_rtcp_context_get_in_link_quality(janus_rtcp_context *ctx)
Method to retrieve inbound link quality from an existing RTCP context.
Definition rtcp.c:912
janus_rtcp_pli
int janus_rtcp_pli(char *packet, int len)
Method to generate a new RTCP PLI message to request a key frame.
Definition rtcp.c:1511
janus_rtcp_fix_ssrc
int janus_rtcp_fix_ssrc(janus_rtcp_context *ctx, char *packet, int len, int fixssrc, uint32_t newssrcl, uint32_t newssrcr)
Method to fix an RTCP message (http://tools.ietf.org/html/draft-ietf-straw-b2bua-rtcp-00).
Definition rtcp.c:506
extended_report_block
RTCP Extended Report Block (https://tools.ietf.org/html/rfc3611#section-3).
Definition rtcp.h:204
extended_report_block::blocktype
uint8_t blocktype
Block type (BT).
Definition rtcp.h:206
extended_report_block::length
uint16_t length
Block length.
Definition rtcp.h:210
extended_report_block::content
char content[1]
Content (variable length).
Definition rtcp.h:212
extended_report_block::typesp
uint8_t typesp
Type-specific.
Definition rtcp.h:208
janus_nack
Janus representation (linked list) of sequence numbers to send again.
Definition rtcp.h:156
janus_nack::next
struct janus_nack * next
Next element in the linked list.
Definition rtcp.h:160
janus_nack::seq_no
uint16_t seq_no
Sequence number to send again.
Definition rtcp.h:158
report_block
RTCP Report Block (http://tools.ietf.org/html/rfc3550#section-6.4.1).
Definition rtcp.h:76
report_block::lsr
uint32_t lsr
Definition rtcp.h:81
report_block::delay
uint32_t delay
Definition rtcp.h:82
report_block::ehsnr
uint32_t ehsnr
Definition rtcp.h:79
report_block::flcnpl
uint32_t flcnpl
Definition rtcp.h:78
report_block::jitter
uint32_t jitter
Definition rtcp.h:80
report_block::ssrc
uint32_t ssrc
Definition rtcp.h:77
rtcp_app
RTCP APP (http://tools.ietf.org/html/rfc3550#section-6.7).
Definition rtcp.h:138
rtcp_app::ssrc
uint32_t ssrc
Definition rtcp.h:140
rtcp_app::name
char name[4]
Definition rtcp.h:141
rtcp_app::header
rtcp_header header
Definition rtcp.h:139
rtcp_bye
RTCP BYE (http://tools.ietf.org/html/rfc3550#section-6.6).
Definition rtcp.h:130
rtcp_bye::header
rtcp_header header
Definition rtcp.h:131
rtcp_bye::ssrc
uint32_t ssrc[1]
Definition rtcp.h:132
rtcp_context
Internal RTCP state context (for RR/SR).
Definition rtcp.h:229
rtcp_context::expected_prior
uint32_t expected_prior
Definition rtcp.h:262
rtcp_context::rtp_last_inorder_ts
uint32_t rtp_last_inorder_ts
Definition rtcp.h:232
rtcp_context::rr_last_ts
int64_t rr_last_ts
Definition rtcp.h:269
rtcp_context::sent_packets_since_last_rr
gint sent_packets_since_last_rr
Definition rtcp.h:273
rtcp_context::in_media_link_quality
double in_media_link_quality
Definition rtcp.h:278
rtcp_context::lost_remote
uint32_t lost_remote
Definition rtcp.h:263
rtcp_context::in_link_quality
double in_link_quality
Definition rtcp.h:277
rtcp_context::rtt
uint32_t rtt
Definition rtcp.h:256
rtcp_context::jitter
double jitter
Definition rtcp.h:243
rtcp_context::jitter_remote
double jitter_remote
Definition rtcp.h:243
rtcp_context::rr_last_ehsnr
uint32_t rr_last_ehsnr
Definition rtcp.h:270
rtcp_context::retransmitted
uint32_t retransmitted
Definition rtcp.h:265
rtcp_context::expected
uint32_t expected
Definition rtcp.h:261
rtcp_context::pt
uint16_t pt
Definition rtcp.h:239
rtcp_context::tb
uint32_t tb
Definition rtcp.h:245
rtcp_context::received
uint32_t received
Definition rtcp.h:259
rtcp_context::out_media_link_quality
double out_media_link_quality
Definition rtcp.h:280
rtcp_context::rtp_last_inorder_time
int64_t rtp_last_inorder_time
Definition rtcp.h:233
rtcp_context::rr_last_nack_count
uint32_t rr_last_nack_count
Definition rtcp.h:272
rtcp_context::lost
uint32_t lost
Definition rtcp.h:263
rtcp_context::lsr
uint32_t lsr
Definition rtcp.h:248
rtcp_context::base_seq
uint16_t base_seq
Definition rtcp.h:237
rtcp_context::seq_cycle
uint16_t seq_cycle
Definition rtcp.h:236
rtcp_context::rr_last_lost
uint32_t rr_last_lost
Definition rtcp.h:271
rtcp_context::out_link_quality
double out_link_quality
Definition rtcp.h:279
rtcp_context::lsr_ts
int64_t lsr_ts
Definition rtcp.h:250
rtcp_context::max_seq_nr
uint16_t max_seq_nr
Definition rtcp.h:235
rtcp_context::rtp_recvd
uint8_t rtp_recvd
Definition rtcp.h:231
rtcp_context::last_sent
int64_t last_sent
Definition rtcp.h:253
rtcp_context::nack_count
gint nack_count
Definition rtcp.h:274
rtcp_context::transit
int64_t transit
Definition rtcp.h:242
rtcp_context::retransmitted_prior
uint32_t retransmitted_prior
Definition rtcp.h:266
rtcp_context::received_prior
uint32_t received_prior
Definition rtcp.h:260
rtcp_fb
RTCP-FB (http://tools.ietf.org/html/rfc4585).
Definition rtcp.h:190
rtcp_fb::fci
char fci[1]
Feedback Control Information.
Definition rtcp.h:198
rtcp_fb::ssrc
uint32_t ssrc
Sender SSRC.
Definition rtcp.h:194
rtcp_fb::header
rtcp_header header
Common header.
Definition rtcp.h:192
rtcp_fb::media
uint32_t media
Media source.
Definition rtcp.h:196
rtcp_fir
RTCP FIR (http://tools.ietf.org/search/rfc5104#section-4.3.1.1).
Definition rtcp.h:179
rtcp_fir::seqnr
uint32_t seqnr
Sequence number (only the first 8 bits are used, the other 24 are reserved).
Definition rtcp.h:183
rtcp_fir::ssrc
uint32_t ssrc
SSRC of the media sender that needs to send a key frame.
Definition rtcp.h:181
rtcp_header
RTCP Header (http://tools.ietf.org/html/rfc3550#section-6.1).
Definition rtcp.h:47
rtcp_header::type
uint16_t type
Definition rtcp.h:52
rtcp_header::rc
uint16_t rc
Definition rtcp.h:51
rtcp_header::length
uint16_t length
Definition rtcp.h:59
rtcp_header::padding
uint16_t padding
Definition rtcp.h:50
rtcp_header::version
uint16_t version
Definition rtcp.h:49
rtcp_nack
RTCP NACK (http://tools.ietf.org/html/rfc4585#section-6.2.1).
Definition rtcp.h:147
rtcp_nack::pid
uint16_t pid
Packet ID.
Definition rtcp.h:149
rtcp_nack::blp
uint16_t blp
bitmask of following lost packets
Definition rtcp.h:151
rtcp_remb
RTCP REMB (http://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03).
Definition rtcp.h:166
rtcp_remb::bitrate
uint32_t bitrate
Num SSRC, Br Exp, Br Mantissa (bit mask).
Definition rtcp.h:170
rtcp_remb::ssrc
uint32_t ssrc[3]
SSRC feedback (we expect at max three SSRCs in there).
Definition rtcp.h:172
rtcp_rr
RTCP Receiver Report (http://tools.ietf.org/html/rfc3550#section-6.4.2).
Definition rtcp.h:98
rtcp_rr::ssrc
uint32_t ssrc
Definition rtcp.h:100
rtcp_rr::header
rtcp_header header
Definition rtcp.h:99
rtcp_rr::rb
report_block rb[1]
Definition rtcp.h:101
rtcp_sdes_chunk
RTCP SDES (http://tools.ietf.org/html/rfc3550#section-6.5).
Definition rtcp.h:107
rtcp_sdes_chunk::ssrc
uint32_t ssrc
Definition rtcp.h:108
rtcp_sdes_item
Definition rtcp.h:113
rtcp_sdes_item::content
char content[1]
Definition rtcp.h:116
rtcp_sdes_item::len
uint8_t len
Definition rtcp.h:115
rtcp_sdes_item::type
uint8_t type
Definition rtcp.h:114
rtcp_sdes
Definition rtcp.h:121
rtcp_sdes::item
rtcp_sdes_item item
Definition rtcp.h:124
rtcp_sdes::header
rtcp_header header
Definition rtcp.h:122
rtcp_sdes::chunk
rtcp_sdes_chunk chunk
Definition rtcp.h:123
rtcp_sr
RTCP Sender Report (http://tools.ietf.org/html/rfc3550#section-6.4.1).
Definition rtcp.h:88
rtcp_sr::si
sender_info si
Definition rtcp.h:91
rtcp_sr::header
rtcp_header header
Definition rtcp.h:89
rtcp_sr::rb
report_block rb[1]
Definition rtcp.h:92
rtcp_sr::ssrc
uint32_t ssrc
Definition rtcp.h:90
rtcp_transport_wide_cc_stats
Stores transport wide packet reception statistics.
Definition rtcp.h:289
rtcp_transport_wide_cc_stats::timestamp
guint64 timestamp
Reception time.
Definition rtcp.h:293
rtcp_transport_wide_cc_stats::transport_seq_num
guint32 transport_seq_num
Transwport wide sequence number.
Definition rtcp.h:291
rtcp_xr
RTCP Extended Report (https://tools.ietf.org/html/rfc3611#section-2).
Definition rtcp.h:219
rtcp_xr::erb
extended_report_block erb[1]
Definition rtcp.h:222
rtcp_xr::ssrc
uint32_t ssrc
Definition rtcp.h:221
rtcp_xr::header
rtcp_header header
Definition rtcp.h:220
sender_info
RTCP Sender Information (http://tools.ietf.org/html/rfc3550#section-6.4.1).
Definition rtcp.h:65
sender_info::rtp_ts
uint32_t rtp_ts
Definition rtcp.h:68
sender_info::ntp_ts_msw
uint32_t ntp_ts_msw
Definition rtcp.h:66
sender_info::s_packets
uint32_t s_packets
Definition rtcp.h:69
sender_info::s_octets
uint32_t s_octets
Definition rtcp.h:70
sender_info::ntp_ts_lsw
uint32_t ntp_ts_lsw
Definition rtcp.h:67