parent
0e2343f1a8
commit
ac644ee90d
|
@ -41,6 +41,9 @@ rtp_error_t kvz_rtp::frame::dealloc_frame(kvz_rtp::frame::rtp_frame *frame)
|
|||
if (frame->csrc)
|
||||
delete[] frame->csrc;
|
||||
|
||||
if (frame->ext)
|
||||
delete frame->ext;
|
||||
|
||||
if (frame->payload)
|
||||
delete[] frame->payload;
|
||||
|
||||
|
|
|
@ -41,9 +41,16 @@ namespace kvz_rtp {
|
|||
uint32_t ssrc;
|
||||
};
|
||||
|
||||
PACKED_STRUCT(ext_header) {
|
||||
uint16_t type;
|
||||
uint16_t len;
|
||||
uint8_t *data;
|
||||
};
|
||||
|
||||
struct rtp_frame {
|
||||
struct rtp_header header;
|
||||
uint32_t *csrc;
|
||||
struct ext_header *ext;
|
||||
|
||||
size_t padding_len; /* non-zero if frame is padded */
|
||||
size_t payload_len; /* payload_len: total_len - header_len - padding length (if padded) */
|
||||
|
|
|
@ -226,7 +226,13 @@ kvz_rtp::frame::rtp_frame *kvz_rtp::reader::validate_rtp_frame(uint8_t *buffer,
|
|||
|
||||
if (frame->header.ext) {
|
||||
LOG_DEBUG("frame contains extension information");
|
||||
/* TODO: handle extension */
|
||||
frame->ext = new kvz_rtp::frame::ext_header;
|
||||
|
||||
frame->ext->type = ntohs(*(uint16_t *)ptr[0]);
|
||||
frame->ext->len = ntohs(*(uint32_t *)ptr[1]);
|
||||
frame->ext->data = (uint8_t *)ptr + 4;
|
||||
|
||||
ptr += 2 * sizeof(uint16_t) + frame->ext->len;
|
||||
}
|
||||
|
||||
/* If padding is set to 1, the last byte of the payload indicates
|
||||
|
|
Loading…
Reference in New Issue