summaryrefslogtreecommitdiff
path: root/include
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 12:20:02 -0500
commitf2985e310663b67ccc948515efeae500bdf94a0c (patch)
tree311acb73d162a6611503b0e859b4576f7b6426d8 /include
parent5ff46578aa20921cf3649809a9be9b7231acc507 (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.h1
-rw-r--r--include/asterisk/res_pjsip_session.h2
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;
};
/*!