bridge: Change participant SFU streams when source streams change.

Some endpoints do not like a stream being reused for a new
media stream. The frame/jitterbuffer can rely on underlying
attributes of the media stream in order to order the packets.
When a new stream takes its place without any notice the
buffer can get confused and the media ends up getting dropped.

This change uses the SSRC change to determine that a new source
is reusing an existing stream and then bridge_softmix renegotiates
each participant such that they see a new media stream. This
causes the frame/jitterbuffer to start fresh and work as expected.

ASTERISK-27277

Change-Id: I30ccbdba16ca073d7f31e0e59ab778c153afae07
This commit is contained in:
Joshua Colp
2017-09-16 11:19:59 -03:00
parent 5ff46578aa
commit f2985e3106
9 changed files with 162 additions and 9 deletions

View File

@@ -1740,6 +1740,8 @@ static int chan_pjsip_indicate(struct ast_channel *ast, int condition, const voi
break;
case AST_CONTROL_STREAM_TOPOLOGY_CHANGED:
break;
case AST_CONTROL_STREAM_TOPOLOGY_SOURCE_CHANGED:
break;
case -1:
res = -1;
break;