diff options
author | Joshua Colp <jcolp@digium.com> | 2017-09-16 11:19:59 -0300 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2017-09-21 17:18:25 +0000 |
commit | 693c06f8a3d668289ef0178647ef67c6a24d664c (patch) | |
tree | 98d9a79ccd02f7400ff22051a1bd25341af1f94f /channels | |
parent | 037f85d5abba0b1254c403789da412ec6a3e83ce (diff) |
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
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_iax2.c | 1 | ||||
-rw-r--r-- | channels/chan_pjsip.c | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 490c4cea5..04aa228bf 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -1433,6 +1433,7 @@ static int iax2_is_control_frame_allowed(int subtype) /* Intended only for internal stream topology manipulation. */ case AST_CONTROL_STREAM_TOPOLOGY_CHANGED: /* Intended only for internal stream topology change notification. */ + case AST_CONTROL_STREAM_TOPOLOGY_SOURCE_CHANGED: case AST_CONTROL_STREAM_STOP: case AST_CONTROL_STREAM_SUSPEND: case AST_CONTROL_STREAM_RESTART: diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index 84b508b61..7520c2b0e 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -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; |