10#include <netinet/in.h>
17#if defined(__MINGW32__) || defined(__MINGW64__) || defined(__GNUC__) || defined(__linux__)
18#define PACK(__Declaration__) __Declaration__ __attribute__((__packed__))
20#define PACK(__Declaration__) __pragma(pack(push, 1)) __Declaration__ __pragma(pack(pop))
26 enum RTCP_FRAME_TYPE {
34 PACK(
struct rtp_header {
42 uint32_t timestamp = 0;
46 PACK(
struct ext_header {
49 uint8_t *data =
nullptr;
54 struct rtp_header header;
55 uint32_t *csrc =
nullptr;
56 struct ext_header *ext =
nullptr;
58 size_t padding_len = 0;
65 uint8_t* payload =
nullptr;
68 uint8_t *dgram =
nullptr;
69 size_t dgram_size = 0;
100 uint32_t pkt_cnt = 0;
108 uint8_t fraction = 0;
110 uint32_t last_seq = 0;
120 std::vector<rtcp_report_block> report_blocks;
128 std::vector<rtcp_report_block> report_blocks;
135 uint8_t *data =
nullptr;
141 std::vector<rtcp_sdes_item> items;
147 std::vector<rtcp_sdes_chunk> chunks;
154 uint8_t name[4] = {0};
155 uint8_t *payload =
nullptr;
160 PACK(
struct zrtp_frame {
181 rtp_frame *alloc_rtp_frame();
182 rtp_frame *alloc_rtp_frame(
size_t payload_len);
199 void* alloc_zrtp_frame(
size_t payload_size);
206 rtp_error_t dealloc_frame(uvgrtp::frame::zrtp_frame* frame);
210namespace uvg_rtp = uvgrtp;
size_t payload_len
Size of the payload in bytes. Added by uvgRTP to help process the payload.
See RFC 3550 section 6.4.2
See RFC 3550 section 6.4.1
See RFC 3550 section 6.4.1
uint32_t rtp_ts
RTP timestamp corresponding to this NTP timestamp.
uint32_t byte_cnt
Also known as octet count.
uint32_t ntp_lsw
NTP timestamp, least significant word.
uint32_t ntp_msw
NTP timestamp, most significant word.
See RFC 3550 section 6.4.1
size_t payload_len
Length of the packet payload in bytes added by uvgRTP to help process the frame.