summaryrefslogtreecommitdiff
path: root/main/channel.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2017-09-16 11:19:59 -0300
committerJoshua Colp <jcolp@digium.com>2017-09-21 17:18:25 +0000
commit693c06f8a3d668289ef0178647ef67c6a24d664c (patch)
tree98d9a79ccd02f7400ff22051a1bd25341af1f94f /main/channel.c
parent037f85d5abba0b1254c403789da412ec6a3e83ce (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 'main/channel.c')
-rw-r--r--main/channel.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/main/channel.c b/main/channel.c
index 74de9caac..ecc771c1d 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -4228,6 +4228,7 @@ static int attribute_const is_visible_indication(enum ast_control_frame_type con
case AST_CONTROL_MASQUERADE_NOTIFY:
case AST_CONTROL_STREAM_TOPOLOGY_REQUEST_CHANGE:
case AST_CONTROL_STREAM_TOPOLOGY_CHANGED:
+ case AST_CONTROL_STREAM_TOPOLOGY_SOURCE_CHANGED:
case AST_CONTROL_STREAM_STOP:
case AST_CONTROL_STREAM_SUSPEND:
case AST_CONTROL_STREAM_REVERSE:
@@ -4528,6 +4529,7 @@ static int indicate_data_internal(struct ast_channel *chan, int _condition, cons
case AST_CONTROL_UPDATE_RTP_PEER:
case AST_CONTROL_STREAM_TOPOLOGY_REQUEST_CHANGE:
case AST_CONTROL_STREAM_TOPOLOGY_CHANGED:
+ case AST_CONTROL_STREAM_TOPOLOGY_SOURCE_CHANGED:
case AST_CONTROL_STREAM_STOP:
case AST_CONTROL_STREAM_SUSPEND:
case AST_CONTROL_STREAM_REVERSE: