Browse Source

MT#57719 Move `a=ssrc-group` attribute via `stream_params`

Move `a=ssrc-group:` attribute to the `call_media`'s
`sdp_attributes` using `stream_params`.

Required by the `insert_sdp_attributes()` used in `sdp_create()`.

Change-Id: I67025dc83dd8e5e46422b6dc1bc54aa9c838dfea
pull/1752/head
Donat Zenichev 2 years ago
parent
commit
bd11d22157
3 changed files with 14 additions and 1 deletions
  1. +1
    -0
      daemon/call.c
  2. +12
    -0
      daemon/sdp.c
  3. +1
    -1
      t/auto-daemon-tests-websocket.py

+ 1
- 0
daemon/call.c View File

@ -2723,6 +2723,7 @@ static void __media_init_from_flags(struct call_media *other_media, struct call_
/* moved as plain text attributes, required later by sdp_create() /* moved as plain text attributes, required later by sdp_create()
* ssrc * ssrc
* other (unknown type) * other (unknown type)
* ssrc-group
*/ */
if (media && additional_attributes && additional_attributes->head) { if (media && additional_attributes && additional_attributes->head) {
g_queue_clear_full(&media->sdp_attributes, free); g_queue_clear_full(&media->sdp_attributes, free);


+ 12
- 0
daemon/sdp.c View File

@ -232,6 +232,7 @@ struct sdp_attribute {
ATTR_ICE_PWD, ATTR_ICE_PWD,
ATTR_CRYPTO, ATTR_CRYPTO,
ATTR_SSRC, ATTR_SSRC,
ATTR_SSRC_GROUP,
ATTR_INACTIVE, ATTR_INACTIVE,
ATTR_SENDRECV, ATTR_SENDRECV,
ATTR_SENDONLY, ATTR_SENDONLY,
@ -1073,6 +1074,9 @@ static int parse_attribute(struct sdp_attribute *a) {
case CSH_LOOKUP("rtcp"): case CSH_LOOKUP("rtcp"):
ret = parse_attribute_rtcp(a); ret = parse_attribute_rtcp(a);
break; break;
case CSH_LOOKUP("ssrc-group"):
a->attr = ATTR_SSRC_GROUP;
break;
case CSH_LOOKUP("ssrc"): case CSH_LOOKUP("ssrc"):
ret = parse_attribute_ssrc(a); ret = parse_attribute_ssrc(a);
break; break;
@ -1810,6 +1814,14 @@ int sdp_streams(const GQueue *sessions, GQueue *streams, struct sdp_ng_flags *fl
cps->params.session_params.unauthenticated_srtp = attr->crypto.unauthenticated_srtp; cps->params.session_params.unauthenticated_srtp = attr->crypto.unauthenticated_srtp;
} }
/* a=ssrc-group, move it via plain text attributes, required by sdp_create() */
attr = attr_get_by_id_m_s(media, ATTR_SSRC_GROUP);
if (attr) {
str * ret = str_dup(&attr->line_value);
g_queue_push_tail(&sp->attributes, ret);
}
/* a=ssrc, move them via plain text attributes, required later by sdp_create() */ /* a=ssrc, move them via plain text attributes, required later by sdp_create() */
attrs = attr_list_get_by_id(&media->attributes, ATTR_SSRC); attrs = attr_list_get_by_id(&media->attributes, ATTR_SSRC);
for (GList *ll = attrs ? attrs->head : NULL; ll; ll = ll->next) { for (GList *ll = attrs ? attrs->head : NULL; ll; ll = ll->next) {


+ 1
- 1
t/auto-daemon-tests-websocket.py View File

@ -1749,6 +1749,7 @@ class TestVideoroom(unittest.TestCase):
"a=rtcp-fb:96 ccm fir\r\n" "a=rtcp-fb:96 ccm fir\r\n"
"a=rtcp-fb:96 nack\r\n" "a=rtcp-fb:96 nack\r\n"
"a=rtcp-fb:96 nack pli\r\n" "a=rtcp-fb:96 nack pli\r\n"
"a=ssrc-group:FID 3005569364 2001490794\r\n"
"a=ssrc:3005569364 cname:NMNDwVd66x2SfiO0\r\n" "a=ssrc:3005569364 cname:NMNDwVd66x2SfiO0\r\n"
"a=ssrc:3005569364 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" "a=ssrc:3005569364 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n"
"a=ssrc:3005569364 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" "a=ssrc:3005569364 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n"
@ -1759,7 +1760,6 @@ class TestVideoroom(unittest.TestCase):
"a=ssrc:2001490794 label:6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" "a=ssrc:2001490794 label:6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n"
"a=msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" "a=msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n"
"a=rtcp-rsize\r\n" "a=rtcp-rsize\r\n"
"a=ssrc-group:FID 3005569364 2001490794\r\n"
"a=sendonly\r\n" "a=sendonly\r\n"
"a=rtcp-mux\r\n" "a=rtcp-mux\r\n"
"a=setup:actpass\r\n" "a=setup:actpass\r\n"


Loading…
Cancel
Save