bridge: Change participant SFU streams when source streams change.
authorJoshua Colp <jcolp@digium.com>
Sat, 16 Sep 2017 14:19:59 +0000 (11:19 -0300)
committerJoshua Colp <jcolp@digium.com>
Thu, 21 Sep 2017 17:20:02 +0000 (12:20 -0500)
commitf2985e310663b67ccc948515efeae500bdf94a0c
tree311acb73d162a6611503b0e859b4576f7b6426d8
parent5ff46578aa20921cf3649809a9be9b7231acc507
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
bridges/bridge_softmix.c
channels/chan_iax2.c
channels/chan_pjsip.c
funcs/func_frame_trace.c
include/asterisk/frame.h
include/asterisk/res_pjsip_session.h
main/channel.c
res/res_pjsip_sdp_rtp.c
res/res_pjsip_session.c