|
|
|
@ -2034,17 +2034,22 @@ static void insert_codec_parameters(GString *s, struct call_media *cm, |
|
|
|
if (!pt->encoding_with_params.len) |
|
|
|
continue; |
|
|
|
|
|
|
|
GString * s_dst = g_string_new(""); |
|
|
|
|
|
|
|
/* rtpmap */ |
|
|
|
{ |
|
|
|
g_string_append_printf(s, "a=rtpmap:%u " STR_FORMAT "\r\n", |
|
|
|
g_string_append_printf(s_dst, "a=rtpmap:%u " STR_FORMAT, |
|
|
|
pt->payload_type, |
|
|
|
STR_FMT(&pt->encoding_with_params)); |
|
|
|
/* append to the chop->output */ |
|
|
|
append_attr_to_gstring(s, s_dst->str, NULL, flags, |
|
|
|
(cm ? cm->type_id : MT_UNKNOWN)); |
|
|
|
g_string_truncate(s_dst, 0); |
|
|
|
} |
|
|
|
|
|
|
|
/* fmtp */ |
|
|
|
{ |
|
|
|
bool check_format = true; |
|
|
|
GString * s_dst = g_string_new(""); |
|
|
|
if (pt->codec_def && pt->codec_def->format_print) { |
|
|
|
g_string_append_printf(s_dst, "a=fmtp:%u ", pt->payload_type); |
|
|
|
gsize fmtp_len = s_dst->len; |
|
|
|
@ -2064,18 +2069,24 @@ static void insert_codec_parameters(GString *s, struct call_media *cm, |
|
|
|
append_attr_to_gstring(s, s_dst->str, NULL, flags, |
|
|
|
(cm ? cm->type_id : MT_UNKNOWN)); |
|
|
|
} |
|
|
|
g_string_free(s_dst, TRUE); |
|
|
|
g_string_truncate(s_dst, 0); |
|
|
|
} |
|
|
|
|
|
|
|
/* rtcp-fb */ |
|
|
|
{ |
|
|
|
for (GList *k = pt->rtcp_fb.head; k; k = k->next) { |
|
|
|
str *fb = k->data; |
|
|
|
g_string_append_printf(s, "a=rtcp-fb:%u " STR_FORMAT "\r\n", |
|
|
|
g_string_truncate(s_dst, 0); /* don't forget to clear for each cycle */ |
|
|
|
g_string_append_printf(s_dst, "a=rtcp-fb:%u " STR_FORMAT, |
|
|
|
pt->payload_type, |
|
|
|
STR_FMT(fb)); |
|
|
|
/* append to the chop->output */ |
|
|
|
append_attr_to_gstring(s, s_dst->str, NULL, flags, |
|
|
|
(cm ? cm->type_id : MT_UNKNOWN)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
g_string_free(s_dst, TRUE); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|