60#define RTP_MAX_MTU 9000
61#define RTP_MAX_PACKET_LEN (RTP_MAX_MTU+RTP_PACKET_HEADER_SIZE+MAX_PADDING)
71#if !defined __BYTE_ORDER__ || __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ && \
72 __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__
73#error RTP library requires __BYTE_ORDER__ to be either __ORDER_LITTLE_ENDIAN__\
74 or __ORDER_BIG_ENDIAN__
104#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
128#define RTP_PACKET_HEADER_SIZE ((int) (offsetof(rtp_packet, extn_type) - offsetof(rtp_packet, csrc) + sizeof ((rtp_packet *) 0)->extn_type))
141#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
145 uint32_t total_lost:24;
146 uint32_t fract_lost:8;
162#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
167 unsigned short subtype:5;
169 unsigned short version:2;
205typedef rtcp_app* (*rtcp_app_callback)(
struct rtp *session, uint32_t rtp_ts,
int max_size);
244 uint16_t rx_port, uint16_t tx_port,
245 int ttl,
double rtcp_bw,
251 uint16_t rx_port, uint16_t tx_port,
252 int ttl,
double rtcp_bw,
266 struct timeval *timeout, uint32_t curr_rtp_ts)
__attribute__((deprecated));
268 struct timeval *timeout, uint32_t curr_rtp_ts);
270 struct timeval *timeout, uint32_t curr_rtp_ts);
272 struct timeval *timeout, uint32_t curr_rtp_ts);
276 uint32_t rtp_ts,
char pt,
int m,
277 int cc,
const uint32_t *csrc,
278 char *data,
int data_len,
279 char *extn, uint16_t extn_len, uint16_t extn_type);
281 uint32_t rtp_ts,
char pt,
int m,
282 int cc,
const uint32_t *csrc,
283 char *phdr,
int phdr_len,
284 char *data,
int data_len,
285 char *extn, uint16_t extn_len, uint16_t extn_type);
296 const char *value,
int length);
bool rtp_add_csrc(struct rtp *session, uint32_t csrc)
rtp_t rtp_init_if(const char *addr, const char *iface, uint16_t rx_port, uint16_t tx_port, int ttl, double rtcp_bw, int tfrc_on, rtp_callback callback, uint8_t *userdata, int force_ip_version, bool multithreaded)
bool rtp_set_send_buf(struct rtp *session, int bufsize)
rtp_t rtp_init(const char *addr, uint16_t rx_port, uint16_t tx_port, int ttl, double rtcp_bw, int tfrc_on, rtp_callback callback, uint8_t *userdata, int force_ip_version, bool multithreaded)
void rtp_flush_recv_buf(struct rtp *session)
bool rtp_set_recv_buf(struct rtp *session, int bufsize)
bool rtp_set_option(struct rtp *session, rtp_option optname, int optval)
const rtcp_rr * rtp_get_rr(struct rtp *session, uint32_t reporter, uint32_t reportee)
int rtp_compute_fract_lost(struct rtp *session, uint32_t ssrc)
const rtcp_sr * rtp_get_sr(struct rtp *session, uint32_t ssrc)
rtp_t rtp_init_with_udp_socket(struct socket_udp_local *l, struct sockaddr *sa, socklen_t len, rtp_callback callback)
int rtp_send_raw_rtp_data(struct rtp *session, char *buffer, int buffer_len)
void rtp_update(struct rtp *session, time_ns_t curr_time)
int rtp_send_data_hdr(struct rtp *session, uint32_t rtp_ts, char pt, int m, int cc, const uint32_t *csrc, char *phdr, int phdr_len, char *data, int data_len, char *extn, uint16_t extn_len, uint16_t extn_type)
bool rtp_get_option(struct rtp *session, rtp_option optname, int *optval)
uint32_t rtp_my_ssrc(struct rtp *session)
void rtp_send_ctrl(struct rtp *session, uint32_t rtp_ts, rtcp_app_callback appcallback, time_ns_t curr_time)
bool rtp_set_sdes(struct rtp *session, uint32_t ssrc, rtcp_sdes_type type, const char *value, int length)
bool rtp_has_receiver(struct rtp *session)
uint8_t * rtp_get_userdata(struct rtp *session)
int rtp_get_recv_buf(struct rtp *session)
int rtp_get_udp_rx_port(struct rtp *session)
bool rtp_recv_r(struct rtp *session, struct timeval *timeout, uint32_t curr_rtp_ts)
Receive RTP packets and dispatch them.
bool rtp_recv(struct rtp *session, struct timeval *timeout, uint32_t curr_rtp_ts) __attribute__((deprecated))
@ RTP_OPT_REUSE_PACKET_BUFS
@ RTP_OPT_FILTER_MY_PACKETS
@ RTP_OPT_WEAK_VALIDATION
int rtp_recv_poll_r(struct rtp **sessions, struct timeval *timeout, uint32_t curr_rtp_ts)
void rtp_set_recv_iov(struct rtp *session, struct msghdr *m)
uint64_t rtp_get_bytes_sent(struct rtp *session)
bool rtp_is_ipv6(struct rtp *session)
void(* rtp_callback)(struct rtp *session, rtp_event *e)
bool rtp_del_csrc(struct rtp *session, uint32_t csrc)
bool rtp_set_encryption_key(struct rtp *session, const char *passphrase)
struct __attribute__((packed))
struct socket_udp_local * rtp_get_udp_local_socket(struct rtp *session)
int rtp_send_data(struct rtp *session, uint32_t rtp_ts, char pt, int m, int cc, const uint32_t *csrc, char *data, int data_len, char *extn, uint16_t extn_len, uint16_t extn_type)
void rtp_async_wait(struct rtp *session)
bool rtcp_recv_r(struct rtp *session, struct timeval *timeout, uint32_t curr_rtp_ts)
void rtp_async_start(struct rtp *session, int nr_packets)
bool rtp_set_my_ssrc(struct rtp *session, uint32_t ssrc)
const char * rtp_get_sdes(struct rtp *session, uint32_t ssrc, rtcp_sdes_type type)
void rtp_send_bye(struct rtp *session)
void rtp_done(struct rtp *session)
rtcp_app *(* rtcp_app_callback)(struct rtp *session, uint32_t rtp_ts, int max_size)
Option::Callback::fcn_type callback