MT#56465 bandwidth: don't add session lvl for subscribe req

Don't add session level bandwidth for subscribe requests,
because it's anyway mixing different medias from all parties
in one SDP and cannot really apply session level (so global)
bandwidth taken from one of the medias, to all medias.

Change-Id: If8fb5358cdae897ca811a3bd565d8be055e2101e
pull/1880/head
Donat Zenichev 1 year ago
parent 98c037baf3
commit e051a68dae

@ -315,7 +315,7 @@ static struct call_media *sdp_out_set_source_media_address(struct call_media *me
const endpoint_t **sdp_address);
static void sdp_out_add_bandwidth(GString *out, struct call_monologue *monologue,
struct call_media *media);
struct call_media *media, sdp_ng_flags *flags);
static void sdp_out_add_media_connection(GString *out, struct call_media *media,
struct packet_stream *rtp_ps, const sockaddr_t *address, sdp_ng_flags *flags);
static void sdp_out_original_media_attributes(GString *out, struct call_media *media,
@ -2669,7 +2669,7 @@ static void print_sdp_media_section(GString *s, struct call_media *media,
sdp_out_add_media_connection(s, media, rtp_ps, (inactive_media ? NULL : &address->address), flags);
/* add per media bandwidth */
sdp_out_add_bandwidth(s, monologue, media);
sdp_out_add_bandwidth(s, monologue, media, flags);
/* mid and label must be added even for inactive streams (see #1361 and #1362). */
if (media->media_id.s)
@ -2850,7 +2850,7 @@ static void sdp_out_add_other(GString *out, struct call_monologue *monologue,
}
static void sdp_out_add_bandwidth(GString *out, struct call_monologue *monologue,
struct call_media *media)
struct call_media *media, sdp_ng_flags *flags)
{
/* if there's a media given, only do look up the values for that one */
if (media) {
@ -2871,7 +2871,8 @@ static void sdp_out_add_bandwidth(GString *out, struct call_monologue *monologue
/* sdp bandwidth per session/media level
* 0 value is supported (e.g. b=RR:0 and b=RS:0), to be able to disable rtcp */
struct media_subscription *ms = call_ml_get_top_ms(monologue);
if (!ms || !ms->monologue)
/* don't add session level bandwidth for subscribe requests */
if (!ms || !ms->monologue || flags->opmode == OP_REQUEST)
return;
if (ms->monologue->sdp_session_bandwidth.as >= 0)
g_string_append_printf(out, "b=AS:%ld\r\n", ms->monologue->sdp_session_bandwidth.as);
@ -3008,7 +3009,7 @@ static void sdp_out_original_media_attributes(GString *out, struct call_media *m
struct packet_stream *rtp_ps, sdp_ng_flags *flags)
{
sdp_out_add_media_connection(out, media, rtp_ps, &address->address, flags);
sdp_out_add_bandwidth(out, source_media->monologue, media);
sdp_out_add_bandwidth(out, source_media->monologue, media, flags);
sdp_insert_all_attributes(out, source_media, flags);
if (MEDIA_ISSET(source_media, ICE)) {
struct packet_stream *rtcp_ps = rtp_ps->rtcp_sibling;
@ -3115,7 +3116,7 @@ int sdp_create(str *out, struct call_monologue *monologue, sdp_ng_flags *flags)
* but instead per media, below */
/* add bandwidth control per session level */
sdp_out_add_bandwidth(s, monologue, NULL);
sdp_out_add_bandwidth(s, monologue, NULL, flags);
/* set timing to always be: 0 0 */
sdp_out_add_timing(s, monologue);

Loading…
Cancel
Save