diff options
author | Joshua Colp <jcolp@digium.com> | 2017-09-16 11:19:59 -0300 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2017-09-21 12:20:02 -0500 |
commit | f2985e310663b67ccc948515efeae500bdf94a0c (patch) | |
tree | 311acb73d162a6611503b0e859b4576f7b6426d8 /include | |
parent | 5ff46578aa20921cf3649809a9be9b7231acc507 (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 'include')
-rw-r--r-- | include/asterisk/frame.h | 1 | ||||
-rw-r--r-- | include/asterisk/res_pjsip_session.h | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/include/asterisk/frame.h b/include/asterisk/frame.h index 8f0daccb7..eb6a6479a 100644 --- a/include/asterisk/frame.h +++ b/include/asterisk/frame.h @@ -301,6 +301,7 @@ enum ast_control_frame_type { AST_CONTROL_MASQUERADE_NOTIFY = 34, /*!< A masquerade is about to begin/end. (Never sent as a frame but directly with ast_indicate_data().) */ AST_CONTROL_STREAM_TOPOLOGY_REQUEST_CHANGE = 35, /*!< Channel indication that a stream topology change has been requested */ AST_CONTROL_STREAM_TOPOLOGY_CHANGED = 36, /*!< Channel indication that a stream topology change has occurred */ + AST_CONTROL_STREAM_TOPOLOGY_SOURCE_CHANGED = 37, /*!< Channel indication that one of the source streams has changed its source */ /* * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING diff --git a/include/asterisk/res_pjsip_session.h b/include/asterisk/res_pjsip_session.h index d5b6fa194..fcb14b79d 100644 --- a/include/asterisk/res_pjsip_session.h +++ b/include/asterisk/res_pjsip_session.h @@ -109,6 +109,8 @@ struct ast_sip_session_media { char mslabel[AST_UUID_STR_LEN]; /*! \brief Track label */ char label[AST_UUID_STR_LEN]; + /*! \brief The underlying session has been changed in some fashion */ + unsigned int changed; }; /*! |