Browse Source

MT#63317 rework RTCP printing code

Change-Id: Iae0fa0f509857183dfb0bcc091a1af2648d6879c
rfuchs/dtls-ice
Richard Fuchs 3 months ago
parent
commit
5a287014c0
1 changed files with 15 additions and 13 deletions
  1. +15
    -13
      daemon/rtcp.c

+ 15
- 13
daemon/rtcp.c View File

@ -1505,34 +1505,36 @@ static GString *rtcp_sender_report(struct ssrc_sender_report *ssr,
sr->rtcp.header.length = htons((ret->len >> 2) - 1);
// sdes
assert(rtpe_instance_id.len == 12);
// cname
struct {
struct source_description_packet sdes;
struct sdes_chunk chunk;
struct sdes_item cname;
char str[12];
char nul;
char pad;
} __attribute__ ((packed)) *sdes;
assert(sizeof(*sdes) == 24);
g_string_set_size(ret, ret->len + sizeof(*sdes));
sdes = (void *) ret->str + ret->len - sizeof(*sdes);
size_t sdes_start_len = ret->len;
g_string_set_size(ret, sdes_start_len + sizeof(*sdes));
sdes = (void *) ret->str + sdes_start_len;
*sdes = (__typeof(*sdes)) {
.sdes.header.version = 2,
.sdes.header.pt = RTCP_PT_SDES,
.sdes.header.count = 1,
.sdes.header.length = htons((sizeof(*sdes) >> 2) - 1),
.chunk.ssrc = htonl(ssrc),
.cname.type = SDES_TYPE_CNAME,
.cname.length = rtpe_instance_id.len,
.nul = 0,
.pad = 0,
};
memcpy(sdes->str, rtpe_instance_id.s, rtpe_instance_id.len);
g_string_append_len(ret, rtpe_instance_id.s, rtpe_instance_id.len);
// padding and set final length
size_t sdes_end_len = ret->len;
size_t padded_len = (sdes_end_len + 3L) & ~3L;
g_string_set_size(ret, padded_len);
memset(ret->str + sdes_end_len, 0, padded_len - sdes_end_len);
// reset pointer for length field
sdes = (void *) ret->str + sdes_start_len;
sdes->sdes.header.length = htons((padded_len - sdes_start_len) / 4 - 1);
return ret;
}


Loading…
Cancel
Save